본문 바로가기
5학기/운영체제

Ch 03. 프로세스와 스레드

by sshnnne 2023. 4. 20.

3.1 프로세스란 무엇일까?

프로세스

: 수행 중인 프로그램

: 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재

 

3.1.1 프로세스 제어 블록 (Process Control Block, PCB)

하나의 프로세스가 만들어져 없어질 때까지 시스템에 테이블 모양의 자료구조로 존재. 기본적으로 메모리에 저장시킴

 

PCB 구성 요소

- 프로세스 번호

- 프로세스의 상태

- 프로세스 우선순위

- 프로그램 카운터 값

- 메모리 포인터

- 문맥 데이터

- 할당받은 자원들에 대한 목록

- 계정 정보

- 입출력 정보

 

3.1.2 프로세스 상태와 변화

1) 생성 상태 

: 사용자가 요청한 작업이 커널에 등록되고 PCB가 만들어져 프로세스가 만들어진 다음 준비 or 보류 준비 상태로 되기 위해 잠시 거치는 상태

 

2) 준비 상태

: CPU를 할당받기 위해 기다리고 있는 상태. CPU만 주어지면 바로 실행 가능. (=CPU 스케줄링)

 

3) 실행 상태

: CPU를 할당받아 실행 중인 상태. CPU를 할당하는 것 = 디스패치

 

단일 CPU 시스템 : 한 개의 프로세스만이 CPU 사용 가능 = 한 프로세스만이 실행 상태

여러 개의 CPU : 동시에 여러 개의 프로세스가 실행 상태에 있을 수 있다 = 다중처리

 

CPU 스케줄링에 의해 CPU를 뺏길 수 있음 -> 준비 상태로 바뀜

시간 종료 (Time out) : 시간 할당량이 소진되어 뺏길 때. 인터럽트가 동원되어 처리될 것이다.

 

4) 대기 상태

: 프로세스가 실행되다가 입출력 처리를 요청하거나, 바로 확보될 수 없는 자원을 요청할 경우 CPU를 양도하고 요청한 일이 완료되기를 기다리면서 대기하는 상태.

대기 상태의 프로세스들의 관리를 위해 큐 또는 리스트가 사용된다.

요청한 일이 완료되면 준비 상태로 바뀌면서 준비 큐에 들어감

 

5) 종료 상태

: 프로세스가 종료될 때 아주 잠시 거치는 상태.

할당되었던 모든 자원들이 회수되고 PCB만 커널에 남아있는 상태.

 

3.2 스레드란?

큰 틀 : 프로세스

세분된 작은 일 : 스레드

 

다중 스레딩 : 하나의 프로세스를 다수의 스레드로 만들어 실행하는 것. 하나의 프로세스 내 다수의 실행 단위들이 존재하여 작업의 수행에 필요한 자원들을 공유하기 때문에 자원의 생성과 관리가 중복되는 것을 줄일 수 있다.

 

3.2.1 스레드에 대해 조금 더.

스레드를 만들고 없애며, 스레드 간 스위칭에 소요되는 시간과 비용이 프로세스 단위로 이루어질 때보다 빠르고 저렴하다.

한 프로세스 내 스레드 간 통신은 메모리와 파일을 공유하기 때문에 커널의 개입이 필요하지 않다.

 

3.2.2 스레드의 상태와 동기화

보류 : 프로세스 레벨의 개념

한 프로세스 내 스레드들은 그 프로세스의 주소 공간과 자원들을 공유한다 -> 특정 스레드가 변경시킨 내용이 다른 스레드에 바로 영향을 미친다. -> 스래드 실행의 동기화가 요구됨

 

3.2.3 스레드의 종류

1. 사용자 레벨 스레드

장점 : 스레드 라이브러리에 의해 관리됨. 스레드와 관련된 모든 행위는 사용자 공간에서 이루어짐 -> 커널이 스레드의 존재를 알지 못함. 스레드의 행위를 프로세스의 행위로 인식한다.

스레드 스위칭에 커널의 개입이 필요 없음. (=두 번의 모드 스위칭이 필요 없음)

 

단점 : 특정 스레드의 대기가 프로세스 내의 모든 스레드들의 대기를 초래함. 

CPU가 프로세스 단위로 할당되기 때문에 스레드 단위의 다중처리가 되지 못한다

 

2. 커널 레벨 스레드

모든 스레드의 관리를 커널이 하는 경우를 말한다. 다중처리의 환경일 경우 각각 처리기를 할당 받아 병렬 실행이 가능. 한 스레드의 대기 시 같은 프로세스에 속한 다른 스레드로 스위칭이 가능. (그러나 모드 스위칭이 요구됨)

 

 

 

'5학기 > 운영체제' 카테고리의 다른 글

Ch 05. 병행 프로세스와 동기화  (0) 2023.04.20
Ch 04. CPU 스케줄링  (0) 2023.04.20
Ch02. 들어가기 전에  (1) 2023.03.17
Ch01. OS? Oh Yes!  (0) 2023.03.10