작성
·
18
·
수정됨
1
이전 프로세스 상태 파트에서, Suspend는 Ready 나 Block 상태에서 가능하다고 배웠는데요!
중기 스케줄러에 보시면 "실행 중인 프로세스를 메모리에서 디스크로 이동(Swap out)하거나 디스크에서 다시 메모리로 복구함" 이라고 나와있습니다.
실행 중인 프로세스는 실행 데이터가 메모리에 적재되고 CPU 자원을 할당받은 상태 아닌가요..?
답변 2
0
PrivilegeEscalate님 안녕하세요!
네, 말씀하신 대로 Suspend는 Ready나 Blocked 상태에서만 가능합니다.
제가 슬라이드에서 "실행 중인 프로세스"라고 표현한 것이 오해가 생겼네요.
컴퓨터가 여러 개의 프로그램을 동시에 실행할 수 있는 이유는 CPU가 매우 짧은 시간 단위로 프로세스들을 번갈아가며 실행(문맥 교환)하기 때문입니다. 실제로는 한 번에 하나의 프로세스만 CPU를 사용하지만(Running 상태), 너무 빠르게 전환되기 때문에 사용자는 여러 프로그램이 동시에 실행되는 것처럼 느끼게 됩니다. (*2장 하드웨어 수행과정, 4장 CPU 스케줄링에서 관련 내용이 나옵니다)
우리가 메모장을 켜도 그 프로그램은 CPU를 계속 점유하는게 아니라 Ready, Running, Blocked 상태를 오가며 수행되지만, 우리 입장에서는 분명히 "실행 중"으로 인식됩니다.
중기 스케줄러는 이러한 메모리에 올라와 실행 흐름 안에 있는 프로세스들 중,
우선순위가 낮거나 메모리 확보가 필요한 경우 해당 프로세스를 디스크로 swap out하는 역할을 합니다.
정리하면,
PrivilegeEscalate님이 이해하신 내용에서 틀린 건 없었지만
자료의 "실행 중인"이라는 말이 Running 상태로 한정된 것이 아니라,
메모리에 올라와 실행 사이클을 도는 좀 더 넓은 범위를 가리키다 보니
충분히 오해의 여지가 있었던 것 같습니다.
그럼, 언제나 편하게 질문주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. PrivilegeEscalate님.
질문해주신 내용은 운영체제에서 프로세스 상태 변화와 중기 스케줄러의 역할에 대한 부분으로 보입니다. Suspend 상태로의 전환은 보통 “Ready” 또는 “Blocked” 상태의 프로세스에서 발생하는 것이 일반적입니다. 이는 프로세스를 일시적으로 디스크로 이동시켜 메모리 자원을 절약하고, 나중에 다시 복구하여 메모리에 로드하기 위한 것입니다.
프로세스가 “Running” 상태에 있는 동안에 중기 스케줄러에 의해 즉시 Suspend 상태로 이동하지 않습니다. 일반적으로 프로세스가 CPU 사용을 멈추고 “Blocked” 또는 “Ready” 상태에 있을 때, 이를 디스크로 옮기는 작업이 이루어집니다. 이는 운영체제의 자원 관리를 위해 필요하며, 메모리를 비우고 우선순위가 높은 작업을 수행할 수 있도록 준비시키기 위한 전략입니다.
관련해서 더 자세한 설명을 알고 싶으시다면, 다음의 관련된 질문을 참고하실 수 있습니다:
- 컴퓨터 구성요소 시스템 버스 사진: 이 질문에서는 시스템 자원 흐름에 대한 중요한 개념과 관련하여 설명되어 있습니다. 이를 통해 메모리 및 CPU 자원 관리의 중요성을 이해할 수 있습니다.
제가 제공한 설명이 도움이 되길 바라며, 추가적인 질문이 있거나 궁금하신 점이 있다면 언제든지 질문해 주세요. 지식공유자께서 곧 추가적인 답변을 제공해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아..!! 사용자 관점에서의 "실행중" 이었군요. 덕분에 이해했습니다. 감사합니다.