NPTL 이 뭘까요?

hyper9의 이미지

여기저기 뒤져보다 보니,,

NPTL (Native POSIX Thread Library)와 LinuxThread를
비교해 놓은 경우들이 있는 것 같아요..

어떻게 다른걸까요?
그리고 Glibc와는 어떤 관련이 있는 건지..
모르는게 많네요..

조언 부탁 드립니다.

hyper9의 이미지

어떤 관련이 있는지 좀 찾아보니,,

NPTL이 GLIBC에 포함되어 있는 것이라고 하고
32bit platform에서는 쓰이지 않고, 64bit platform에서만
쓰인다고 하던데,,맞는 이해인가요?

wish의 이미지

리눅스 포직스 쓰레드 api 구현의 발전과 관계가 있습니다.

초창기 리눅스는 포직스 쓰레드 api를 유저 레벨에서 구현했었습니다. 그러니까 포직스 쓰레드 api를 부르면 리눅스 쓰레드 씨스템 콜이 호출되는 형식으로요(clone()이나 fork(), 사실 둘은 같은 구현이라고 알고 있습니다.)

그런데 그렇게 하니 쓰레드 성능도 안나오고, 표준과 안 맞아 떨어지는 문제(잘은 모릅니다만 thread마다 다른 pid가 부여 되는 문제 등)도 있고 해서 포직스 쓰레드 api를 커널 레벨에서 구현하기 시작했었는데, 그 당시에 구현체가 2개가 있었습니다. 그게 NGPT와 NPTL이죠. 그러다 NPTL이 살아남아서, 리눅스 포직스 쓰레드 api 공식 구현은 NPTL이 되었습니다.

Quote:

NPTL이 GLIBC에 포함되어 있는 것이라고 하고

제가 아는 한에서는, 리눅스 시스템 콜은 모두 glibc에 들어가 있습니다. 그러니까 커널 구현이 들어가 있는게 아니라, 유저 레벨에서 호출할 수 있는 래퍼가 들어가 있는거죠. 그걸 호출하면 트랩이 발생하게 만드는 등등. 포직스 쓰레드 API도 당연히 glibc에 들어가 있을테죠.

Quote:

32bit platform에서는 쓰이지 않고, 64bit platform에서만 쓰인다.

제가 아는 한에서는, 이건 아닌 듯 합니다만.

한 때 LinuxThread랑 NPTL구현이 구체적으로 어디부터가 커널 수준이지 알아보려고 잠깐 뜯어보기도 했었는데, 너무 옛날이라 정확하게 기억이 나지 않아서 쓴 내용이 틀릴 수도 있습니다 ^^;;

ganadist의 이미지

그냥 이렇게 확인하세요.

$ /lib/libpthread.so.0 
Native POSIX Threads Library by Ulrich Drepper et al
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Forced unwind support included.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.