[운영체제-양희재 교수님]5강 운영체제 서비스
운영체제 서비스
- 운영체제가 제공하는 서비스
- 프로세스 관리
- 프로세스는 CPU 자원 분배를 담당
- 주기억장치 관리
- 메인 메모리를 프로그램에 분배
- 파일 관리
- 하드 디스크 내의 파일 관리
- 보조기억장치 관리
- 트랙과 섹터 관리
- 입출력 장치 관리
- 이외에도 네트워킹, 보호 등
- 프로세스 관리
프로세스 관리(Process management)
- 프로세스(process)
- 메모리에서 실행 중인 프로그램(program in execution)
- 주요 기능
- 프로세스 생성(creation) 및 소멸(deletion)
- 프로세스 활동 일시 중지(suspend) 및 활동 재개(resume)
- 프로세스 간 통신(interprocess communication: IPC)
- 프로세스 간 동기화(synchronization)
- 교착상태 처리(deadlock handling)
주기억장치 관리(Main memory management)
- 주요 기능
- 프로세스에 메모리 공간 할당(allocation)
- 메모리의 어느 부분을 어느 프로세스게 할당할지 결정
- 어떤 프로세스가 메모리의 어디에 할당되었는지 추적 및 감시
- 프로세스 종료 시 메모리 회수(deallocation)
- 메모리를 효과적으로 사용하기 위함
- 가상 메모리
- 물리적인 실제 메모리보다 더 큰 공간을 사용하기 위한 기술
- 프로세스에 메모리 공간 할당(allocation)
파일관리(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)
- 디스크의 헤드를 어떻게 움직여야 적게 움직이는가를 관리
- 빈 공간 관리(free space management)
입출력장치 관리(I/O device management)
- 주요 기능
- 장치 드라이브(Device drivers)
- OS와 하드웨어가 만나는 부분에 장치 드라이브 포진
- 출력 장치의 성능향상
- buffering(입출력장치에서 읽은 데이터를 메모리로 들고 오는 것), caching, spooling(메모리 대신 하드 디스크를 중간 매체로 사용하는 것)
- 장치 드라이브(Device drivers)
시스템 콜(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
- Process
시스템 콜 예제) 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
- AH에 3C(16진법)을 넣어라
- CPU 안의 CX 레지스터 안에 파일 속성(파일 소유자, 일반 파일인지 디렉토리인지, 만들어진 날짜 등) 할당
- DS 레지스터와 DX 레지스터가 파일 이름을 나타내도록 설정
예제) 메모리 100번지에 AAAAA라는 파일을 만들기
1 2 3 4
mov cs, 0 mov dx, 100 mov ah, 3C int 21
- mov cs, 0 ⇒ 속성을 0이라고 가정
- 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.