inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 쉽게 배우는 운영체제

프로세스 상태에 관하여

해결된 질문

388

작성자 없음

작성한 질문수 0

1

안녕하세요.

강의 학습 + 커뮤니티 질문 읽어보다가 궁금한 내용이 있어 올리게 되었습니다.

보조기억장치 (ex. HDD) 에 저장된 프로그램이 메모리에 적재되어 커널 영역에 PCB가 생성되면서 프로세스가 되고 커널 스레드가 1개 이상 생성되는 걸로 알게 되었는데요.

Java의 JVM이나 Nginx 등 Linux 에서 "ps -ef" 커맨드로 찍어보니 커널 스레드가 여러 개 생성되어 있는 경우에 궁금한 게 하나 있습니다.

해당 강의 질문 중에 멀티 스레드 모델에 관한 감자님의 답변을 읽어보니 User-Level Thread, Kernel-Level Thread, Multi-Level Thread (Combined) 있다고 답변하셨는데

User-Level Thread는 커널 스레드 1개와 다수의 유저 스레드가 연결되어 사용되어 한 개의 스레드가 입출력 I/O로 Block 되면 다른 유저 스레드도 Block이 되어 프로세스 상태가 대기 상태로 바뀌고 해당 프로세스 PCB가 대기 큐로 이동하는 걸로 이해했습니다.

User-Level Thread를 제외한 Kernel-Level, Multi-Level Thread에서는 커널 스레드 1개가 입출력 I/O로 Block 되어도 다른 커널 스레드로 사용자 스레드가 연결되어 모든 스레드가 Block 되지 않는다. --> 여기에서 그럼 입출력 I/O로 특정 커널 스레드가 Block 되면 입출력 대기 큐에 해당 프로세스 PCB가 있고 Block 되지 않은 커널 스레드도 있으니 실행을 마치면 준비 큐에도 해당 프로세스가 PCB가 중복으로 있다고 이해해야 할까요?

질문을 조금 어렵게 해서 죄송합니다...

 

 

운영체제

답변 2

1

super_dev

삭제된 글입니다

1

감자

찾아보신 정보가 맞습니다!

정확해서 더 드릴 말씀이 없네요 ㅎㅎ

멋지십니다. 👍

0

감자

안녕하세요 akgkfk3님!
스레드에 관해서 궁금증이 생기셨나보군요 ㅎㅎ
이 글을 읽어보셨다고 생각하고 설명드리겠습니다!

링크에서 말한 JVM의 스레드 모델은 One to One, Many to One, Many to Many이 있습니다.
여기서 One to One 모델은 유저 스레드와 커널 스레드가 1:1 매핑되므로 따로 설명이 필요 없을 것 같고
Many to One은 다수의 유저 스레드가 하나의 커널 스레드에 매핑되므로 하나의 유저 스레드가 Block 되면 나머지 모든 스레드가 Block 된다는 문제가 있습니다.

저는 akgkfk3님 질문의 마지막 문단에서 Many to Many를 말씀하신걸로 이해했습니다.
Many to Many 모델은 여러 사용자 스레드가 여러 커널 스레드와 매핑됩니다.
여기서
여기에서 그럼 입출력 I/O로 특정 커널 스레드가 Block 되면 입출력 대기 큐에 해당 프로세스 PCB가 있고 Block 되지 않은 커널 스레드도 있으니 실행을 마치면 준비 큐에도 해당 프로세스가 PCB가 중복으로 있다고 이해해야 할까요?
라는 질문이 나올 수 있는데


오라클 문서에 따르면 Many to Many 모델에서 커널은 활성화된 스레드만 관리한다고 합니다.
커널 스레드는 운영체제가 관리하므로 PCB가 대기 큐와 준비 큐에 동시에 존재하는 일은 없습니다.
다만 JVM 내부에서 적절하게 사용자 스레드와 커널 스레드를 매핑했으므로 하나의 유저 스레드로 인해 어떤 커널 스레드가 Block이 됐을 때 또 다른 유저 스레드는 Block되지 않은 다른 커널 스레드를 이용하는 방식으로 성능을 향상시킨 것 같습니다!

궁금증이 해결되셨나요? 😊

여러 의문점

1

65

1

CPU 스케줄링 RR 강의 2:54에서 질문 있습니다.

1

60

2

CPU Bound Process와 sleep, yield에 대해

1

63

1

커널과 인터페이스 개념

1

65

2

exit() 함수

0

156

2

LRU 관련 질문

1

185

2

고정 분할 방식도 연속 할당으로 알고 있는데 애니메이션이 다소 헷갈립니다.

0

116

2

Swapping, Manual Overlay, Dynamic Loading, Dynamic Linking의 개념이 헷갈립니다

0

151

2

각 메모리의 최대 요구 CPU 리소스는 어떻게 아나요?

1

168

2

PCB들이 연결리스트로 저장되는 이유가 뭔가요?

1

130

2

IPC 방식 중 매개체가 파일과 메모리일 때 할당되는 용량의 차이

0

119

2

고정 분할 방식에 질문입니다

0

120

2

세마포어에 관련해 질문입니다

1

144

2

IPC 통신 중 파일을 이용한 방법이 정확히 어떤 건가요?

0

155

1

공유자원과 동기화 문제에 관해서 질문이 있습니다.

0

154

2

FIFO 알고리즘에 대해서 질문이 있습니다.

1

128

2

멀티프로그래밍, 멀티 태스킹, 멀티 프로세싱

1

164

1

새로 올라온 영상에서 스와핑 언급이 빠졌는데

1

82

2

유니프로그래밍과 멀티프로세싱이 어떻게 공존할 수 있는 건가요?

3

173

2

인터럽트에 대해 질문 드립니다.

1

94

2

수업 노트 설명에 대해 이해가 안가는 부분이 있어 질문 드립니다.

0

117

2

3:59초에 대해서 궁금해요!

0

121

2

실무적으로 궁금한게 있습니다ㅠ

0

98

1

완강을 해보니 오히려 더 궁금한게 많아지네요

1

169

2