리눅스 tid와 pid의 차이

maboloo의 이미지

리눅스 커널 구조를 막 시작한 완전 초보입니다

공부하다가 PID와 TID의 개념이 헷갈려서요

PID는 process ID를 뜻하지만 실제로는 Thread ID에 해당하고

TGID는 Thread Group ID 즉, Thread를 생성시킨 process ID이잖아요

TID는 Thread ID로 알고 있는데

그럼 PID와 TID를 왜 구분해 놓은거죠?

PID도 Thread ID니 구분할 필요가 없지 않나요?

익명 사용자의 이미지

pid는 tid가 담는 내용보다 좀 더 포괄적으로 담는거 같습니다 pid가 프로세스 아이디라면 tid를 생성시킨 프로세스라고 볼 수 있으니까요.

tyhan의 이미지

익명 사용자의 이미지

먼저, Process 개념은 오랜 역사(1970~)을 갖습니다. 대부분의 UNIX계열에서는 기본으로 따르게 됩니다. 리눅스도 마찬가지입니다.
* 사용자가 어떤 프로그램을 실행하면 '프로세스'가 되었습니다. 이는 관리대상이며, PID를 부여하여 구분/관리하게 되었습니다.
---
Thread 개념은 SUN에서 LWP(Light Weight Proces)라는 개념을 만들면서 출발하고, 표준화등의 과정을 거쳐 개념으로써 정립한 후 (POSIX 1003.1 ?가물가물하네요.) 각 운영체제별로 알아서/자율적으로 도입하게 됩니다. 한때, 쓰레드 개념을 구현하는게 이슈였던 시기도 있습니다.
"쓰레드 개념을 커널 내부에 구현하자" 또는 "라이브러리로 사용자 영역에 쓰레드를 구현하자"..등등
리눅스의 경우에는 NTPL로 커널에 구현하게 됩니다.(NPTL이 되기까지의 얘기는 생략하니, 검색해 보세요.)

* 사용자가 어떤 프로그램을 실행하면 '쓰레드'로 해야할까요? 이렇게 할 수 있겠으나, 이렇게 하지 않았습니다. 몇몇 신종 운영체제들은(리눅스가 아닌, 연구용 운영체제들이라 들어 보신적도 없을 듯한) 프로세스라는 말을 쓰지도 않고 '쓰레드'로 하게끔 하였습니다.

선택이 필요했습니다.
Revolution vs. Evolution

리눅스도 후자를 택했습니다.
thread 개념이 나왔으나, 과거 그 수 많은 응용 프로그램/유틸리티 등과 단절하지 않고, 과거 전통인 프로세스 개념과 효율적인 방식인 쓰레드 개념을 같이 사용하고자 하는 방법을 택한 것입니다.

일단, 큰 관리(프로그램의 시작/종료)에서는 프로세스 덩어리로 보고, 실행에서는 쓰레드 단위로 함으로써, 관리(프로세스)와 효율(쓰레드)의 장점을 모두 갖기로 한 것입니다.

특히, 단일, 프로세스라면 단일 쓰레드로 보기로 하고 말입니다.
식사시간이라 이만...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.