배 타다 개발자

OS02. 프로세스개념 이해가기 본문

Backend

OS02. 프로세스개념 이해가기

노 아 2020. 12. 30. 09:53

학습 목표

프로세스의 개념, 프로세스의 상태(Process State), 프로세스의 개념, 프로세스 상태도, Process Control Block(PCB), 문맥교환(Context Switch), 프로세스를 스케줄링하기 위한 큐, Ready Queue와 다양한 Device Queue, 스케줄러(Scheduler), 동기식 입출력과 비동기식 입출력, 프로세스 스케줄링 큐의 모습, Thread. Thread, Single and Multithreaded Processes, Benefits of Threads, Implemetation of Threads


프로세스 개념

Process is a program in execution.

프로세스 = 실행중인 프로그램 

프로세스의 문맥(context)


1. CPU 수행상태를 나타내는 하드웨어 문맥 : program counter, 각종 register

2. 메모리와 관련된 프로세스의 주소, 공간 : code, data, stack

3. 프로세스 관련 커널 자료 구조 : PCB(운영체제관련), Kernel stack

프로세스의 상태(Process state) 



1. Running : CPU 를 잡고 명령 수행 중인 상태

2. Ready : CPU를 기다리는 상태(메모리 등 타조건은 이미 만족하고)

3. Blocked(wait, sleep) :   CPU를 주어도 당장 명령을 수행할 수 없는 상태입니다. process 자신이 요청한 event(ex. I/O)각 즉시 만족되지 않아 이를 기다리는 상태입니다. (ex. 디스크에서 file을 읽어와야 하는 경우

4. Suspended : 외부적인 이유(미디엄 스케쥴러 등)로 프로세스의 수행이 정지된 상태입니다. 프로세스는 통째로 디스크로 swap out됩니다. 외부에서 resume(재개)시켜주어야 Active됩니다. 

New:프로세스가 생성중인 상태

Terminated: 수행(execution)이 끝난 상태


Process Control Block(PCB)

운영 체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보입니다.


(1) OS가 관리상 사용하는 정보

-process state, Process ID

-Scheduling information

(2) CPU 수행관련 하드웨어 값

- program counter, register

(3) 메모리 관련 

- code, data, stack의 위치정보

(4) 파일 관련 

open file discriptors

문맥 교환(Context Switch)


CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정입니다.

다른 프로세스로 넘어갈 때 OS는 다음을 수행합니다.


1. CPU를 내어주는 프로세스의 상태를 PCB에 저장

2. CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴

(1)의 경우에는 문맥교환이 일어나지 않습니다. 그러나  (2)의 경우에는 프로그램에 시간이 지나 받는 인터럽트와 입출력을 요청을 위해 받는 system call을 받아 커널모드로 갔다오는 경우는 문맥교환이 일어납니다. 

스케쥴러(Scheduler)



Longterm-scheduler(장기 스케줄러, Job Scheduler)

어떤 프로세스가 "new" 상태로 있는 데 어떤 프로세스를 "ready que"로 admit을 해줄 지 결정합니다. 프로세스에 memory(각종 지원)을 할당해주는 문제 입니다. 열 개

의 프로세스에 메모리를 할당해주면 "degree of multiprogramming"은 10이 됩니다.  

메모리에는 너무 많은 프로그램이 적당한 프로그램이 올라가 있어는 것이 좋습니다. 너무 많거나 적어도 좋지 않습니다. 

time sharing system에서는 보통 장기 스케쥴러가 없고 무조건 ready 상태입니다. 


Shorterm scheduler(단기 스케쥴러, CPU 스케쥴러)

다음에 어떤 process를 CPU에 주어  running 시킬지  결정하는 이슈입니다. Millisecond 단위의 아주 빠른 속도 진행됩니다. 

Medium-term scheduler(중기 스케쥴러 or swapper)

만약에 메모리에 너무 많은 프로그램이 동시에 올라가 있으면 일부를 쫒아내 프로세스의 수를 조절합니다. 프로세스에게서 메모리를 빼앗는 문제입니다. 

Thread


프로세스 내부의 CPU 수행단위가 여러개 있는 경우,  Thread라고 한합니다. 

파일을 생성하면 코드, 데이터, 스택의 주소가 생기는데 이를 관리하기 위해서 운영체제 내에도 처리중인 프로세스의 정보를 담은 PCB 생성이 됩니다.

그런데 동일한 프로세스가 동시에 실행이 될 때, 주소들을 반복해서 생성하면 공간이 낭비되기 때문에 같은 일을 하는 프로레스를 띄어 놓을 때 사용합니다. 

다중 Thread 로 구성된 테스크 구조에서는 하나의 서버 스레드가 블락인 상태에서도, 동일한 테스크 내에 다른 Thread를 실행하여 빠른 처리를 할 수 있습니다. 이를 통해 처리율(Throughoutput)과 병렬성을 높일 수 있습니다.  


응답성(Responsiveness)

사용자 입장에서 응답성이 높음 ex) 웹페이지를 이미지를 불러오는 동안에 프로세스를 블록시키지 않고 화면에 다른 스레드가 텍스트라도 띄우는 경우 사용자 입장에서는 답답함이 덜합니다.  

자원 공유(Resource sharing)

데이터를 공유합니다.

경제성(Economy)

CPU를 switching하는 것보다 프로세스 내부에서 Thread간의 스위치가 훨씬 오버헤드가 덜합니다. 

Utlliization of MP Architecture 

각각의 Thread가 서로 다른 CPU에서 병렬적으로 일하면 멀티프로세스 환경에서 더 효율적입니다. 


Implementation of Thread