top나 htop으로 PID를 확인해보면 프로세스 내에서 생성한 쓰레드도 별도의 PID값을 가집니다.
그래서 그동안 쓰레드도 별도의 프로세스처럼 동작하는구나 하고 생각을 해왔는데
getpid()함수를 쓰레드함수내에서 호출하니 쓰레드를 생성한 프로세스의 pid를 리턴하더군요. 제가 하려고 했던것은 쓰레드 함수에서 그 쓰레드의 우선순의를 변경하려고 했던건데 이것때문에 삽질을 하다가 질문드립니다.
쓰레드에서 쓰레드ID를 얻는법이랑 htop이나 top에서는 PID가 쓰레드도 모두 각각의 PID를 갖는데 왜 getpid()는 프로세스의 값을 리턴하는지에대해 답변좀 부탁드립니다
mac(mac studio 2022)에서 터미널로 리눅스 워크스테이션(Dell 타워형)에 연결해서 작업을 오래동안 해오고 있는데요,
사내 네트워크 환경이 슬슬 안좋아져서 그런지 언제부턴가 터미널로 작업할 때 특히 그래픽 띄워서 하는 작업이 지장을 많이 받네요.
뭔가 두 컴을 좀 더 빠르게 연결하는 방법이 있을까요?
1. 지금은 맥은 사내 와이파이, 워크스테이션은 랜선으로 연결해서 사용중인데요, 좋은(?) 허브를 사서 그 허브에 두 컴을 연결하여 쓰는 방법만으로도 효과가 있을까요?
2. 아예 내부망을 만들면 될까요? (구성의 번거로움?)
3. 터미널로 접속하는 가장 가볍다고 생각하는 방법을 쓰고 있는데 소프트웨어적으로 더 빠른 방법이 있나요?
4. 아님 물리적으로 가장 확실한(!) 컴터 나란히 두 대 놓고 쓰시는 분도 계시나요? 뭔가 책상이 거추장스러울거 같고..또 한개의 키보드/마우스로 모든 걸 통제하는 걸 좋아하기도해서..
리눅스에서 디폴트 스케쥴링 정책은 그냥 라운드로빈 방식(SCHED_OTHER)으로 알고 있습니다.
그리고 그 방식위에서 우선순위를 높이거나 줄이려면 nice 값을 낮추거나 높이면 되는걸로 알고 있습니다.
그런데 제가 쓰레드를 여러개 만들어서 돌릴때 각각의 쓰레드의 스케쥴링 정책을 예를 들어 pthread_setschedparam 함수를 사용하여 SCHED_FIFO에 우선순위를 49로 주었다 치면 htop으로 해당 프로세스 확인시 PRI 는 -50으로 나오고 NI는 0으로 나옵니다.
제가 헷갈리는 것은 다른 여러 프로세스들은 디폴트스케쥴링인 SCHED_OTHER로 동작하는데 특정 프로세스와 쓰레드들만 SCHED_FIFIO로 하는게 가능한것인지.....그렇다면 리눅스커널스케쥴러는 다른 프로세스나 스레드는 RR로 돌리면서 SCHED_FIFO로 세팅한 프로세스와 스레드는 최우선적으로 cpu할당하는것인지 문의드립니다.