쓰래드에 대해서...

free_style의 이미지

리눅스 스레드는.. clone 를 사용하기 때문에.. 프로세스라고 봐도.. 무방하다고 하던뎅... freebsd, openbsd, netbsd의 쓰래드는 어떻게 생겨 먹었나요???
안정적이긴 한건가요?? 왠지 bsd 쪽으로 관심을 가지고 싶어서 그러는뎅... 많은 분이 글좀 달아 주셨으면 합니다...

ssehoony의 이미지

프로세스라고 봐도 무방하다라...
어떤 의미에서 프로세스라고 봐도 된다는 걸까요?(커널의 스케줄링 관점에서 인가요?)
그리고 clone 를 사용한다는 건 무슨 뜻일까요?

안정성에 대해서는 bsd 계열을 사용해 보지 않아서 모르겠지만, 유명한 OS중에 불안한 기능을 안정버전에서 공개하는 OS는 없다고 자신있게 말할 수 있습니다.
지원된다면 잘 작동하는 것으로 간주해도 될 듯 하네요.

woojhs의 이미지

kernel 2.4 대에서는 완벽한 쓰레드로 구현된 것이 아니였으나
kernel 2.6 대에서는 완벽한 쓰레드로 구현된 것으로 알고 있습니다.

ps로 확인해 보시면 바로 알수 잇을 듯 합니다.

ctcquatre의 이미지

커널 2.4에서는 clone으로 마치 fork와 같은 형식을 취했습니다
다만 스레드같이 보이기 위해서 메모리를 공유했었죠.
그래서 getpid()시에 각각 개별의 프로세스 아이디를 가졌습니다

이래서 프로세스로 봐도 된다는 말이 나왔죠

하지만 2.5이상에 가서는 woojhs님 말씀처럼 POSIX 규약을 따랐습니다.

getpid() 프로세스 아이디가 같은것을 확인하실수 있을겁니다.

Chaos to Cosmos,
Chaos to Chaos,
Cosmos to Cosmos,
Cosmos to Chaos.

sangwoo의 이미지

FreeBSD에는 크게 3가지의 pthread 구현이 들어 있습니다.
(버전 5이후로)
M:N (libpthread), 1:1 (libthr), 1:N (libc_r)
libc_r은 거의 사용되고 있지 않습니다.
버전 4에서 5로 넘어가는 과정에서 안정적이고 파워풀한 pthread
라이브러리의 개발이 대두되어 많은 노력을 들였습니다. 상당히
좋은 결과를 보여주지만 벤치마크에서는 아직 리눅스보다는 좀더
뒤지더군요. (흑흑 -_ㅠ)

최근에 (1달쯤 전?) David Xu 라는 분이 libthr을 거의 새로 다시 만들다시피
했는데, 리눅스의 것과 비슷하고 벤치마크의 성능도 엄청 향상되었다고
하더군요.

----
Let's shut up and code.

ssehoony의 이미지

그렇군요. 2.4 커널의 쓰래드가 그래서 pid 가 다른거였군요. :!:

근데 궁금한건 쓰래드 라는게 병렬로 동시에 작동하고 메모리가 공유고 쓰래드가 각각 스택프래임을 사용한다는 것 외에 뭐 다른게 있나요?
이런 특징면에서 보면 2.4의 쓰래드도 완벽한 쓰래드라고 할 수 있는거 아닌가요?
완벽한 쓰래드라고 할 수 없는 이유가 pid 가 달라서 인가요? 이건 완벽한 쓰래드가 아니기 때문에 2.4 커널에서 나타나는 현상 혹은 특징이라고 할 수 있지 이것때문에 아니라고 할 수는 없을 듯 한데.... :?:
그리고 2.6 에서 완벽해 졌다면 2.4 의 쓰래드에 비해 2.6의 쓰래드가 갖는 좋은 점은 뭔가요? (이게 가장 궁금하네요. :P )

댓글 달기

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