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 |
댓글