마의 3일차를 지나 .. 4일차 입니다요
하지만 운영체제.. 하면 할 수록 넘나리 어려운 것
심지어 한 번 들었던 내용인데도 왤케 새롭쥬 ????????????? ㅠ
그리고 용어들은 너무 생소하고 ..
하루 빨리 용어와 친해지고 싶슴다 ~!
고럼 오늘은 프로세스 관리에 대해 정리해보겠심다
1. 프로세스란 무엇인가
어떤 것을 실행하는 실행의 주체

1) Job VS Process
-
작업(Job) == 프로그램 (Program)
- 실행할
프로그램 + 데이터
- 컴퓨터 시스템에 실행 요청 전의 상태
- 실행할
-
프로세스(Process)
- 실행을 위해 시스템(커널)에 등록된 작업
- 시스템 성능 향상을 위해 커널에 의해 관리됨

- 아직 디스크에 있는 것은
Job(=program)
이고, 이를 적재하여 메모리에서 할당되었을 때Process
라고 부름

2) 프로세스의 정의
커널에 등록된 Job(=Program)
-
실행중인 프로그램
- 커널에 등록되고 커널의 관리하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
프로세스 관리 블록
(PCB)을 할당 받은 개체- 능동적인 개체 (active entity)
- 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
-
Process Control Block(PCB)
- 커널 공간(kernel space)내에 존대
- 각 프로세스들에 대한 정보를 관리

- 시스템 프로세스 ; 시스템이 쓰는 것
- 사용자 프로세스 : 사용자가 쓰는 것
- 독립 프로세스 : 독립적인 것
- 협력 프로세스 : 다른 프로세스와 영향을 주고받음
2. 자원의 개념
커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity)
1) 자원의 분류
- H/W resources
- Processor, memory, disk, monitor, keyboard, Etc...
- S/W resources
- Message, signal, files, installed SWs, Etc ...
3. Process Control Block(PCB)
OS가 프로세스 관리에 필요한 정보를 저장하는 공간
- 프로세스가 생성되었다는 것 == Kernel에 PCB가 생성되었다는 것

- Memory영역에는 Kernel이 쓰는 영역과, 프로세스들이 쓰는 영역이 있음
- 그 중 PCB는 Kernel이 쓰는 영역에 저장됨
1) PCB가 관리하는 정보
- PID : Process Identification Number
- 프로세스 고유 식별 번호 (프로세스마다 부여된 고유 번호)
- 스케줄링 정보
- 프로세스 우선 순위 등과 같은 스케줄링 관련 정보들
- 프로세스 상태
- 자원 할당, 요청 정보 등 (어떤 자원을 가지고 있는지, 어떤 자원을 요청했는지와 같은 상태 정보)
- 메모리 관리 정보
- Page table, segment table 등 (어떤 메모리에 할당 받았는지에 대한 정보)
- 입출력 상태 정보
- 할당 받은 입출력 장치, 파일 등에 대한 정보 등
- 문맥 저장 영역(context save area)
- 프로세스의 레지스터 상태를 저장하는 공간 등
- 계정 정보 (다중 사용자 시스템의 경우 이 프로세스가 누구의 프로세스인지 알아야하기 때문에 계정 정보를 지니고 있는 것)
- 자원 사용 시간 등을 관리
(1) 특징
- PCB 정보는 OS 별로 서로 다름
- PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나
4. 프로세스의 상태(Process States)
프로세스 : 자원 간의 상호작용에 의해 결정
프로세스 상태 및 특성

Process State Transition Diagram

1) Created State
생성된 상태
-
작업(Job)이 커널에 등록되어 PCB할당 및 프로세스 생성된 상태
-
커널
-
가용 메모리 공간 체크 및 프로세스 상태 전이
- Ready or Suspended ready
-
-
ready와 Suspended ready로 나눠지는 기준은
가용 메모리 공간의 유무
임- 가용 메모리 공간이 존재하는 경우 -> ready로 감
- 가용 메모리 공간이 존재하지 않는 경우 -> suspended ready로 감

2) Ready State
프로세서 외에 다른 모든 자원을 할당 받은 상태
- 프로세서 할당 대기 상태
- 즉시 실행 가능 상태
- Dispatch (or Schedule)
- Ready state -> running state
- Ready state -> running state
- 프로세서는 CPU라고 생각하면 됨
- 현재 프로세스가 메모리 할당 된 상태이기 때문에 CPU만 할당 받으면 즉시 실행이 가능함
- 프로세서를 할당 받는 것은 dispatch라고 함

3) Running State
프로세서와 필요한 자원을 모두 할당 받은 상태
즉 dispatch이후 running이 된 상태
작업을 열심히 하고 있는 상태
Running State에서는 두 가지 상태로 넘어갈 수 있음
- ready state
- asleep state
(1) Preemptino
프로세서를 뺏겨서 쫓겨나는 것
- Running state -> ready states
- 프로세서 스케줄링 (e.g, time-out, priority changes)에 의해 ready state가 되는 상태
(2) Blcok/sleep
자원이 부족한 경우
- Running state -> asleep state
- I/O등 자원 할당 요청

3) Block/Asleep State
프로세서 외에 다른 자원을 기다리는 상태
- 자원 할당은 System call에 의해 이루어짐
- Wake-up
- I/O가 되었다면 -> running state로 가기 위해 ready state로 감
- Asleep state -> ready state

4) Suspended State
메모리를 할당 받지 못한(빼앗긴 상태)
-
Memory image(메모리의 상태를 사진으로 찍은 것을 memory image라고 함)를 swap device에 보관
- Swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템(일종의 하드디스크라고 생각하면 됨)
-
커널 또는 사용자에 의해 발생
-
Swap-out(suspended: 메모리를 뺏겼을 때 memory image를 swap device에 보관), Swap-in(resume: Swap device에 있던 memory image를 다시 넣는 것)

- suspended ready : 메모리가 없어서 ready state가 된 상태
- suspended blocked : I/O하려고 blocked되었는데 메모리 공간도 뺏긴 상태
5) Terminated/Zombie State
프로세스 수행이 끝난 상태
모든 자원 반납후, 커널 내에 일부 PCB 정보만 남아 있는 상태
- 이후 프로세스 관리를 위해 정보 수집

리마인드를 해볼까욧~!

5. 프로세스 관리를 위한 자료구조

- 프로세서들이 줄 서 있는 공간 : ready list
- asleep 상태 : sleep된 상태의 다른 자원들 -> 자원에 따라 각각 큐가 존재
'CS > OS' 카테고리의 다른 글
4. 스레드 관리 (0) | 2021.05.09 |
---|---|
3. 프로세스 관리(2) (0) | 2021.05.09 |
2. 운영체제 개요(3) - 운영체제의 구조, 기능 (0) | 2021.03.14 |
2. 운영체제 개요(2) - 운영체제의 구분 (0) | 2021.03.11 |
2. 운영체제 개요(1) - 운영체제, 컴퓨터 시스템의 구성 (0) | 2021.03.11 |