I/O 인터럽트 및 이중 모드
-듀얼 모드
모드 비트를 통해 CPU의 제어 권한을 제어하면서 운영 체제와 같은 장치를 보호하는 기술
프로세스 실행 중에 명령어에 특권 명령어가 포함되어 있으면 시스템 호출이 호출되고 모드 비트가 -0으로 변경되어 실행됩니다.
-시스템 호출
간단히 말해, 프로세스는 운영 체제에 권한이 있는 명령을 대신 실행하도록 요청합니다.
– 소프트웨어 인터럽트(트랩)에 포함된 시스템 호출.
– 모드 비트: 0
– 커널 모드(CPU 제어가 운영 체제로 이양됨)
– 권한 있는 명령을 실행할 수 있습니다.
– 하드웨어 조작
– 방해 끄기
– 타이머 설정
-컨텍스트 스위칭
….
– 시스템 콜이 종료되면 모드 비트를 1로 변경
– 모드 비트: 1
– 사용자 모드(사용자가 CPU 제어권을 가짐)
– 사용자가 원하는 프로그램 실행 가능
– 다만, 그 과정 내에서 특권적인 지시가 있는 경우
변경 모드 비트 0(커널 모드)
-방해하다
– 프로세스 실행 중 긴급 상황이 발생한 경우
현재 실행 중인 프로세스 중지
– 유형
– 외부 인터럽트(정전 등)
– 기계 오류 인터럽트
– I/O 중단
– 프로그램 테스트 중단(소프트웨어 중단)
– 예외: 메모리에 있는 프로그램이 승인되지 않은 명령을 실행하려고 할 때 예외
– SVC 인터럽트(제어 프로그램이 요청하는 경우)
– 안건
– 인터럽트 서비스 루틴: 특정 인터럽트 발생 시 인터럽트를 처리하는 프로그램
– 인터럽트 벡터: 메모리에 저장된 인터럽트 서비스 루틴이 저장된 위치를 저장
– 인터럽트 라인: 인터럽트 발생 시 인터럽트 라인을 설정합니다. CPU는 설정된 것을 확인하고 인터럽트를 처리합니다.
– 절차
– 인터럽트가 발생하면 현재 실행 중인 프로세스를 일시 중지합니다.
– 프로세스 컨텍스트 저장
– 인터럽트 벡터를 통해 인터럽트 서비스 루틴에 저장된 주소 이동
– 인터럽트 서비스 루틴 실행
– 프로세스 상태를 복원하고 다시 실행
– 디스크 I/O 중단
– 프로세스 A가 디스크 데이터를 검색하려고 할 때 시스템 호출이 호출됩니다.
– 하드웨어에 대한 액세스는 시스템 호출에 포함됩니다.
– 변경 모드 비트 = 0, OS는 장치 드라이버를 통해 DISK에서 장치 컨트롤러로 작업 처리를 요청합니다.
– 장치 드라이버: 운영 체제에 소프트웨어로 존재하며 운영 체제와 장치 간의 인터페이스 역할을 합니다.
– 디바이스 컨트롤러: 각 디바이스의 하드웨어로 존재, 디바이스 내부의 작은 CPU
– 요청을 받은 디바이스 컨트롤러가 처리하는 동안 모드 비트 = 1이 변경되고 준비 상태에서 대기열에 있던 프로세스 B가 실행됩니다.
– 작업을 완료한 장치는 버스를 통해 인터럽트 라인을 설정합니다.
– CPU는 인터럽트 라인이 설정되었는지 확인한 후 프로세스 B를 인터럽트하고 모드 비트 = 0으로 변경합니다.
– 인터럽트 벡터를 통한 인터럽트 서비스 루틴 실행
– 인터럽트 처리 완료, 모드 비트가 1로 변경, 프로세스 A도 실행 중


