출처 : https://www.youtube.com/watch?v=jZuTw2tRT7w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=5
- 작업(Job) / 프로그램 (Program)
- 작업 : 우리가 만든 혹은 실행 할 프로그램과 데이터의 묶음
- 디스크에 저장만 되어있고, 컴퓨터 시스템에 실행 요청 전의 상태
- 프로세스(Process)
- 실행을 위해 시스템(커널)에 등록된 작업
- 시스템 성능 향상을 위해 커널에 의해 관리 됨
작업(Job)은 프로그램과 데이터의 묶음으로 존재하고 디스크에 저장되어있다. 이 작업을 실행하기 위해 시스템에게 요청 메시지를 전송한다. 이 작업이 시스템에 등록된 상태를 프로세스(Process)라고 한다.
즉, 디스크에 있는 프로그램은 작업, 시스템에 등록되서 메모리에 할당되면 프로세스이다.
프로세스의 정의
- 프로세스란 실행중인 프로그램이다.
- 커널에 등록되고 커널의 관리하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 프로세스 관리 블록(PCB)을 할당 받은 개체
- 능동적인 개체(active entity)
- 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
- Process Control Block(PCB)
- 커널 공간 (kernel space) 내에 존재
- 각 프로세스들에 대한 정보를 관리
자원(Resource)의 개념
- 커널의 관리 하에 프로세스에게 할당 / 반납 되는 수동적 개체(passive entity)
- 자원의 분류
- 하드웨어 리소스 (물리적으로 존재하는 자원)
- 프로세서, 메모리, 디스크, 모니터, 키보드 등
- 소프트웨어 리소스 (실체는 있지만 물리적으로는 존재하지 않는 자원)
- 메시지, 신호, 파일, 설치된 소프트웨어 등
- 하드웨어 리소스 (물리적으로 존재하는 자원)
Process Control Block(PCB)
- OS가 프로세스 관리에 필요한 정보를 저장하는 공간
- 프로세스 생성 시, 커널에 PCB가 생성 됨
PCB가 관리하는 정보
- PID(Process Identification Number)
- 프로세스 고유 식별 번호
- 스케줄링 정보
- 프로세스 우선순위 등과 같은 스케줄링 관련 정보
- 프로세스 상태
- 자원 할당, 요청 정보 등
- 메모리 관리 정보
- Page table, segment table 등
- 입출력 상태 정보
- 할당 받은 입출력 장치, 파일 등에 대한 정보 등
- 문맥 저장 영역(context save area)
- 프로세스의 레지스터 상태를 저장하는 공간 등
- 계정 정보
- 자원 사용 시간 등을 관리
- PCB 정보는 OS 별로 서로 다르다.
- PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나
프로세스 상태
프로세스는 시스템에 등록되면 여러가지 상태를 거치면서 작업을 수행한다. 여기서 상태는 자원 간의 상호작용을 통해 결정이 된다.
프로세스들이 시스템에 등록되면 위 그림과 같은 상태들을 거친다.
생성된 상태(Created State)
- 작업(Job)을 커널에 등록 = 프로세스가 생성된 상태
- PCB 할당 및 프로세스 생성
- 커널
- 가용 메모리 공간 체크 및 프로세스 상태 전이
- 가용 메모리 공간을 체크해서 공간이 있는지 없는지에 따라 Ready 혹은 Suspended ready 로 갈지를 결정
- 메모리가 있으면 Ready, 없으면 Suspended ready
- 가용 메모리 공간 체크 및 프로세스 상태 전이
Ready State
- Created State에서 가용 메모리가 할당이 가능하면 Ready State가 된다.
- 프로세서 외에 다른 모든 자원을 할당 받은 상태
- 프로세서 할당 대기 상태
- CPU만 있으면 즉시 실행 가능 상태
- Dispatch (or Schedule)
- Ready State -> Running State (CPU를 기다리고 있다가(Ready state) CPU를 할당받으면 Running State가 되는 것을 dispatch 혹은 schedule 되었다고 한다.)
Running State
- 프로세서와 필요한 자원을 모두 할당 받은 상태 = 실제로 작업을 실행하는 상태
- Running State를 벗어나는 경우는 2가지가 존재한다.
- preemption (프로세서를 뺏기고 ready 상태가 됨)
- Running State -> ready State
- 프로세서 스케줄링 (e.g, time-out, priority changes), 할당된 타임 슬롯이 끝나고 다음 시간을 기다림
- Block / Sleep
- Running State -> asleep state
- I/O 등 자원 할당 요청, 새로운 I/O가 필요해서 I/O가 들어올 때까지 잠자는 상태
- preemption (프로세서를 뺏기고 ready 상태가 됨)
Blocked / Asleep State
- 프로세서 외에 다른 자원을 기다리는 상태
- 자원 할당은 System Call에 의해 이루어 짐
- Wake-up
- Asleep state -> ready state
- asleep 상태에서 I/O가 들어오면 ready 상태가 되서 다음 CPU 할당을 기다린다.(다른 프로세스가 프로세서를 사용하고 있는데 갑자기 끼어들면 안되므로)
- 그리고 ready 상태에서 CPU를 할당받으면 Running 상태가 된다.
Job이 created 상태가 되면 프로세스가 생성이 되고, 메모리 할당을 받으면 ready 상태, CPU를 할당받으면 running 상태가 된다. running 상태에서 나에게 할당된 시간이 끝나면 다시 ready 상태가 되고, dispatch와 timer run-out를 반복하다가 I/O가 필요하면 asleep 상태가 된다. asleep 상태에서 데이터 혹은 I/O가 들어오면 ready 상태가 된다.
Suspended State
- 메모리를 할당 받지 못한(혹은 빼앗긴) 상태
- created 상태에서 메모리가 없으면 혹은 뺏기면 suspended ready, asleep 상태에서 메모리도 뺏기면 suspended blocked
- Memory image를 swap device에 보관
- swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템 (일종에 하드디스크)
- Memory image : 메모리 상태를 이미지로 찍어놓은 것. 메모리를 사용하다가 다른 프로세스에게 메모리를 빼앗기고 다음에 다시 메모리를 할당받았을 때, 내가 이전에 했던 작업들을 이어서 하기위해서(처음부터하면 너무 손해니까) 중단되었을 때의 메모리 상태를 이미지 형식으로 저장한 것
- 커널 또는 사용자에 의해 발생
- Memory image를 swap device에 보관
- Swap-out(suspended 메모리 뺏김), Swap-in(resume 메모리 할당받아서 복구)
Terminated / Zombie State(죽었는데(끝났는데) 아직 완전히 죽지 않은 상태여서 좀비)
- 프로세스 수행이 끝난 상태
- 모든 자원 반납 후, 바로 소멸되지 않고 Terminated 상태를 거침
- 커널 내에 일부 PCB 정보만 남아있는 상태
- 이후 프로세스 관리를 위해 정보 수집 (다음에 비슷한 작업이 들어왔을 때 수월하게 동작하기 위해)
- 커널이 PCB 정보 수집을 마치면 프로세스를 완전히 삭제하고 끝나게 됨
'Study > 운영체제' 카테고리의 다른 글
4. 스레드 관리 (0) | 2023.11.03 |
---|---|
3. 프로세스 관리 (2) (0) | 2023.11.03 |
2. 운영체제 개요 (3) (0) | 2023.11.02 |
2. 운영체제 개요 (2) (1) | 2023.11.01 |
2. 운영체제 개요 (1) (0) | 2023.10.31 |