스터디/CS 스터디 (24.06-24.11)

OS : 프로그램, 프로세스, 스레드, 멀티 프로세싱 vs 멀티 태스킹

minseokiim 2024. 7. 4. 16:04

* 프로그램, 프로세스

 

- 프로그램 : 실행 파일 형태로 저장된 명령어들의 집합(정적)

- 프로세스  : 실행 중인 프로그램의 인스턴스(동적)

 

 

* 프로그램 -> 프로세스 전환 과정

1) 사용자가 프로그램을 실행 -> OS 는 해당 프로그램을 메모리에 로드

2) 프로그램이 필요한 메모리 공간을 OS 에서 할당받음

3) OS는 프로그램에 CPU 시간을 할당하여 실행을 시작 -> 이 순간부터 프로그램은 프로세스가 됨.

4) 프로세스는 할당된 자원을 사용하여 프로그램의 명령어들을 순차적으로 실행

 

 

 

 

* 프로세스, 스레드

1) 프로세스 

OS 입장 작업 단위

독립된 메모리 영역 할당

메모리 공간 공유 불가(하고싶으면 IPC 통신)

1개 이상의 스레드로 이뤄짐

 

- 장점 : P1이 P2에 영향 주지 않음(독립적이므로)

- 단점 : 오버헤드가 큼(context switching 해야 하므로)

(* context switching : 운영 체제가 CPU를 여러 프로세스 간에 공유하는 방식)

 

 

 

 

 

2) 스레드

CPU 입장 작업단위(스케줄링의 최소 단위)

1개의 프로세스 내에서 동작되는 여러 실행 흐름

프로세스 내 의 주소공간/자원공유/공유 메모리 통해 정보 주고받음

(stack을 제외한, code/data/heap만! stack은 독자적으로 가짐 -> stack에는 함수 호출 시 복귀 주소와 지역 변수등이 저장됨. 재귀 호출시에는 각 재귀 단계마다 별도의 스택 프레임이 필요.)

 

- 장점 : 자원 공유로 인한 자원 할당 비용 감소, context switching 비용 감소

- 단점 : P1과 P2이 서로에게 영향 줌, 동기화. 교착상태(deadlock) 문제

(* deadlock : 두 개 이상의 프로세스가 서로의 작업이 끝나기를 무한정 기다리는 상태, 이로 인해 시스템의 일부 또는 전체가 멈추게 됨.)

 

 

 

* 멀티 프로세싱, 멀티 태스킹

 

- 멀티 태스킹 : 한 CPU가 여러 프로세스를 동시에 실행하는 것처럼 보임 , context-switching을 통해 이뤄짐.

하나의 프로세스 내에서 여러 스레드를 병렬로 실행하는 방식, 스레드 간에는 메모리를 공유

 

- 멀티 프로세싱 : 여러 CPU 코어 또는 여러 CPU가 동시에 여러 프로세스를 병렬로 실행하는 방식 , 실제로 동시에 이뤄짐.

여러 프로세스를 병렬로 실행하는 방식, 프로세스 간에는 독립적인 메모리 공간이 필요