저는 light weight process 와 thread를 같다고 생각 했는데요.
OS 책을 보는데 thread와는 다르게 말하더라구요...
쓰레드 라이브러리하고 커널 통신할때 다대다 모델하고 두 수준모델에 문제가 있고,
많은 시스템들은 사용자와 커널 쓰레드 사이에 중간 자료구조를 둔다고 이것이 경량 프로세스 도는 LWP라고 한다네요.
LWP하고 thread 하고의 차이점을 잘 모르겠습니다.
요즘에 같다고 말하기도 한다는데요...
빈약하게 간신이 쌓은 개념들이 다시 막 헷갈리네요...
댓글 3
-
Omnipotent
2013.05.10 22:12
-
Omnipotent
2013.05.10 22:58
일단 개념 정리부터 해드릴께요.
먼저 task는 작업의 기본 단위임과 동시에 kernel scheduling의 기본 단위를 말해요.
process와 thread가 task에 해당되요.
PCB(Process Control Block)는 process를 관리하는 자료 구조예요.
TCB(Task Control Block)는 task를 관리하는 자료 구조예요.
일반적으로 리눅스와 같은 운영체제에서 PCB와 TCB를 동일하게 사용하는데 엄밀한 의미에서 둘은 같다고 볼 수 없어요.
왜냐하면 process와 task의 차이가 있으니깐요.
Task Control Block이 아닌 다른 TCB(Thread Control Block)는 thread를 관리하는 자료 구조예요.
그래서 각각이 차이가 있죠.
제가 말씀드린건 일반적인 운영체제의 개념이고요.
당부하고 싶은건 리눅스 내용만 가지고 모든 운영체제가 리눅스와 같을거라는 일반화의 오류는 범하지 마세요.
리눅스는 그냥 하나의 운영체제일 뿐이랍니다.
그래서 리눅스에서 task_struct가 PCB로 쓰인다고해서 PCB와 TCB(Task Control Block)이 같다고 생각하시면 안되요.
그건 리눅스가 그렇게 구현되어 있기 때문에 같은거고요.
엄밀하게는 의미적으로 완전히 다른겁니다.
좀 정리가 되셨는지 모르겠네요.
-
자연풍수면풍
2013.05.10 22:23
PCB하고 TCB의 차이는 몬가요??? 같은거로 알고 있었는데, 아닌가요???
리눅스에서는 task 단위로 스케쥴링하자나요. 그리고 task control block으로 알고 있었는데요. thread control block 도 있는 건가요??
task에 대한 pc, sp, pid, tgid...각각 세그먼트 레지스터 등등의 정보를 담고 있는것이 pcb(=tcb) 라고 생각했는데요.
이름은 다르지만 담고 있는 내용은 같은거요... 다른건가요??
.
간단하게 말해 LWP는 PCB(Process Control Block)에 의해 관리되는 하나의 process인 반면
thread는 운영체제에 따라 LWP 일수도 있고 별도의 TCB(Thread Control Block)에 의해 관리되는 객체일수도 있습니다.
LWP = processthread = 운영체제에 따라 LWP 일 수도 있고, 별도의 thread 객체일 수도 있음
결국 LWP와 thread는 운영체제에 따라 같기도 하고 다르기도 하죠.