티스토리 뷰

OS

5장. 프로세스 관리

seoyoung02 2023. 2. 18. 09:12

※ 반효경 교수님의 운영체제와 정보기술의  원리를 기반으로 작성하였습니다.

 

프로세스(Process)

프로세스란 실행 중인 프로그램을 말한다. 실행에 대해서는 4장에서도 살펴보았는데 크게 메모리 할당, CPU할당 두 조건을 만족하는 것을 의미한다. 따라서 프로세스는 메모리에 올라가 CPU를 획득해 자신의 코드를 수행하기도 하고, CPU를 반환하고 입출력 작업을 수행하기도 한다. 그러다가 자신의 임무를 다 수행하고 나면 종료되어 사라진다.

 

문맥(Context)

문맥이란 프로세스의 현재 상태를 명확히 나타내기위한 정보이다. 여러 프로세스를 함께 수행하는 시분할 시스템 환경에서 CPU는 여러 프로세스에게 돌아가면서 할당되었다가 빼앗기기를 반복한다. 이 과정에서 CPU를 빼앗긴 후 다시 CPU를 획득해 실행될 때 이전 수행시점의 상태를 정확하게 재현해야하고, 이때 프로세스 문맥을 사용하게 된다.

문맥의 구성요소

- 하드웨어 문맥: CPU의 수행 상태를 나타내는 것으로 프로그램 카운터(PC)값과 각종 레지스터에 저장하고 있는 값 의미

- 프로세스 주소 공간: 4장에서 설명함

- 프로세스 관리를 위한 자료구조: 커널의 주소 공간에 존재하는 PCB와 커널 스택(kernal stack)

이 중에서도 PCB에 대해 조금 더 자세히 알아보자.

PCB(Process Control Block)

프로세스 제어블록이란 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담은 커널 내의 자료구조를 의미한다. PCB는 다음과 같은 구성요소를 가진다.

  • OS 관리상 사용하는 정보
    • 프로세스의 상태(process state): CPU 할당 가능 여부 결정에 필요
    • 프로세스 번호(ID)
    • CPU 스케줄링 정보(CPU scheduling information): 
  • CPU 수행 관련 하드웨어 값
    • 프로그램 카운터(program counter): 다음에 수행할 명령의 위치 가리킴
    • CPU 레지스터(CPU register)의 값: CPU연산을 위해 현 시점에 레지스터에 가지고 있는 값
  • 메모리 관련
    • 메모리 관리 정보(memory management information): 메모리 할당 위한 코드, 데이터, 스택의 위치 정보
  • 파일 관련
    • 프로세스가 오픈한 파일 정보
  • 자원 사용 정보(accounting information)
  • 입출력 상태 정보(I/O status information)

프로세스 상태(process state)

출처. https://real-dongsoo7.tistory.com/94

크게 세 가지 상태로 나누어 볼 수 있다.

- 실행(running): 프로세스가 CPU를 보유하여 실행중인 상태

- 준비(ready): CPU만 할당받으면 바로 실행 가능한 상태. 메모리와 같은 다른 부분은 모두 준비

- 봉쇄(blocked, wait, sleep): CPU를 할당 받더라도 실행할 수 없는 상태.

프로세스는 항상 이 세 가지 중 하나의 상태를 가지게 되며, 흐름에 따라 변하게 된다. 

 

문맥 교환(context switch)

문맥 교환이랑 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정을 의미한다. CPU를 할당받고 실행 → 타이머 인터텁트 발생 → CPU 제어권이 운영체제로 넘어감 → 운영체제가 인터럽트 처리루틴 수행 (실행중이던 프로세스의 문맥 저장(자신의 PCB에 저장) 및 준비 상태로 변환 → 새롭게 실행시킬 프로세스에 CPU 할당 → 새로운 프로세스의 저장해두었던 문맥을 PCB에서 실제 하드웨어로 복원)과 같은 과정을 거친다. 주로 타이머 인터럽트가 발생하거나 입출력 요청 시스템 콜을 하여 봉쇄상태에 들어가는 경우 문맥 교환이 일어난다. 

프로세스 실행 중에 그 외에 다른 시스템 콜이나 인터럽트가 발생하면 CPU의 제어권이 운영체제로 넘어와 커널의 코드가 실행된다. 이 경우에는 문맥교환이 일어나지 않는다. CPU의 실행위치와 같은 프로세스 문맥의 일부가 PCB에 저장되기는 하지만 이를 문맥교환이라고 보지 않는다.  

 

프로세스 스케줄링을 위한 queue

- 준비 큐(ready queue): 준비 상태에 있는 프로세스들을 줄세워 제일 앞에 있는 프로세스에 제일 먼저 CPU할당. 스케줄링 방법에 대한 것은 6장에서.

- 장치 큐(device queue): 프로세스를 줄 세우듯 특정 자원을 기다리는 프로세스들을 줄 세우기 위해 자원별로 존재

+) 공유 데이터 큐: 어떤 프로세스가 공유 데이터를 사용하고 있을 때 다른 프로세스가 접근해 공유 데이터의 상태가 바뀌는 것을 막기 위해 공유 데이터 큐에 줄을 세워 관리

- 작업 큐(job queue): 현재 시스템 내에 있는 모든 프로세스 줄 세움. 준비 큐, 장치 큐의 프로세스가 모두 포함된다. 작업 큐가 가장 넓은 개념

 

큐의 자료구조

이러한 큐의 자료구조는 연결 리스트형태로 되어있다. 각 준비, 혹은 장치 큐마다 큐헤더(queue header)가 존재하고 여기에 PCB를 연결하여 연결 리스트 형태로 관리하고, 포인터를 사용해 순서를 정한다.

 

스케줄러(scheduler)

어떤 프로세스에 자원을 할당할지 결정하는 운영체제 커널의 코드

단기 장기 중기
CPU 스케줄러 작업 스케줄러(job scheduler) swapper
어떤 프로세스를 다음번에 실행 상태로 만들 것인지 결정 어떤 프로세스를 준비 큐에 진입시킬지 결정 메모리에 올라와 있는 프로세스 중 일부를 선정해 메모리를 통채로 빼앗아 스왑 영역에 저장(=swap out)
CPU를 할당하는 문제에 관여 메모리에 동시에 올라가 있는 프로세스의 수(degree of multiprogramming) 관리 메모리에 동시에 올라가 있는 프로세스의 수 동적으로 관리
밀리초 단위로 매우 빈번하게 호출. 수행 속도가 충분히 빨라야 수 분단위로 호출, 상대적으로 느림 허용  
  현대 시분할 시스템에서는 장기 스케줄러 두지 않는 경우가 대부분. 자원이 좋아지면서 장기 스케줄러 없이 바로 메모리 할당 외부적인 이유로 프로세스의 수행이 정지된 상태에 있는 중지(suspended, stopped)상태 추가

중지 상태 포함한 프로세스 상태 변화도

 

'OS' 카테고리의 다른 글

4장. 프로그램 구조와 실행  (0) 2023.01.27
3장. 컴퓨터 시스템의 동작 원리  (1) 2023.01.15
동기식과 비동기식 입출력  (0) 2023.01.08
2장. 운영체제 개요  (0) 2023.01.05
댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함