LinuxThread 와 pthread
저는 Unix(Solaris, AIX), linux (2.4.20 redhat) 계열에서
thread를 사용하여 몇몇 서버 프로그램을 작성해 보았습니다.
요즘 thread에 대해 공부를 하고 있는데 실무와 책(또는 자료)
간에 연결이 안되는 부분이 있어 질문을 해봅니다. ㅋ
먼저 아래글을 몇번 읽고 나서
http://bbs.kldp.org/viewtopic.php?t=349
첫번째 궁금한점은 .
1-on-1 커널 쓰레드 방식인 glibc내의 LinuxThreads가 가장 널리 쓰입니다.
여기서 glibc 내의 LinuxThread 와
제가 위 머신에서 사용한 pthread 와의 관계는 어떤지요? ...
(pthread_create 등등은 많이 써봤지만 LinuxThread는 한번도
사용해 본적이 없고 구경도 못해봐서요 ^^.. 여기서 LinuxThread는
커널 쓰레드를 말하는거 같습니다. ㅋ)
일단 제생각엔 pthread는 posix thread로 어느 머신이던지
각 운영체제가 제공하는 알맞은(?) thread 모델(커널 스레드, 사용자 스레드,
커널&사용자 조합 스래드)을 알아서(?) 선택 사용하게끔 한다 왜냐 posix
이니깐 이라고 짧게 생각하고 사용했었습니다 . ㅋ
헌데
사용자수준 쓰레드의 대표적인 것으로 GNU Pth, FreeBSD libc_r이 있고,
1:1 커널 쓰레드는 리눅스의 glibc/LinuxThreads, 윈도의 고유 쓰레드
등이 있습니다
사용자 수준의 대표적인 것으로 GNU의 pth(pthread)를 예로 들고 있어서
좀 혼란이 갑니다 ㅎ
실상 제가 혼란스러운건 제가 사용해왔던 사용하고 있는 pthread가
도대체 사용자 쓰레드인지, 아님 커널 쓰레드 인지, 사용자 & 커널 쓰레드인지
전혀 모른다는 겁니다. 그냥 통념적(?)으로 사용해왔을 뿐.
해서 이기회에 확실히 알고 넘어가고 싶은 작은 소망이 있습니다.
여러분의 고견 부탁드리겠습니다.
단 거져 먹을려는 심보는 아님니다.
책도 봐가면서 bbs 글들도 몇번 읽어봤습니다.
이 글을 통해 혼란한 머릿속을 정리하고픈 맘에 글을 올려봅니다.
다들 수고하세요 ㅋ
GNU pth하고 pthread하고 다른 물건입니다.
GNU pth하고 pthread하고 다른 물건입니다.
Life rushes on, we are distracted
그냥 제가 아는 바로는 리눅스 커널에서는 쓰레드를 지원하지 않고 pthr
그냥 제가 아는 바로는 리눅스 커널에서는 쓰레드를 지원하지 않고 pthread에서 clone이라는 시스템콜을 이용해서 구현하는 걸로 알고 있습니다.
glibc/linuxthreads = pthread 인것 같습니다.
pthread 자체가 wrapper 이고 리눅스의 pthread와 sun의 pthread가 옵션을 달리해 주면 동작이 완전히 다른걸로 알고 있습니다.
리눅스의 pthread는 커널 모드 쓰레드이고,
GNU pth는 유저 모드 쓰레드라고 알고 있습니다.
그러나 리눅스의 pthread는 posix를 완벽하게 지원하지 않아 새로 nptl 이 나온걸로 알고 있구요..
[quote]그냥 제가 아는 바로는 리눅스 커널에서는 쓰레드를 지원하
저도 그렇게 알고 있는데요?
지금 사용하고 있는 linux 머신은 쓰레드 여러개를 가지고 있는
프로세스를 ps -ef 해보면 Unix(solaris)와 같이
한개의 프로세스만 뜹니다.
하지만 여전에 사용하던건 clone 을 사용하기에
쓰레드 갯수만 큼 ps -ef 결과가 떴었거던요? ㅋ
“바람에게도 길은 있다. 나는 비로소 나의 길을 가느니. 길은 언제나 어디에나 있다.”
음......그렇다면.. 응용 프로그래머인 저로선...이
음......
그렇다면.. 응용 프로그래머인 저로선...
이게 사용자 스레드다 아님 커널 스레드다
알필요 없이 pthread 가 제공하는 공통
thread api 만 사용하면 될거 같지만...
아.. 그리고
위 테스트는 여러개의 쓰레드가 활성화 되있는 상태에서
ps -ef 한거라
예전 버전하곤 차이가 있지 않을까요?
“바람에게도 길은 있다. 나는 비로소 나의 길을 가느니. 길은 언제나 어디에나 있다.”
[quote="하하"]음......그렇다면.. 응용 프로그래머인
먼가 찾고 쓰고 한다는게 귀찮은 요즘인지라 썼다가
왠지 부정확한 말만 쓴거 같아 지웠는데 그새 보신 보양이네요.. :oops:
아마 2.4가 되고 nptl인지 먼지 그런 것들이 패치되고 하면서
ps 결과도 바뀌었고 스레드의 구현도 많이 달라진 걸로 알고 있습니다.
저도 kldp bbs 에서 많이 배웠기에 한번 검색을 해 보시면
많은 이야기들이 있을것 같네요.. :)
댓글 달기