운영체제

[운영체제 #3] Process Description and control

우당탕탕코딩일기 2023. 4. 24. 03:01

프로세스란?

 = > Background

 

 

PCB

Process Control Blocks

- process element 를 포함한다.

- OS 에 의해 만들어지고 관리된다.

- 멀티프로세스를 지원하는 핵심 툴이다.

 

(* CPU 가 n개면 running process 도 n개)

 

(* dispatch : 다중 프로그래밍 시스템에서 다음에 처리될 작업을 선택하여 실행시키는
것. 즉, 대기 열에서 기다리고 있는 프로세스를 선택하여 중앙 처리 장치
의 사용 권한을 부여하는 작업.)

 

PCB 의 역할 &  어떤 정보가 저장되는 지 : PCB 는 프로세스의 중요한 정보와 메모리 주소를 저장하여, 프로세스 상태 관리 및 문맥 전환에 사용된다. PID, 프로세스 상태, 프로세스 우선순위 등 프로세스 elements 들이 저장되어 있다.

 

Process states

 

Running : CPU를 잡고 인스트럭션(instruction)을 수행중인 상태

Ready : CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하는 상태)

Blocked (wait, sleep) :

 - CPU를 주어도 당장 instruction을 수행할 수 없는 상태

 - process 자신이 요청한 event(ex: I/O)가 즉시 만족되지 않아 이를 기다리는 상태

  ex) 디스크에서 file을 읽어와야 하는 경우

Suspended (stopped) :

 - 외부적인 이유로 프로세스의 수행이 정지된 상태

 - 프로세스는 통째로 디스크에 swap out 된다

 ex) 사용자가 프로그램을 일시 정지 시킨 경우,

      메모리에 너무 많은 프로세스가 올라와 있을 때(Medium-term Scheduler에 의해)

New : 프로세스가 생성 중인 상태 (보통 프로세스의 상태로 포함되지 않음)

Terminated : 수행이 끝난 상태 (보통 프로세스의 상태로 포함되지 않음)

 

※ Blocked 와 Suspended 의 차이

Running, Ready, Blocked 모두 CPU 관점에서의 상태 분류일 뿐 실제로 프로세스의 작업이 수행이 되고 있는 상태 (CPU에서 프로세스 수행중(Running), I/O에서 프로세스 수행중(Blocked)), 반면 Suspended 는 프로세스 수행 자체가 외부에 의해 정지된 상태

Blocked : Blocked 자신이 요청한 event가 만족되면 Ready

Suspended : 외부에서 resume 해주어야 Active

 

 

 

 

프로세스의 5가지 state 를 정의하시오. 이들 상태간의 상태전이 다이어그램을 제시하고 , 어떤 경우에 상태가 전이하는 지를 설명하시오 

running : CPU 를 잡고 인스트럭션을 실행 중인 상태

Ready : CPU 를 기다리는 상태

Blocked (wait, sleep) : CPU를 주어도 당장 instruction을 수행할 수 없는 상태 

Suspended (stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태 , 프로세스는 통째로 디스크에 swap out 된다 New : 프로세스가 생성 중인 상태 (보통 프로세스의 상태로 포함되지 않음)

Terminated : 수행이 끝난 상태 (보통 프로세스의 상태로 포함되지 않음)

 

 

 

 

실행의 모드

1. 유저 모드 : 덜 권한 주어짐, 유저 프로그램은 전형적으로 이 모드에서 실행됨

2. 시스템 모드 : 더 권한 주어짐, 컨트롤 모드 또는 커널 모드로 불림, OS 의 커널

 

 

Process Creation

1. 새로운 프로세스에 하나의 프로세스 식별자를 배정한다.

2. 그 프로세스를 위한 공간을 배정한다.

3. PCB를 초기화한다.

4. 적절한 링키지를 세팅한다

5. 자료구조를 생성 및 확장한다.

(* Termination 은 거꾸로 ) 

 

 

 

Interrupt 와 Trap

- Interrupt : 하드웨어적인 비동기적인 사건의 발생을 커널에게 알리는 방법

- Trap : 소프트웨어적인 동기적인 사건의 발생을 커널에게 알리는 방법

 

Unix 에서 PCB를 process table 과 user area 로 구성하고 있다. 2개의 구조로 분리한 이유?

: Array 구조로 되어있으면 찾는건 빠르지만 메모리 효율이 좋지 않고 Node 구조로 되어있으면 찾는 것이 오래걸리며 에러가 날 수 있지만, 확장성이 좋다. 그래서 이들 구조의 장점들만 모아 Process table(Array 구조) 에 user area(Node 구조)를 붙여 이용하게 된 것이다.

 

 

 

728x90