먼저, Process 개념은 오랜 역사(1970~)을 갖습니다. 대부분의 UNIX계열에서는 기본으로 따르게 됩니다. 리눅스도 마찬가지입니다.
* 사용자가 어떤 프로그램을 실행하면 '프로세스'가 되었습니다. 이는 관리대상이며, PID를 부여하여 구분/관리하게 되었습니다.
---
Thread 개념은 SUN에서 LWP(Light Weight Proces)라는 개념을 만들면서 출발하고, 표준화등의 과정을 거쳐 개념으로써 정립한 후 (POSIX 1003.1 ?가물가물하네요.) 각 운영체제별로 알아서/자율적으로 도입하게 됩니다. 한때, 쓰레드 개념을 구현하는게 이슈였던 시기도 있습니다.
"쓰레드 개념을 커널 내부에 구현하자" 또는 "라이브러리로 사용자 영역에 쓰레드를 구현하자"..등등
리눅스의 경우에는 NTPL로 커널에 구현하게 됩니다.(NPTL이 되기까지의 얘기는 생략하니, 검색해 보세요.)
* 사용자가 어떤 프로그램을 실행하면 '쓰레드'로 해야할까요? 이렇게 할 수 있겠으나, 이렇게 하지 않았습니다. 몇몇 신종 운영체제들은(리눅스가 아닌, 연구용 운영체제들이라 들어 보신적도 없을 듯한) 프로세스라는 말을 쓰지도 않고 '쓰레드'로 하게끔 하였습니다.
선택이 필요했습니다.
Revolution vs. Evolution
리눅스도 후자를 택했습니다.
thread 개념이 나왔으나, 과거 그 수 많은 응용 프로그램/유틸리티 등과 단절하지 않고, 과거 전통인 프로세스 개념과 효율적인 방식인 쓰레드 개념을 같이 사용하고자 하는 방법을 택한 것입니다.
일단, 큰 관리(프로그램의 시작/종료)에서는 프로세스 덩어리로 보고, 실행에서는 쓰레드 단위로 함으로써, 관리(프로세스)와 효율(쓰레드)의 장점을 모두 갖기로 한 것입니다.
pid는 좀 더 포괄적이고..
pid는 tid가 담는 내용보다 좀 더 포괄적으로 담는거 같습니다 pid가 프로세스 아이디라면 tid를 생성시킨 프로세스라고 볼 수 있으니까요.
설명이 잘 되어
설명이 잘 되어 있네요.
http://stackoverflow.com/questions/4517301/difference-between-pid-and-tid
먼저, Process 개념은 오랜 역사(1970~)을
먼저, Process 개념은 오랜 역사(1970~)을 갖습니다. 대부분의 UNIX계열에서는 기본으로 따르게 됩니다. 리눅스도 마찬가지입니다.
* 사용자가 어떤 프로그램을 실행하면 '프로세스'가 되었습니다. 이는 관리대상이며, PID를 부여하여 구분/관리하게 되었습니다.
---
Thread 개념은 SUN에서 LWP(Light Weight Proces)라는 개념을 만들면서 출발하고, 표준화등의 과정을 거쳐 개념으로써 정립한 후 (POSIX 1003.1 ?가물가물하네요.) 각 운영체제별로 알아서/자율적으로 도입하게 됩니다. 한때, 쓰레드 개념을 구현하는게 이슈였던 시기도 있습니다.
"쓰레드 개념을 커널 내부에 구현하자" 또는 "라이브러리로 사용자 영역에 쓰레드를 구현하자"..등등
리눅스의 경우에는 NTPL로 커널에 구현하게 됩니다.(NPTL이 되기까지의 얘기는 생략하니, 검색해 보세요.)
* 사용자가 어떤 프로그램을 실행하면 '쓰레드'로 해야할까요? 이렇게 할 수 있겠으나, 이렇게 하지 않았습니다. 몇몇 신종 운영체제들은(리눅스가 아닌, 연구용 운영체제들이라 들어 보신적도 없을 듯한) 프로세스라는 말을 쓰지도 않고 '쓰레드'로 하게끔 하였습니다.
선택이 필요했습니다.
Revolution vs. Evolution
리눅스도 후자를 택했습니다.
thread 개념이 나왔으나, 과거 그 수 많은 응용 프로그램/유틸리티 등과 단절하지 않고, 과거 전통인 프로세스 개념과 효율적인 방식인 쓰레드 개념을 같이 사용하고자 하는 방법을 택한 것입니다.
일단, 큰 관리(프로그램의 시작/종료)에서는 프로세스 덩어리로 보고, 실행에서는 쓰레드 단위로 함으로써, 관리(프로세스)와 효율(쓰레드)의 장점을 모두 갖기로 한 것입니다.
특히, 단일, 프로세스라면 단일 쓰레드로 보기로 하고 말입니다.
식사시간이라 이만...
댓글 달기