Post

[운영체제-양희재 교수님]5강 운영체제 서비스

경성대학교 양희재 교수님의 운영체제 5강

운영체제 서비스

  • 운영체제가 제공하는 서비스
    • 프로세스 관리
      • 프로세스는 CPU 자원 분배를 담당
    • 주기억장치 관리
      • 메인 메모리를 프로그램에 분배
    • 파일 관리
      • 하드 디스크 내의 파일 관리
    • 보조기억장치 관리
      • 트랙과 섹터 관리
    • 입출력 장치 관리
    • 이외에도 네트워킹, 보호 등

프로세스 관리(Process management)

  • 프로세스(process)
    • 메모리에서 실행 중인 프로그램(program in execution)
  • 주요 기능
    • 프로세스 생성(creation) 및 소멸(deletion)
    • 프로세스 활동 일시 중지(suspend) 및 활동 재개(resume)
    • 프로세스 간 통신(interprocess communication: IPC)
    • 프로세스 간 동기화(synchronization)
    • 교착상태 처리(deadlock handling)

주기억장치 관리(Main memory management)

  • 주요 기능
    • 프로세스에 메모리 공간 할당(allocation)
      • 메모리의 어느 부분을 어느 프로세스게 할당할지 결정
      • 어떤 프로세스가 메모리의 어디에 할당되었는지 추적 및 감시
    • 프로세스 종료 시 메모리 회수(deallocation)
      • 메모리를 효과적으로 사용하기 위함
    • 가상 메모리
      • 물리적인 실제 메모리보다 더 큰 공간을 사용하기 위한 기술

파일관리(File management)

  • 디스크를 파일이라는 논리적 요소로 관리
    • 디스크 = 자성 물질을 바른 판 위에 만든 트랙 + 섹터
  • 주요 기능
    • 파일 생성(creation) 및 삭제(deletion)
    • 디렉토리(directory) 생성 및 삭제
    • 파일 기본 동작
      • open, close, read, write, create, delete
    • 디스크의 track/sector–file 간 매핑(mapping)
    • 중요한 파일 백업(backup) 및 복원

보조기억장치관리(Secondary storage management)

  • 보조기억장치
    • 하드 디스크, 플래시 메모리 등
  • 주요 기능
    • 빈 공간 관리(free space management)
      • 처음 block(sector의 묶음)은 비어있는 공간이며 점차 사용되는데 이때 어디가 비어있고 어디가 사용되고 있는지를 관리
    • 저장공간 할당(storage allocation)
      • 파일에 대해 몇 개의 block이 필요한지, 어느 block을 할당할 지 관리
    • 디스크 스케줄링(disk scheduling)
      • 디스크의 헤드를 어떻게 움직여야 적게 움직이는가를 관리

입출력장치 관리(I/O device management)

  • 주요 기능
    • 장치 드라이브(Device drivers)
      • OS와 하드웨어가 만나는 부분에 장치 드라이브 포진
    • 출력 장치의 성능향상
      • buffering(입출력장치에서 읽은 데이터를 메모리로 들고 오는 것), caching, spooling(메모리 대신 하드 디스크를 중간 매체로 사용하는 것)

시스템 콜(System calls)

  • 운영체제가 제공하는 서비스를 받기 위해 프로세스(메모리에 올라간 프로그램)가 하는 호출
  • 주요 시스템 콜
    • Process
      • end(프로세스 종료), abort(프로세스 강제 종료), load(하드 디스크의 프로그램을 메인 메모리로 가져오기), execute(실행), create(프로세스 생성), terminate(프로세스 종료, end와 같음), get/set attributes(프로세스의 속성 설정), wait event, signal event
    • Memory
      • allocate(새로운 메모리 할당), free(사용이 끝난 메모리 되돌리기)
    • File
      • create, delete, open, close, read, write, get/set attributes
    • Device
      • request, release, read, write, get/set attributes, attach/detach devices
    • Information
      • get/set time, get/set system data
    • Communication
      • socket, send, receive

시스템 콜 예제) MS-DOS

  • 80년대 PC에서 사용되던 OS
  • MS-DOS에서 파일을 만들기 위한 시스템 콜
    • INT 21H(인터럽트 번호 21번)을 사용
    • 시스템 콜은 일반적으로 어셈블리어를 사용하며, 특정 레지스터에 특정 값을 준 다음 소프트웨어 인터럽트를 걸어 OS의 서비스를 받을 수 있다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
        AH = 3Ch - "CREAT" - CREATE OR TRUNCATE FILE
              
        Entry:
              
        CX = file attributes
        DS:DX -> ASCIZ filename
        Return:
              
        CF clear if successful, AX = file handle
        CF set on error AX = error code (03h,04h,05h)
        Notes: if a file with the given name exists, it is truncated to zero length
              
        SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh
      
    1. AH에 3C(16진법)을 넣어라
    2. CPU 안의 CX 레지스터 안에 파일 속성(파일 소유자, 일반 파일인지 디렉토리인지, 만들어진 날짜 등) 할당
    3. DS 레지스터와 DX 레지스터가 파일 이름을 나타내도록 설정
  • 예제) 메모리 100번지에 AAAAA라는 파일을 만들기

    1
    2
    3
    4
    
      mov cs, 0
      mov dx, 100
      mov ah, 3C
      int 21
    
    1. mov cs, 0 ⇒ 속성을 0이라고 가정
    2. mov dx, 100 ⇒ DS는 일반적으로 설정되어 있음

시스템 콜 예제) Linux

  • Linux에서 파일을 만들기 위한 시스템 콜
    • INT 80H(인터럽트 80) 사용
    1
    2
    3
    
      EAX = 8
      ECX = file attributes
      EBX = file name
    
    1
    2
    3
    4
    
      mov eax, 8
      mov ecx, 0
      mov ebx, 메모리 주소
      int 80h
    
  • 사용자는 직접 하드 디스크에 어떻게 파일을 넣을지 고민할 필요가 없다. OS의 서비스를 이용하면 된다.
This post is licensed under CC BY 4.0 by the author.