쓰레드 상태 관련 질문입니다.
3
11 asked
안녕하세요, 강사님.
Sleep()은 일정 시간 동안 Suspend시켰다가 시간이 지나면 자동으로 Resume되어 Run 상태로 전환되는 것이라고 하셨는데요. (Sleep() 함수 강의 3:30)
OS를 배울 때, Suspend랑 Sleep(Waiting)을 구분하셨던걸로 기억해서 이 점이 궁금합니다.
Suspend는 다른 외부요인에 의해 중지당한 것이고, Sleep은 자발적으로 자기자신이 중단을 하는 것이라고 배웠습니다.
이 강의에서는 Suspend를 문자 뜻 그대로 '중단'의 의미(Waiting과 Suspended 둘 다 묶어서)로 사용하신 걸까요?
쓰레드의 상태는 Running, Suspended, Terminated가 있다고 하셨는데 Waiting이나 New같은 상태는 크게 고려하지 않아도 되는 걸까요?
요즘 강사님 강의 덕분에 OS나 시스템 프로그래밍에 흥미를 가지고 너무 재밌게 공부하고 있습니다.
답변 기다리겠습니다!
감사합니다.
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
지이스님, Sleep()과 Suspend의 차이 및 스레드 상태 분류에 관한 질문에는 아래 기존 답변이 가장 유사합니다.
운영체제 스레드 공부 중 궁금한 점 있습니다.
기존 답변에서는 Sleep()을 호출한 스레드가 일정 시간 동안 실행 대기에서 제외되었다가, 시간이 지나면 다시 실행 대기 상태가 된다고 설명하고 있습니다. 따라서 엄밀하게 구분하면 다음과 같이 이해할 수 있습니다.
- Sleep: 스레드가 스스로 일정 시간 동안 실행을 포기하는 상태입니다. 시간이 지나면 다시 실행 가능한 상태가 됩니다.
- Waiting: 입출력 완료, 이벤트, 다른 스레드의 신호 등 특정 조건을 기다리는 상태입니다.
- Suspended: 외부에서 스레드의 실행을 중지시킨 상태를 의미하는 경우가 많습니다.
- 강의에서
Suspend라는 표현을 넓은 의미의 “일시 중단”으로 사용했다면,Sleep과Waiting까지 포함해 설명한 것으로 볼 수 있습니다. 다만 운영체제 개념을 엄밀하게 구분할 때는Sleep/Waiting과Suspended를 별개의 상태로 보는 것이 적절합니다.
스레드 상태는 운영체제나 강의에서 사용하는 모델에 따라 다르게 분류할 수 있습니다. Running, Ready, Waiting, Suspended, Terminated, New 등을 모두 구분하는 모델도 있고, 설명을 단순화하기 위해 Running, Suspended, Terminated처럼 대표적인 상태만 사용하는 경우도 있습니다. 따라서 강의의 세 가지 상태는 전체 상태를 생략한 단순화된 모델로 이해하시면 됩니다.
참고로 질문에 포함된 강의 화면과 관련된 이미지는 다음과 같습니다.

원본 질문: 운영체제 스레드 공부 중 궁금한 점 있습니다.
추가로 Sleep()이 스레드의 실행을 잠시 멈추고 다시 실행 대기 상태로 돌아오는 과정은 다음 게시물에서도 확인할 수 있습니다.
36강 SpinLock 부분 질문
이 게시물에서는 TIMED_WAITING 상태가 BLOCKED와 다르며, 일정 시간이 지나면 다시 RUNNABLE 상태가 될 수 있다는 점을 설명하고 있습니다. 즉, Sleep()은 영구적으로 중지되는 Suspended라기보다는 일정 조건이나 시간이 지나면 다시 실행될 수 있는 대기 상태로 이해하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
DACL 질문
0
20
1
DLL 제작자가 PDB도 같이 제공해야 한다는 설명에 질문
0
26
2
세마포어 개수에 따른 스레드 점유상태
0
123
2
메모리 맵과 비동기 입/출력 조합 #2 수업내용에 질문있습니다.
0
148
2
힙 메모리 블럭 관리 방법 질문
0
159
2
MapViewOfFile 원리 관련 질문있습니다
0
163
1
가상 메모리 시스템 영역 구분
0
159
2
스택 크기 결정 단계
0
121
2
시스템프로그래밍-응용편
0
179
2
바이트와 관련된 유튜브 영상을 못 찾겠어요ㅠㅠ
0
138
2
파일 복사에 관한 질문입니다
0
165
2
세마포어 예제에 대한 질문이 있습니다.
0
163
2
메모장 쓰레기값 ?
0
197
2
64 bit 운영체제라면 가상메모리가
0
225
2
alertable Wait 상태 질문있습니다
0
268
1
GetCurrentDirectory 관련 질문
0
226
2
세마포어 예제중 형변환에 대한 질문
0
205
2
강사님 dll 지연로딩 관련하여 질문 드립니다
0
241
3
선장님 , _beginThreadEx() 함수 원리는 어디서 정보를 얻을 수 있을까요?
0
348
2
메모리 맵 강의 예제의 결과가 이상합니다.
0
269
1
강사님 파일입출력(Callback함수)와 관련하여 질문 드립니다.
0
398
2
dll 명시적 링크 오류 (원인 및 해결 방법이 필요 합니다)
0
1132
2
static 영역의 rw 가능한 곳은 어떤 데이터가 담기는지 궁금합니다.
0
265
1
TerminanteProcess 와 관련하여 질문 드립니다.
0
200
1

