본문 바로가기
교육, 학습/CS스터디_반효경 운영체제

운영체제 - 프로세스 상태(Running, Ready, blocked), 프로세스가 running중 CPU를 반환하는 경우

by 개발하는 경제학도 2022. 1. 6.

강의 소개

현재 수강하고 있는 KOCW 내 이화여자대학교 운영체제(2017, 반효경) 강의의 내용을 정리하였습니다.

개발자 관점에서 운영체제 기초를 학습하는 무료 강의로 자세한 강의 내용은 수강을 추천드립니다.


 

프로세스

프로세스

프로세스는 실행 중인 프로그램이다.

 

**프로세스 문맥(context)

더보기

프로세스가 지금까지 실행되어 와서 현재 상태에 왔지만 과거부터 얼마나 CPU를 사용했는가 등으로 과거가 현재를 결정해준다.

시간에 따라 달라지는 것으로 특정 시점을 딱 잘라서 봤을 때, CPU를 얼마나 썼는지 또는 메모리를 얼마나 가지고 있는지, 함수를 어디까지 실행하는가 등을 나타낸다.

CPU 수행 상태를 나타내는 하드웨어 문맥

: Program Counter(CPU안에 Program Counter가 무슨 값을 가지고 있는지는 현재 어디를 실행하는지 보여준다)

, 각종 레지스터(현재 상태의 CPU에 레지스터에 어떤 값을 넣고 있었는가)

 

프로세스의 주소 공간

코드, 데이터, 스택

 

 

프로세스 관련 커널 자료 구조 2가지

1) PCB(Process Control Block)

현재 실행 중인 모든 프로세스 들을 운영체제가 관리하기 위한 커널 내부의 자료구조이다.

(운영체제는 PCB를 통해서 각 프로세스의 상태를 관리하고 있다.)

운영체제의 주소 공간 중 data영역에 각 프로세스마다 PCB를 가지고 있다.

PCB에는 CPU를 얼마나 썼는지, 메모리를 어떻게 썼는지 등을 종합적으로 가지고 있다.

 

PCB의 구성 요소

- OS가 관리상 사용하는 정보: 프로세스 상태(running, ready 등), Process ID, CPU에서 스케쥴링되기 위한 우선순위와 관련된 정보

- CPU수행 관련 하드웨어 값: Program counter, registers

- 메모리 관련: code, data, stack의 위치정보

- 파일 관련: Open file descriptors

 

2) 커널 스택

커널을 쓸 때는 프로세스마다 별도의 커널 스택을 쓴다.

프로세스의 커널 스택에 어떤 내용이 들어있는지는 프로세스의 현재 상태를 나타낸다.

 

 

프로세스의 상태

1) Running 상태

CPU를 쓰고 있는 상태이다.

CPU는 1개만 존재하기 때문에 CPU에서 기계어를 사용하고 있는(=Running) 프로세스도 항상 1개이다.

- 프로세스가 running(CPU 사용 중)이다가 CPU를 반환하는 3가지 경우

timer interrupt가 걸린(= 할당 시간 만료) 경우

, 기계어로 작업 중 오래 걸리는 작업을 수행해야 해서 blocked상태로 바뀌게 된 경우

(이후, 오래 걸리는 작업이 끝나게 되면 인터럽트를 보내고 ready 상태가 된다)

, terminated(본인의 일을 다해서 종료 상태가 되는 경우)

 

2) Ready 상태

모든 준비가 끝났고 CPU를 기다리는 프로세스들이 가지는 상태이다.

ready 상태에서는 프로세스가 메모리에 존재한다.

 

3) Blocked(wait, sleep) 상태

당장 CPU를 줘도 바로 기계어를 실행하기 불가한 상태로 여러 가지 이유가 있다.

디스크를 읽는 등 오래 걸리는 작업이 있어 그 작업이 끝날 때까지 CPU를 줘도 기계어 실행이 불가능한 상태이다.

 

4) 기타

new 상태

프로세스가 생성중인 상태이다. 아직 준비 중인 상태이다.

 

terminated 상태

프로세스가 완전히 종료되면 이미 프로세스(= 현재 실행 중인 프로그램)가 아닌 것이다. 따라서 종료 중인 상태가 terminated이다.

 

 

출처: 운영체제와 정보기술의 원리(반효경 )

댓글