본문 바로가기
IT/OS

Process, Thread

by FreeYourMind 2022. 2. 15.

Process

- 실행 중인 Program (-> 메모리에 할당되어 돌아가고 있는 프로그램)

- OS에게서 자원을 할당 받는 작업 단위

 

Thread

- Process 내에서 실제로 작업을 수행하는 주체

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

- 한 프로세스 내의 각 쓰레드들은 주소 공간이나 자원을 공유할 수 있으며 독립적인 작업을 수행해야 하므로 각자 Stack과 PC Register 값을 가짐

 

Thread의 필요성

- Process보다 생성 및 종료 시간, Context Switching 시간이 짧음

- 쓰레드 간 통신에 Kernel의 도움 필요 없음

 

* Stack을 쓰레드마다 독립적으로 할당하는 이유 : Stack은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간 -> Stack Memory가 독립적이라는 것은 각자 함수 호출이 가능 -> 독립적인 실행 흐름이 가능함

 

* PC Register : PC Register 값은 명령어를 어디까지 수행했는지를 저장함

-> 쓰레드가 CPU를 할당 받았다가 Scheduler에 의해 CPU를 뺏기는 경우 명령어를 다 수행하지 못하므로, 어디까지 수행했는지 기억할 필요가 있음 -> 각 쓰레드마다 PC Register가 필요함

 

 

출처

http://www.tcpschool.com/java/java_thread_concept

 

중요 출처

https://goodgid.github.io/What-is-Thread/

 

 

 

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

[Linux] shell script 함수의 return  (0) 2022.02.27
[Linux] Debian vs RHEL  (0) 2022.02.26
Mutex, Semaphore, Critical Section  (0) 2022.02.15
OS 부팅 과정  (0) 2022.02.12
커널 파라미터란?  (0) 2021.09.27

댓글