기기

process vs thread 본문

CS/OS

process vs thread

notEmpty 2020. 4. 27. 11:30

process vs thread

process : 운영체제로부터 자원을 할당받은 작업의 단위

 

thread  : 프로세스가 할당받은 자원을 이용하는 실행의 단위 

 

 

 

 

프로세스 구성

 

Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령 )

Data (static): 전역변수, 정적변수, 배열 등 ( 초기화된 데이터 )

Heap : 동적 할당 시 사용 ( new(), mallock() 등 )

Stack : 지역변수, 매개변수, 리턴 값 ( 임시 메모리 영역 )

 

 

 

 

프로세스 특징 

 - 프로그램이 메모리에 올라가 수행하는 작업의 단위

 

 - 고유 공간과 자원을 할당받아 사용

 

 - 프로세스의 생성 

초기 프로세스는 부팅 시 OS로 받지만, 그 후 부모 프로세스에게서 fork(), exec(),, 와 같은 시스템 콜로 생성됩니다. 

 

 - 시분할 시스템으로 진행중이던 작업을 저장하고 재개하기 위해 PCB를 사용

context switch : 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정 -> 오버헤드 발생 

 

 - 원칙적으로는 프로세스는 독립적으로 수행됩니다. 

하지만, 프로세스 간에 협력이 필요할때는 IPC를 적용

 

 - 장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)

 - 단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하

따라서, 너무 많은 프로세스가 메모리에 있는 경우, 프로세스 수를 조절하기 위해 Medum term scheduling(swapper) 존재 

 

 

 

 

쓰레드 특징  

 - 프로세스에는 최소 하나 이상의 쓰레드가 존재합니다. 

 

 - 쓰레드는 프로세스의 자원을 공유합니다. 

 

 - 독립적인 작업을 수행합니다. 

 

 - 스택과 레지스터 값을 할당받습니다.

 

why?

1 스택으로 독립적인 함수호출이 가능하고, 그로 인해 독립적인 흐름이 가능합니다. 

2 cpu를 뺏겼다가 다시 할당받을때 진행중이던 작업을 다시 수행하기 위해서 레지스터 값이 필요합니다.

 

 

 

 

쓰레드 장점 

1 프로세스보다 빠른 생성, 전환, 종료 

 

2 중간에 커널이 없는 자원 공유로 빠릅니다. 

 

 

 

 

쓰레드 단점

안정성 문제, 하나의 쓰레드가 공유 데이터를 망가뜨리면, 모든 쓰레드가 동작 불가능 

 

따라서, Critical Section 접근 기법으로 동기화 작업을 할 수 있습니다. 

 

 

 

'CS > OS' 카테고리의 다른 글

OS 부팅과정  (2) 2023.11.21
address space VS virtual memory VS swap memory  (0) 2020.07.13
데드락 (DeadLock)  (0) 2020.06.23
process synchronization(동기화)  (0) 2020.04.27
IPC(Inter Process Connection)  (0) 2020.04.25