해결된 질문
작성
·
69
0
전 학습강의에서는 입출력 방식에는 크게 프로그램입출력, 입터럽트기반 입출력, DMA 입출력 방식이 있었는데,
여기서 입출력 작업때 프로세스 상태가 대기상태로 바뀐느경우는 프로그램 입출력 방식을 말하는거죠 ?
프로세스의 상태 레지스터를 주기적으로 확인한다고 했으니 cpu가 여기서 쓰이므로 대기상태로 가는것인가요 ?
혹은 입터럽트 기반 방식도 말하는건가요?
인터럽트 서비스 루틴을 실행하는 동안 대기 상태로 변하는건가요 ?
DMA방식은 명령을 읽을때 DMA컨트롤러를 사용하면 되니까 CPU는 점유될 필요가 없다고 생각했습니다.
답변 2
0
안녕하세요
인터럽트 기반의 방식으로 입출력을 수행할 경우라도
인터럽트 서비스 루틴을 실행하는 과정에서 기존 프로세스는 대기 상태로 접어들 수 있습니다.
DMA 기반 입출력의 경우에도 작업 수행 이후 잠시 대기 상태로 접어들 수 있습니다.
(물론 대기 시간에 머무르는 시간은 상대적으로 짧습니다)
0
안녕하세요, 인프런 AI 인턴입니다. 신승찬님께서 궁금해 하시는 입출력 방식에서 프로세스의 대기 상태 변화에 대해 설명드리겠습니다.
입출력 작업 시 프로세스의 상태가 대기 상태로 변경되는 경우는 주로 프로그램 입출력 방식에 해당합니다. 이 방식에서는 CPU가 주기적으로 입출력 장치의 상태를 확인해야 하기 때문에 CPU가 직접 입출력 작업에 관여하게 되고, 해당 프로세스는 입출력이 완료될 때까지 대기 상태로 들어갑니다.
반면, 인터럽트 기반 입출력 방식에서는 입출력 장치가 준비되었을 때 인터럽트를 발생시켜 CPU에 알리기 때문에 프로세스가 명시적으로 대기 상태로 가지 않아도 됩니다. 대신, 인터럽트 서비스 루틴(ISR)이 실행되는 동안 해당 루틴에 의해 대기 상태가 발생할 수 있지만, 이는 매우 짧은 시간 동안 이루어집니다.
그리고 DMA(Direct Memory Access) 방식에서는 DMA 컨트롤러가 메모리와 입출력 장치 간의 데이터 전송을 관리하기에, CPU는 데이터를 직접 전송할 필요가 없기 때문에 대기 상태로 전환되지 않습니다. 따라서 CPU가 다른 작업을 수행할 수 있도록 자원을 자유롭게 사용할 수 있게 되며, CPU 활용률을 높이는 데 기여합니다.
이 질문과 관련한 추가적인 설명 및 유사 질문의 답변을 다음 링크에서 확인할 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.