CS Interview

Process, 프로세스란?

게임이 더 좋아 2021. 6. 28. 18:22
반응형
728x170

21.11.01 Update (멀티 프로세스 내용 추가)

정의

 

실행 중인 프로그램, Program in execution이다.

다시 말하지만 프로그램 자체는 프로세스가 아니다.

프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일, 단지 실행 파일일 뿐인다.

그래서 수동적인 존재라고도 한다.

 

 


 

 

프로세스 문맥교환이란? (Context Switching)

 

문맥교환은 CPU 레지스터에 저장된 한 프로세스의 상태 정보를 저장하고, 다른 프로세스를 위한 새로운 상태 정보를 레지스터로 읽어 들이는 연산이다.

(CPU에서 일어나는 일)

 

PCB는 프로세스가 실행되지 않을 때 기존의 CPU 레지스터를 복사해서 가지고 있는다.

즉, 한 프로세스의 실행이 멈추었을 때는 모든 CPU 레지스터의 내용응 PCB에 저장해놓고 다시 시작되기 전에

다시 PCB에러 CPU레지스터에 불러들여서 그 후 프로세스를 다시 시작한다.

 

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

**레지스터에 저장된 상태같은 것들을 말한다.

CPU 제어를 주거나 받았을 때 다시 정상적으로 수행하기 위해 문맥을 저장하는 것임

 

Context Swtich : CPU를 다른 프로세스에게 제어를 주는 작업

 

 


 

PCB, Process Control Block : 프로세스가 생성될 때부터 소멸될 때까지 존재하며

프로세스에대한 모든 정보를 담고 있음

아래의 내용을 담음

process state, process ID, scheduling information, priority 등

program counter, registers

code, data, stack 등

 


 

프로세스들 끼리 협동해야 하는 경우가 있는데 (멀티 프로세스)

그러한 경우 프로세스는 서로 통신 수단과 동기화 기능이 필요하다.

 


 

Life Cycle

state가 변경되며 수행된다.

여러가지 그림이 있지만 대표적으로 2개만 보자

 

 

Running - CPU를 점유하고 instruction 수행

Ready - CPU 제어를 기다리는 상태(메모리 들은 이미 올라와있음)

Blocked - CPU 제어를 줘도 바로 실행은 불가능한 상태

-> I/O를 대기하거나 메모리 적재를 기다리는 중

 


 

멀티 프로세스, Multi-Process

 

 

두 개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 Task를 동시에 처리하는 것이다. (병렬처리)

각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.

-> 다른 종류의 작업인 경우 스레드가 아닌 프로세스로 하는 것이 좋다.

 

장점

 

1. 독립된 구조로 안전성이 높은 장점이 있다.

2. 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않는다. (Thread랑 다른 점)

3. 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴하다.

 

문제점

 

독립된 메모리 영역이기 때문에 작업량이 많을수록( Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우) 오버헤드가 발생하여 성능저하가 발생 할 수 있다.

Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.

 

 


 

[컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스 연산(생성부터 종료, from creation to termination)

[컴퓨터(Computer Science)/시스템 프로그래밍(System Programming)] - 멀티스레드 환경에서의 동기화(Synchronization)

[컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스 간 통신, Interprocess Commnunication/IPC

[컴퓨터(Computer Science)/운영체제(Operation System)] - 다중 스레드 모델, Multithreading Models

[컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스에서의 동기화 (Process Synchronization) [운영체제]

[컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스 스케줄링(Process scheduling)이란?

 

728x90
반응형
그리드형

'CS Interview' 카테고리의 다른 글

Thread, 스레드란?  (0) 2021.06.29
Scheduler & Algorithm, 스케줄러가 하는 일, 스케줄링 알고리즘  (0) 2021.06.28
Virtual Memory, 가상메모리란?  (0) 2021.06.28
Cache, 캐시란?  (0) 2021.06.23
Tree 자료구조  (0) 2021.06.15