강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

summerender님의 프로필 이미지
summerender

작성한 질문수

[CS 기술면접 2] 말이 트이는 운영체제

하드웨어 수행 과정 - CPU 연산과 I/O 연산, 인터럽트, 사용자 모드와 커널 모드, 시스템 콜 용어 정리

입출력 명령을 위한 인터럽트 발생

작성

·

15

1

하드웨어 수행 과정 - CPU 연산과 I/O 연산, 인터럽트, 사용자 모드와 커널모드, 시스템 콜 용어 정리

수강 중입니다.

p.10 의 프로그램 수행 과정 내용에서

 

프로그램 A 가 입출력 명령을 지시했을 때, 프로세스 A 가 직접 인터럽트를 발생시킨다는 부분의 내용이 잘 이해가 가지 않습니다.

프로그램 A 에서 입출력과 관련한 명령이 존재하는 경우 프로세스 A 에서 시스템 콜을 실행(트랩)하고, 프로세스 A 가 커널 모드로 변경되어 실제 I/O 명령이 입출력 블로킹으로 수행되므로 이 때 CPU 제어권이 프로그램 B 에게 넘어가야 하는 것 아닌가요?

이후 I/O 명령이 완료되는 경우 인터럽트가 발생하는 흐름은 동일하게 동작하는 것으로 이해했는데

2,3번 수행 과정이 제가 알고 있는 내용과는 일치하지 않는 것 같아서 질문 드립니다.

답변 2

0

이용준님의 프로필 이미지
이용준
지식공유자

안녕하세요, summerender님.

말씀하신 대로 시스템 콜은 넓게 보면 소프트웨어 인터럽트에 속하지만, 물리적인 인터럽트 라인이 세팅되는 것은 아닙니다. 혼동을 피하기 위해 다음과 같이 자료를 수정하겠습니다.

  1. 기존: 프로세스 A는 인터럽트를 발생시킴 => CPU의 인터럽트 라인에 인터럽트가 세팅됨

  2. 수정: 프로세스 A가 시스템 콜(소프트웨어 인터럽트)을 실행함 => CPU가 이를 인지하고 모드를 커널 모드로 전환하여 운영체제에게 제어권을 넘김

정확한 동작 원리를 짚어주셔서 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

summerender님이 질문하신 프로세스 입출력 인터럽트에 대해 설명드리겠습니다. 프로세스가 입출력 작업을 수행할 경우, 일반적인 흐름은 다음과 같습니다:

  1. 시스템 콜 실행: 프로세스 A가 입출력 관련 명령을 실행하려면 시스템 콜을 통해 커널 모드로 진입해야 합니다. 이는 안전한 시스템 자원 접근을 위해 필요합니다. 이때 CPU 제어권은 커널에 의해 관리되며, 프로세스 A는 시스템 콜로 인해 잠시 대기 상태가 됩니다.

  2. 입출력 블로킹: 프로세스 A는 입출력 작업이 완료될 때까지 블로킹 상태에 머뭅니다. 이때 스케줄러는 CPU 제어권을 다른 준비된 프로세스(프로그램 B)로 전환할 수 있습니다. 즉, CPU가 다른 프로세스를 실행하게 됩니다.

  3. 인터럽트 발생 및 처리: 입출력 작업이 완료되면 하드웨어가 인터럽트를 발생시킵니다. CPU는 현재 작업을 중단하고 인터럽트를 처리하여 커널 모드로 전환합니다. 시스템은 완료된 입출력 작업을 처리하고, 결과를 프로세스 A에 알려줍니다.

summerender님이 이해하신 대로, 입출력 작업 완료 후 인터럽트가 발생하는 흐름은 정확합니다. 프로세스 A가 직접 인터럽트를 발생시키기보다는 시스템 전반에서 인터럽트를 처리하여 하드웨어와 소프트웨어 간 효율적인 동작을 보장합니다.

추가로 참고할 수 있는 링크들은 다음과 같습니다:
- 입출력 시스템과 인터럽트 처리
- 운영체제의 프로세스 관리 및 동작 방식

질문자님의 이해를 돕기 위해 기존 지식공유자님의 답변을 참고하였으며, 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

summerender님의 프로필 이미지
summerender

작성한 질문수

질문하기