이것저것
Process, Thread 본문
Program (=실행시킬 수 있는 파일)
실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음
Processor (=실행을 하는 HW)
프로세스가 동작될 수 있도록 하는 HW (=CPU)
(동작이란, 프로그램의 자원들이 메모리에 올라오고, 실행 되어야 할 코드의 메모리 주소를 CPU의 레지스터로 올리는 것을 의미한다.)
"프로세서(CPU)는 한 순간에 하나의 프로세스만을 실행할 수 있다."
그러나 작업관리자를 실행시켜 보이면 여러개의 프로세스가 실행되고 있는 것을 볼 수 있다
그 이유는?
OS가 짧은 시간에 실행할 프로세스를 교체하고 있기 때문에, 동시에 여러 개의 프로세스가 실행되고 있는 것처럼 느끼는 것이다
Process (= 실행 중인 파일)
실행 중인 Program
OS로부터 시스템 자원을 할당 받는 작업의 단위
한 운영체제 안에서 여러 프로세스들이 실행되니깐 OS는 프로세스를 관리할 수 있어야한다. ⇒ PCB
PCB
- 각 프로세스는 OS에서 PCB로 표현된다.
- PID : 프로세스 식별자
- 프로세스 상태 : new, ready, running, waiting, halted 등
- 프로그램 카운터 (PC) : 다음 실행할 명령어의 주소
- 스케줄링 정보 : 우선순위, 최종실행시각, CPU 점유시간 등
Thread
프로세스 내에서 실행되는 흐름의 단위
CPU 이용의 기본 단위
Text, data, heap 영역을 공유
각 thread 별도의 stack 영역을 가짐
Multi Process
하나의 작업을 여러 개의 프로세스가 처리한다.(=자원을 공유하지 못한다.)
자원을 공유하지 못하므로 프로세스간 통신이 필요하다. (IPC - Socket, pipe 등등)
Context Switching 비용이 크다.
자식 프로세스 중 하나만 문제가 생겨도 다른 프로세스에 영향이 없다.
ex) Google Chrome (탭 마다 다른 프로세스이다 ) (browser process, gpu process, plugin process, rendere process 등등)
Multi Thread
프로세스의 자원을 공유
향상된 응답성
Context Switching 비용이 적다
자원을 공유하는 만큼 충돌을 주의해야한다.
한 프로세스 안의 쓰레드가 문제가 생기면 같은 프로세스 안의 쓰레드도 같이 문제가 생긴다.
같은 데이터를 공유하기에, 데이터 동기화에 신경을 써야한다.
ex) Web Server (html, css, js 등~~ 쓰레드로 할당받아 처리한다.)
'Operating Systems' 카테고리의 다른 글
운영체제의 역할 (0) | 2021.04.17 |
---|---|
Swap memory (0) | 2021.01.07 |