* 프로그램, 프로세스
- 프로그램 : 실행 파일 형태로 저장된 명령어들의 집합(정적)
- 프로세스 : 실행 중인 프로그램의 인스턴스(동적)
* 프로그램 -> 프로세스 전환 과정
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가 동시에 여러 프로세스를 병렬로 실행하는 방식 , 실제로 동시에 이뤄짐.
여러 프로세스를 병렬로 실행하는 방식, 프로세스 간에는 독립적인 메모리 공간이 필요
'스터디 > CS 스터디 (24.06-24.11)' 카테고리의 다른 글
네트워크 : TCP/UDP, TCP의 3-way/4-way hand shake (0) | 2024.07.09 |
---|---|
네트워크 : OSI 7계층 (0) | 2024.07.09 |
OS : 시스템 콜 (1) | 2024.07.01 |
OS : CPU 스케쥴링 (1) | 2024.07.01 |
컴퓨터 구조 : 메모리 공간, 메모리 계층, 캐시 메모리, 데이터 저장 방식 (0) | 2024.06.28 |