리눅스에서 Thread 처리?
글쓴이: 정인철 / 작성시간: 목, 2005/08/11 - 4:37오후
자바프로그램에서 쓰레드를 계속 생성할때 궁금한점입니다.
리눅스에서는 쓰레드를 프로세스처럼 처리하는지요?
자바 쓰레드 프로그램을 실행하면 ps -ef 결과가 다음과 같습니다.
xxx 3691 1 0 16:21 pts/1 00:00:00 java -classpath .:Instance
xxx 3693 3691 0 16:21 pts/1 00:00:00 java -classpath .:Instance
xxx 3694 3693 0 16:21 pts/1 00:00:00 java -classpath .:Instance
xxx 3695 3693 0 16:21 pts/1 00:00:00 java -classpath .:Instance
xxx 3696 3693 0 16:21 pts/1 00:00:00 java -classpath .:Instance
원래 맨위의 하나만 띄어져아하는데요...
리눅스는
Linux webserver 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown
와 같습니다.
어디선가 들은 기억으로는 리눅스에서는 쓰레드를 프로세스처럼 관리한다고 들은거 같아서요..
잘못들은 걸 수도 있거든요.ㅠㅠ
혹시 설명해주실수 있을까요?
Forums:
링크가 /lib/tls 로 되어 있는 듯 싶네요..환경 옵션에
링크가 /lib/tls 로 되어 있는 듯 싶네요..
환경 옵션에
export THREADS_FLAG=native
로 세팅 되어 있으면 위와 같이 그렇게 실행 됩니다.
리눅스 pthread 라이브러리가 초창기에는 쓰레드가 프로세스 처럼 보이게 됐었고, 레드햇 9 부터는 진짜 쓰레드 형태로 바뀌었지요. 정확한지 모르겠지만, 커널 버전에 따라서 달라집니다.
https://github.com/la9527
[quote="la9527"]리눅스 pthread 라이브러리가 초창기에는
리눅스의 쓰레드는 값싼(?) 프로세스 기반으로 만들어졌기 때문에 그렇게 보이는 것이 맞습니다. 리눅스에서 프로세스 만드는 것은 전통적인UNIX에서 프로세스 만드는 것보다 가볍습니다. 레드햇 9 에서 하나로 보이는 것은 ps 명령이 스마트하게 안보여주기 때문이며, RH9에서도
ps -m
으로 보면 이전처럼 보입니다.
---
http://coolengineer.com
유닉스에서는 쓰레드의 집합을 프로세스라고 정의하는 반면에리눅스에서
유닉스에서는 쓰레드의 집합을 프로세스라고 정의하는 반면에
리눅스에서는 쓰레드와 프로세스를 같은 위치에 놓고 정의하더군요.
덕분에 리눅스 쓰레드가 피쓰레드하고 약간은 다릅니다.
하지만 역시 표준은 pthread 이구요..
클론을 사용했다면 처음에는 쓰레드로 동작하다가
필요에 의해서 프로세스로 변경되는 과정도 있습니다.
댓글 달기