2020. 10. 5. 22:04ㆍ운영체제/프로세스
작업과 프로세스
-
JOB(작업): 컴퓨터 시스템에 실행 요청 전의 상태
-
PROCESS(프로세스): 요청을 받은 후 시스템(커널)에 등록된 작업을 말한다. 따라서 프로세스는 시스템 성능향상을 목적으로 커널에 의해 관리된다.
-
자원: 커널의 관리하에 프로세스에게 할당/반납 되는 수동적 개체
PCB(Process Control Block)
프로세스 제어 블록(PCB, Process Control Block)은 프로세스 관리에 필요한 정보를 저장한 블록을 말하며, 프로세스가 생성될 때(프로그램 작업이 시스템 커널에 등록될 때) 생성되는 블록이다. 운영체제에 따라 다르지만 일반적으로 PCB는 다음과 같은 정보가 포함되어 있다.
-
프로세스 식별자
-
프로세스 상태: 준비, 실행, 대기, 완료, 유예준비, 유예대기
-
프로그램 카운터
-
CPU, 일반 레지스터
-
CPU 스케줄링 정보
-
메모리 관리 정보
-
프로세스 계정 정보
-
입출력 상태 정보
프로세스 상태(Process State)
1. 생성(Created State)
작업(JOB)이 커널에 등록된 상태를 말한다. 작업이 등록되자마자 PCB(Process Control Block)이 커널에 할당되는 동시에 프로세스가 생성된다. 쓸수 있는 메모리 공간이 있느냐에 따라 준비(Ready) 또는 유예준비(Suspended Ready)상태로 변환된다.
2. 준비(Ready State)
즉시 실행 가능 상태이자 CPU에 할당되기 까지 대기하는 상태이다. CPU가 하나라고 가정할 때, CPU에 다른 프로세스가 할당되어 이미 작업을 하고 있는 중이라면, 그 프로세스 실행을 완료하고 종료할 때까지 기다려야한다. 쉽게 말해서 다른 애가 먼저 수행되고 있기 때문에 차례를 기다린다고 생각하면 된다.
3. 실행(Running State)
작업을 실행하는 상태를 말한다.
4. 대기(Asleep State)
(1) Running ➡ Alseep
입 출력 등의 다른 자원이 할당될 때까지 기다리고 있는 상태를 말한다. 게임을 예로 들자. 게임을 할 때 우리는 게임을 먼저 킨다. 그리고 우리는 게임을 플레이 하기위해 필수로 아이디/비밀번호를 입력하여 로그인을 해야한다. 즉 로그인(이벤트)를 하지 않으면 게임을 더 이상 진행할 수 가 없다. CPU는 매우 빠른 속도를 자랑하는 장비다. 입 출력 이벤트를 요청할 때, 입 출력 자원이 언제 오는지 우리는 예상하기가 힘들다. 그 시간까지 CPU는 놀고 있는 상태가 될 것이다. CPU는 계속해서 일을 해주어야 한다. 따라서 준비 상태(Ready State)에서 다른 작업을 가져와서 입/출력 자원이 할당될 때 까지 수행한다.
(2) Alseep ➡ Ready
Alseep 상태에 있는 프로세스가 요청한 자원을 할당받으면, 프로세서에게 인터럽트 신호를 준다. 그러면 Asleep 상태에 있던 작업은 준비 상태로 돌아가게 되는데, 이러한 현상을 Wake up 이라고 한다.
5. 유예 준비(Suspended State)
유예 준비 상태는 메모리를 할당받지 못하여 CPU 점유권을 가져가지 못하는 작업(준비 상태로 가지 못함)을 스왑 디바이스(Swap Device, Secondary Device)에 저장한 상태를 말한다. 이 상태에 있는 작업이 필요해질 경우, 운영체제는 메모리를 복구 및 새로 할당하여 저장한 작업을 이어서 한다.
6. 유예 대기(Suspended State)
유예 대기 상태는 대기 상태(Asleep State)에 있는 작업이 일정 시간이 지나도 준비 상태(Ready State)로 못 돌아가서 스왑 디바이스(Swap Device)에 저장된 상태를 말한다. 이 역시 필요할 경우 Asleep 상태로 Swap-in하여 백업한 작업을 이어서 할 수 있다.
7. 종료 상태(Terminated State)
프로세스 수행이 끝난 상태를 말한다. 운영체제가 모든 자원을 반납 후, 비슷한 자원이 들어올 떄 참조할 수 있도록 일부 PCB 정보를 커널내에 남겨둔 상태를 말한다.
'운영체제 > 프로세스' 카테고리의 다른 글
프로세스 스케줄링 알고리즘, FCFS (0) | 2021.01.15 |
---|---|
프로세스 스케줄링의 목적, 기준, 단계, 방법 (0) | 2020.10.28 |
스레드 관리 (0) | 2020.10.07 |
인터럽트 (0) | 2020.10.06 |