하드웨어 수행 과정과 인터럽트
운영체제에서 프로그램이 실행될 때 CPU 연산과 I/O 연산은 어떻게 처리되고,
왜 시스템 콜과 인터럽트가 필요한지를 하드웨어 관점에서 정리한다.
CPU 연산과 I/O 연산
CPU 연산
- 데이터 처리와 계산을 담당
- 매우 빠르게 실행됨
- 주로 메모리에 저장된 데이터를 대상으로 연산 수행
I/O 연산
- 데이터 입출력을 담당 (파일 읽기/쓰기, 화면 출력, 키보드 입력 등)
- 상대적으로 속도가 느림
- 디스크, 키보드, 네트워크 카드 같은 입출력 장치와 연관됨
CPU가 느린 I/O 작업을 직접 기다리면 비효율이 발생하므로,
운영체제는 이를 효율적으로 처리하기 위한 메커니즘을 제공한다.
사용자 모드와 커널 모드
사용자 모드 (User Mode)
- 일반 애플리케이션이 실행되는 모드
- 제한된 권한만 가짐
- 하드웨어 및 시스템 자원에 직접 접근 불가
- 오류가 발생해도 운영체제 전체에는 영향을 주지 않음
커널 모드 (Kernel Mode)
- 운영체제가 실행되는 모드
- 모든 시스템 자원에 접근 가능
- 메모리 관리, 장치 제어 등 핵심 기능 수행
입출력 장치 제어는 커널 모드에서만 가능하다.
시스템 콜 (System Call)
보안이 필요한 명령은 커널 모드에서만 실행할 수 있다.
사용자 프로그램은 이러한 작업을 직접 수행할 수 없기 때문에
운영체제에게 대신 요청해야 하며, 이를 시스템 콜이라고 한다.
시스템 콜이 호출되면 CPU는 사용자 모드에서 커널 모드로 전환된다.
인터럽트 (Interrupt)
인터럽트는 CPU가 현재 실행 중인 작업을 잠시 중단하고
우선 처리해야 할 이벤트를 처리하도록 하는 메커니즘이다.
처리 완료 후 CPU는 다시 원래 작업으로 복귀한다.
인터럽트 라인
- 주변 장치가 CPU에게 인터럽트 발생을 알리기 위한 하드웨어 신호 전달 경로
- 운영체제 개념보다는 하드웨어 관점의 표현에 가깝다

CPU 제어권
CPU 제어권은 CPU가 현재 어떤 작업을 실행할지 결정하고 수행하는 권한을 의미한다.
운영체제는 스케줄러를 통해 여러 프로세스 간 CPU 제어권을 관리한다.
동기식 입출력과 비동기식 입출력
동기식 입출력
- 입출력 작업이 끝날 때까지 다음 명령을 실행하지 않음
- 입출력 요청 후 CPU 제어권을 다른 프로세스에게 넘김
비동기식 입출력
- 입출력 요청 이후에도 프로그램이 계속 실행됨
- 시스템 콜 호출 후 다시 CPU 제어권을 얻어 다음 명령 수행
프로그램 수행 과정
1. 프로그램 실행
- 디스크에 있던 프로그램 A가 메모리에 적재됨
- CPU는 사용자 모드에서 프로그램 A의 명령을 실행
2. 입출력 요청
- 프로그램 A는 입출력 장치에 직접 접근할 수 없음
- 시스템 콜을 통해 운영체제에게 입출력 요청
- CPU는 커널 모드로 전환됨

3. 운영체제의 입출력 처리
- 운영체제는 입출력 컨트롤러에게 작업을 지시
- 입출력 작업 동안 프로세스 A는 대기 상태
- CPU 제어권은 다른 프로세스에게 넘어감
4. 입출력 완료
- 입출력 컨트롤러가 하드웨어 인터럽트를 발생
- CPU는 현재 실행 중이던 프로세스를 잠시 중단
- 운영체제가 인터럽트 핸들러를 실행
5. 프로그램 재개
- 입출력 결과가 커널을 통해 프로세스 A에 전달됨
- 스케줄러에 의해 다시 CPU 제어권을 얻으면
- 프로그램 A는 중단된 지점부터 실행을 이어감
정리
- CPU 연산과 I/O 연산의 속도 차이로 인해 인터럽트가 필요하다.
- 사용자 프로그램은 시스템 콜을 통해서만 커널 기능을 요청할 수 있다.
- 인터럽트는 CPU가 효율적으로 여러 작업을 처리하도록 돕는 핵심 메커니즘이다.