Process와 Thread의 차이
- 프로세스(Process) = 관리의 단위 = 연산할 것
- 프로세스 = 파일로 되어 있는 프로그램의 일부가 메모리에 적재된다. (실행되고 있는 프로그램)
- 프로세스(작업)는 최소 1개의 스레드가 존재한다.
- 스레드(Thread) = 1개 프로세스 내 개별화된 코드의 실행 흐름
- 멀티 스레딩(Multi Threading) = 1개 프로세스 내 개별화된 여러 개의 실행 흐름
가상메모리에 할당된 공간
- OS는 Virtual Memory를 프로세스에 할당한다.
- 프로세스에 속한 모든 스레드는 프로세스의 Virtual Memory로 공간이 제약된다.
- 스레드는 실질적 연산의 주체
- 멀티 스레딩 → 동시성 + 동기화 이슈
- 프로세스 = 1 가구
- 스레드 = 1 세대원
- Vurtual Memory = 1 가구가 존재하는 공간(집)
- 프로세스에 할당된 Virtual Memory = 집
- 스레드마다 Stack 구조로 관리되는 메모리 공간이 있다.
- Thread Local Storage = Stack, 각자 쓰는 공간(각자의 방)
- Heap = 거실, 부엌 등 공용 공간, Process 전체가 사용
- 스레드마다 각자 고유한 TLS(Thread Local Storage)를 가지고 있다 = 각자 자기 방을 가진다.
- 프로세스에게 CPU 자원 할당 = Linux 계열
- 스레드에게 CPU 자원 할당 = Windows 계열
컴퓨터의 자원
- Computer = CPU + RAM + HDD
- 가상메모리(Virtual Memory) = RAM + HDD
- 프로세스 단위로 가상메모리가 할당된다.
- 프로세스에 스레드가 속해있으며, 프로세스에게 주어진 메모리 공간을 사용한다.
- PCB(Process Control Block) = OS가 프로세스 관리에 필요한 정보를 저장한 곳
- TCB(Thread Control Block) = OS가 스레드 관리에 필요한 정보를 저장한 곳
- CPU의 Core = 연산의 주체
- CPU Core가 8개가 있다면, Process 2000개는 CPU 자원을 분할해서 사용해야 한다. = 시분할
프로그램이 프로세스가 되는 과정
- PID = Process ID (정수)
- 가상 메모리 영역 = Stack, Heap, Code(text)
- MS Word = HDD에 설치
- 설치된 프로그램을 RAM 메모리에 올린다. = 인스턴스 화 = 프로그램 실행 = 프로세스
프로세스의 Life Cycle
- 프로세스의 상태는 전이한다.
- 프로세스의 Life Cycle = 생성 → 준비 → 실행 → 완료
- 가끔 대기 상태가 추가된 Life Cycle이 있다.
- 프로세스가 I/O 요청 시 Device에서 응답 받을 때 까지 기다린다. = 대기 상태 = Blocking I/O
- 요청한 프로세스의 실행상태가 유지됨 = 기다리지 않고 비동기적으로 한다. = Non Blocking I/O
Ready Queue (준비 상태 큐)
- OS에서 프로세스를 관리할 때 Queue를 사용한다. (Queue 관련 글은 여기를 참고)
- 준비 상태의 프로세스(스레드)를 Queue에 가지고 있는다.
- 디스패치(Dispatch) = 보내다, 발송하다 → 보낼 대상을 선정 후 꺼낸다.
- Queue에 실행해야 할 프로세스(스레드)가 나열되어 있으며, OS는 앞부분부터 꺼낸다.
- CPU Core의 개수만큼 한번에 꺼낸다. → 8개면, 한번에 8개 꺼낸다.
- 디스패치하게 되면 자원이 할당되고 실행으로 이뤄진다.
참고
'IT 지식 > 운영체제' 카테고리의 다른 글
프로세스 생성과 복사 (0) | 2024.08.25 |
---|---|
프로세스 휴식, 보류 상태와 문맥(Context) (0) | 2024.08.24 |
CPU 예측이 가져오는 문제점(멜트다운, 스펙터) (0) | 2024.08.22 |
CPU와 캐시 메모리 (1) | 2024.08.21 |
DMA와 고성능 소켓 (0) | 2024.08.20 |