2023. 5. 25. 12:00ㆍ공부/OS
https://growth-coder.tistory.com/139
[OS] 프로그램과 프로세스의 차이 및 프로세스 구조
프로그램과 프로세스의 차이 프로그램과 프로세스는 혼동하기 쉬운데 둘은 엄연히 다르다. 프로그램은 특정 목적을 수행하기 위한 명령문들의 집합이다. 또한 컴파일된 결과물이 디스크에 저
growth-coder.tistory.com
이전 포스팅에서 프로세스의 구조에 대해서 알아보았다.
이번 포스팅에서는 프로세스 내부에서 실행되는 쓰레드에 대해서 포스팅 해보려고 한다.
쓰레드는 프로세스와 마찬가지로 cpu의 작업 단위이다.
프로세스 내부에서 실행되는 흐름의 단위라고 보면 된다.
하나의 프로세스 내부에서는 여러 개의 쓰레드가 실행될 수 있고 여러 개의 쓰레드를 가지는 프로세스를 멀티 쓰레드 프로세스라고 한다.
이전 포스팅에서 프로세스는 메모리로 로딩될 때 4개의 segment로 나뉘어서 로딩된다고 배웠다.
text, data, heap, stack으로 이루어져 있는 다음은 쓰레드가 하나인 프로세스의 구조이다.

이 다음은 쓰레드가 여러 개인 프로세스의 구조이다.

보다시피 각각의 쓰레드는 고유의 스택 영역을 가지고 text, data와 같은 자원들은 다른 쓰레드와 공유한다.
쓰레드는 프로세스와 유사하게 동작하는데 프로세스처럼 상태 변화가 가능하고 context switching도 가능하다.
또한 프로세스에는 context switching을 위한 PCB (Process Control Block)이 존재하는데 역시 쓰레드에서도 context switching을 위한 TCB (Thread Control Block)이 존재한다.
멀티 쓰레드는 다음과 같은 장점이 존재한다.
- 프로세스 내부에서 자원을 공유하기 때문에 생성 비용이 저렴하다.
- 쓰레드 간의 통신이 프로세스 간의 통신보다 덜 복잡하다.
- context switching 비용이 저렴하다.
쓰레드 간의 통신을 할 때 전역 변수의 공간 등을 이용하여 통신을 할 수 있다.
'공부 > OS' 카테고리의 다른 글
[OS] CPU scheduling 알고리즘 (0) | 2023.06.11 |
---|---|
[OS] 프로세스 동기화 문제 (세마포어) (0) | 2023.05.27 |
[OS] CPU Scheduling와 프로세스 상태도 (0) | 2023.05.23 |
[OS] 일괄 처리 시스템, 다중 프로그래밍 시스템, 시분할 시스템, 다중 프로세서 시스템 (0) | 2023.03.29 |
[OS] 프로그램과 프로세스의 차이 및 프로세스 구조 (0) | 2023.03.28 |