안녕하세요? 허니입니다. 운영체제의 프로세스 생애주기(Process Life Cycle)에 대해 포스팅을 하려고 합니다. 프로세스 라이프사이클은 마치 한 사람의 삶의 모습과 닯아 있기 때문에 이해하기 쉬운 부분이 많습니다. 학생이나 연구원분들에게 많은 도움이 될 것이라고 생각하며 언제든지 질문은 환영입니다.

 


오늘의 주제


 Process Life Cycle

 


Process Life Cycle

 

프로세스 라이프 사이클은 한 사람의 삶의 모습과 닮아있다고 말하고 싶다. 한 사람으로 태어나 성인으로 자라 한 사람으로서 자신의 몫을 다하고 어떠한 삶의 역경에 부딪혀 잠시 주저 앉기도 하고 또다시 자신의 몫을 찾아 역할을 다하다 결국에는 인생을 마감하는, 그런 인간의 모습 말이다. 프로세스 라이프 사이클을 고안해낸 사람 역시 어떤 한 인간이었기에 그 모습이 서로 닮아있을 수밖에 없을 것이다. 프로세스로 생성되어 자신의 역할을 할 때까지 기다림을 갖고 자신의 몫을 할 순간에는 그 역할에 충실하고 또한 어떤 문제의 부딪혔을 때 잠시 자신의 자리를 내어주기도 한다. 그리고 자신의 자리를 되찾아 하나의 프로세스로서의 역할을 다하고 마감되는 그 모습을 이해하는데 우리는 별다른 어려움이 없을 것이다.

 

프로세스 라이프 사이클은 다음과 같은 5단계로 나뉜다.

1. 생성 - 디스크에서 메모리로 프로그램이 올라가 실행준비를 하는 상태

2. 준비 - 순서에 맞춰 처리를 기다리는 상태

3. 수행 - 작업이 처리되고 있는 상태

4. sleep(=blocked)- 프로세스가 잠시 어떠한 조건에 의해 작업이 이뤄질 수 없는 상태로 그 조건이 해결되기를 기다리는 상태

5. 종료

 

이 과정에서 주의해야 할 점은 준비상태의 프로세스와 sleep 상태의 프로세스는 각각의 list를 작성해야 한다. 준비리스트에 있는 프로세스들은 각각 우선순위가 주어져 가장 높은 우선 순위의 프로세스의 차례로 CPU를 차지하게 된다. 그러나 sleep 리스트는 순위가 없다. 왜냐하면 대기상태에서 벗어나는 것은 정해진 순위에 의해서가 아니라 대기상태로 머물러야 했던 그 어떤 조건들이 해결되면 다시 실행 상태로 돌아갈 수 있기 때문이다.

 

그림 15 프로세스 라이프 사이클

 

a. 생성과정에서 준비상태로의 이동과정에서는 프로세스가 처리되기 위한 메모리와 필요한 주변장치들이 체크된다.

b. 준비상태에서 수행상태로의 이동과정에서는 미리 정해진 알고리즘(FCFS, SJN 등은 이후 프로세스 관리에서 배우게 된다.)에 따라 프로세스가 선택 처리된다.

c. 수행상태에서 다시 준비상태로 가는 때는 현재 처리되고 있는 프로세스의 타임 퀀텀이 다 되었을 경우이다.

d. 수행상태에서 sleep상태로의 이동은 입력/출력 요청에 의해 이뤄진다. 하나의 프로세스가 수행상태에서 입력/출력이 요청되면 그 작업이 마쳐질 때까지 그 프로세스는 sleep상태로 잠시 이동되고 커널의 스케줄링 알고리즘에 따라 적절한 순위의 프로세스가 수행 상태로 이동되는 것이다.

e. sleep상태에서 준비상태로의 이동은 입력/출력이 끝났다는 신호에 의해 이루어진다.

f. 수행상태에서 종료상태로의 이동은 작업이 성공적으로 완료되었거나 혹은 에러가 발생하여 작업이 미리 종료되는 경우이다.

 


요점정리

 

 Process Life Cycle

1. 생성 - 디스크에서 메모리로 프로그램을 올리고 실행 준비를 하는 상태

2. 준비 - 순서에 맞춰 처리를 기다리는 상태

3. 수행 - 작업이 처리되고 있는 상태

4. sleep(=blocked) - 프로세스가 잠시 어떠한 조건에 의해 작업이 이뤄질 수 없는 상태로 그 조건이 해결되기를 기다리는 상태

5. 종료


목 차

 운영체제를 시작하는 분들을 위해

 운영체제의 역사와 구체적으로 어떤 일들을 수행하나요?

 운영체제의 목표와 역할이 미래에도 계속 증대될까요?

 운영체제를 이해하기 위해 필요한 기본 개념들은 무엇인가요?

 운영체제 프로세스 생애주기(Process Lifecycle)는 무엇인가요?

 운영체제 프로세스 관리(Process Management)는 어떻게 하나요?

 운영체제 프로세스(Process)의 처리 속도는 어떻게 높일까?

 운영체제 스레드(Thread)는 무엇인가요?

 운영체제 스케줄링 (Scheduling)은 어떻게 하나요?

 운영체제 스케줄링 알고리즘의 비교 기준이 있나요?

 운영체제 프로세스 동기화가 무엇인가요?

 운영체제에서 세마포어(Semaphore)란?

 운영체제 메모리 관리(Memory Management)는 어떻게 하나요?

 운영체제 메모리 분할 방법은 어떻게 하나요?

 운영체제 가상메모리(Virtual Memory)는 무엇인가요?

 운영체제 Page in/out, Swapping 등이 Page Table Entry와 어떤 관계인가요?

 운영체제 메모리 관련해서 알아야 할 개념은 어떤것이 있나요? (TLB, Locality, Working Set, Overlay)

 운영체제 Page replacement (페이지 대체) 알고리즘이란?

 운영체제 파일시스템(File System)은 어떻게 운영되나요?

 운영체제 파일시스템 내부구조는 어떻게 되나요?

 운영체제 디스크 공간 할당(Disk Space Allocation) 알고리즘과 효과적 알고리즘의 판단 기준은?

 운영체제 파일시스템에서 접근 시간, 디스크 스케줄링을 위한 알고리즘, I/O 시스템이란?

 리눅스 인터럽트 (Interrupt)에 대해 자세히 설명해 주세요.

 인텔 구조에서 운영체제 가상 메모리 (Virtual Memory)는?

 운영체제 아키텍처의 종류는 얼마나 있나요?


+ Recent posts