[운영체제 기초]7. 프로세스 관리
프로세스 관리
학습목표
- OS가 프로세스를 관리하는 방법에 대해 설명할 수 있다.
1. 프로세스란?
프로세스는 메인메모리에서 실행중인 프로그램(program in execution)이다. Task, Job 이라고도 불린다.
2. 프로세스의 생성과 종료
프로세스의 생성
프로세스는 프로세스에 의해 만들어진다.
OS가 메인메모리에 적재되면 가장 먼저 init이라는 프로세스를 생성하고, init은 여러 프로세스를 생성한다.
프로세스들은 다시 자식 프로세스를 생성하는 식으로 확장하게 되면서 프로세스 트리를 그리게 된다.
프로세스는 자기 자신과 부모 프로세스를 식별할 수 있는 고유한값을 가지고 있는데 각각 PID(Process Identifier), PPID(Parent Process Identifier)라고 한다.
프로세스의 생성은 시스템콜 fork(), exec()에 의해 이루어진다.
fork()는 부모 프로세스를 복사하고, exec()은 생성된 프로세스에 프로그램을 불러온다.
프로세스의 종료
프로세스가 종료되면 사용중이던 메모리, 파일, 입출력장치 등의 자원들을 OS에 반납한다.
시스템콜 exit()을 통해 프로세스를 종료할 수 있다.
3. 프로세스의 상태
- NEW : 프로그램이 메인메모리로 올라온 상태.
- READY : 메인메모리로 올라온 다음 초기화와 실행준비를 마친 상태.
- RUNNING : CPU에 의해 실행중인 상태. 할당된 CPU사용시간에 도달하면 READY로 돌아가게 된다.
- WAITING : I/O를 처리하느라 CPU의 계산이 필요 없어서 대기중인 상태. I/O가 끝나면 READY로 돌아간다.
- TERMINATED : 모든 실행을 마친 상태.
4. PCB(Process Control Block)
TCB(Task Control Block) 라고도 한다.
PCB는 각각의 프로세스에 대한 주요 정보를 저장하기 위한 일종의 자료구조이다.
PCB는 OS의 프로세스 관리 서비스에 저장된다.
- 프로세스의 상태
- PC, 레지스터 등
- MMU정보
- CPU사용시간(CPU Time)
- PID
5. 프로세스 대기열과 스케쥴러의 종류(Queues and Schedulers)
Job Queue
디스크의 프로그램이 메인메모리에 적재되기 위해 대기하는 줄이다.
Job scheduler에서 관리한다.
Job scheduler는 Long-term scheduler라고 부르기도 하는데, 메모리가 가득 찬 경우 하나의 프로세스가 종료되어 빈자리가 생겨야 동작하기 때문이다.
이 주기는 CPU가 프로세스를 Switch하는 주기에 비하면 엄청나게 긴 시간이다.Ready Queue
CPU를 사용하려는(서비스를 받으려는) 프로세스들이 대기하는 줄이다.
CPU scheduler에서 관리한다.
CPU scheduler는 Short-term scheduler라고 부르기도 한다.
CPU Switch는 1초에도 수십번씩 발생하기 때문에 Scheduler의 활동 주기가 짧아서 붙여진 이름이다.Device Queue
장치를 사용하려는 프로세스들이 대기하는 줄이다.
각 장치별로 대기열이 존재하지만 통칭해서 Device Queue라고 한다.
Device scheduler에서 관리한다.
정확하게는 프로세스 PCB들의 대기열이다.
6. 다중 프로그래밍(Multiprogramming)
메모리에 여러개의 프로세스를 적재하는 시스템이다.
다음과 같은 개념이 존재한다.
Degree of multiprogramming
메인메모리에 프로세스를 얼마나 적재할 수 있는지에 대한 정도를 의미한다.I/O-bound process
주요 처리작업이 I/O인 프로세스.
e.g.) 워드프로세서CPU-bound process
주요 처리작업이 CPU의 계산인 프로세스.
e.g.) 기상청 일기예보Job scheduler는 메인메모리의 프로세스 구성이 I/O나 CPU 한쪽에 치우치지 않도록, 프로세스를 적절히 섞어서 올리는 역할도 담당한다.
Medium-term scheduler
메모리를 탐색하면서 장기간 사용되지 않는 프로세스를 메모리에서 제거한다(Swap out).
그리고 해당 프로세스 이미지를 통째로 디스크에 옮긴다. 이 때 사용되는 디스크는 Swap device 또는 Backing device라고 한다.
프로세스가 다시 사용중인 상태로 전환되면 프로세스를 디스크에서 메모리로 이동시킨다(Swap in).Context switch
문맥 전환이라는 의미이지만 여기서는 프로세스의 전환을 의미한다.
프로세스를 전환하기 위해 수반되는 작업은 다음과 같다.
- PCB에 현재 프로세스의 정보를 저장한다.
- 다음 프로세스의 정보를 PCB에서 불러와 복원한다.
Dispatcher
실제로 Context switch를 수행하는 개체이다.
Context switching overhead를 최소화하기위해 어셈블리로 작성된다.Context switching overhead
프로세스 전환을 위해 발생하는 비용이라고 볼 수 있으며, PCB에 데이터를 저장하고 불러오는 과정이 이에 해당한다.
Reference
- 양희재 교수님의 운영체제 강의
https://youtu.be/QwBe0iYZBEg
'Computer Science > Operating System' 카테고리의 다른 글
[운영체제 기초] 9. 쓰레드와 프로세스 동기화 (0) | 2022.06.08 |
---|---|
[운영체제 기초]8. CPU 스케쥴링 (0) | 2021.02.09 |
[운영체제 기초]6. 운영체제 서비스 (0) | 2021.01.19 |
[운영체제 기초]5. 이중모드와 하드웨어 보호 (0) | 2021.01.17 |
[운영체제 기초]4. 인터럽트 기반 시스템 (0) | 2021.01.15 |
댓글
이 글 공유하기
다른 글
-
[운영체제 기초] 9. 쓰레드와 프로세스 동기화
[운영체제 기초] 9. 쓰레드와 프로세스 동기화
2022.06.08 -
[운영체제 기초]8. CPU 스케쥴링
[운영체제 기초]8. CPU 스케쥴링
2021.02.09 -
[운영체제 기초]6. 운영체제 서비스
[운영체제 기초]6. 운영체제 서비스
2021.01.19 -
[운영체제 기초]5. 이중모드와 하드웨어 보호
[운영체제 기초]5. 이중모드와 하드웨어 보호
2021.01.17