728x90
1. 개요
오늘은 TCB에 대해 알아보도록 하겠습니다.
2. TCB?
Thread Control Block의 약자로 쓰레드를 관리해주는 블록이다.
어디서 많이 본것이 있을 것이다.
Process Control Block (PCB) 이 생각나는 블록이다.
https://chogyujin-study.tistory.com/37
그럼 TCB는 왜 생겨났을까?, 답은 간단하다.
PCB랑 원리가 똑같이 Context Switching 때문에 생겨난 블록이다.
Thread Context Switching은 어떻게 진행되고, process Context Switching과 어떤점에서 차이는?
- Thread context-Switching의 주체는 OS가 될 수도 있지만, 특정 library가 담당하기도 한다.
process context-switching이 발생하면, 진행하던 cache의 내용은 새로 진행해야되는 process에서는 무용지물이 되어버린다.
(Process context-switching이 발생하면, 새로운 프로세스가 실행되기 때문에 기존의 상태를 기억하기 위해 캐시 내용이 다시 로드되어야 합니다. 이는 프로세스가 작업을 수행하기 위해 필요한 모든 데이터를 읽어들이기 위해 필요합니다. 또한, 프로세스가 작업을 수행하고 나면 반드시 새로운 상태로 캐시 내용을 업데이트해야 합니다.)
하지만, thread context-switching 에서는 꼭 그렇지만은 않다. 2가지 이유가 있다.
같은 process에 속해있는 thread 이기에, 많은 자원들을 공유한다. 그렇기에, 가상메모리 공간을 바꿀 필요가 없다. - Cache에 이미 두 thread가 공유하는 data가 올라가있다. 또한, Cache memory에 data를 가져올 때는, 필요한 data 만을 가져오는게 아니라, 주변에 있는 data도 같이 가져오게 된다. Cache는 locality 라는 특성을 갖고있기 때문에, 이 과정에서 새로 실행하게 되는 thread에서 사용하는 data 또한, cache memory에 이미 적재되어 있을 가능성이 높다.
이러한 이유로, thread context-switching의 overhead는 process context-switching의 overhead 보다 적다. - 스레드는 프로세스와 달리 컨텍스트 전환이 더 자주 발생합니다. 하지만 스레드의 컨텍스트 전환은 프로세스보다 빠릅니다. 이는 스레드가 스택 영역만 변경하면 되기 때문입니다.
3. 쓰레드의 주소공간
- 쓰레드에 대한 정보를 보관 (프로세스의 PCB와 유사)
- thread ID
- thread 실행상태
- program counter, register set thread context
- stack
- thread specific 메모리 공간 (static 메모리)
CPU수행 즉 instruction의 수행을 위해서는 현재 이 코드의 어느 부분을 실행하고 있는지를 가르키는 PC가 있어야하고
그 CPU에서 실행되면서 메모리에 현재 어떤 regiter에 값을 넣을지 알기위해 registers를 가지고 있다.
CPU가 여러단위로 실행되어서 여러개의 스택을 Process 주소공간에 넣는다. (쓰레드 하나가 코드 어느 부분을 실행하다가 함수호출을 하면 스택에 쌓아야 하기때문에 쓰레드의 스택이 있다.)
4. Ref
https://peonyf.tistory.com/entry/%EC%93%B0%EB%A0%88%EB%93%9C%EC%99%80-TCB
'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글
임계영역(Critical Section) (0) | 2024.04.08 |
---|---|
메모리 영역 (1) | 2024.03.23 |
가상메모리 관리 (2) | 2023.12.08 |
캐시메모리와 지역성 그리고 캐시라인 (0) | 2023.11.30 |
Race Condition 경쟁상태 (0) | 2023.10.28 |