시스템 콜, DMA를 이용한 인터럽트 컨트롤

시스템 콜

응용 프로그램이 IO장치에 접근 (ex: 파일을 디스크에서 읽어오려고 할 때)하려고 할 때, IO장치에 접근하는 명령어는 특권명령어로 응용프로그램은 해당 명령어를 실행시킬 수 없다. 때문에 응용 프로그램은 이런 작업을 인터럽트를 발생시켜 OS에게 CPU 사용권을 넘김으로써 이를 수행하는데, 이렇게 응용 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것을 시스템 콜이라 한다.

이렇게 소프트웨어가 인터럽트를 발생시키는 것을 소프트웨어 인터럽트(Trap)라 하고, IO 장치가 인터럽트를 발생 시키는 것을 하드웨어 인터럽트라 한다. 보통 인터럽트라 하면 하드웨어 인터럽트를 말하는 것이 일반적.

Device Controller/ Device driver

IO장치의 연산을 작동을 담당하는 연산장치 또는 CPU. 각 IO 장치마다 달려 있다.

OS가 각 장치에게 요청을 보낼때보낼 때 사용하는 소프트웨어. IO 장치가 사용하는 명령어가 아니라 IO 장치를 사용하는 OS가 IO 장치에게 요청을 보낼 때 사용하는 명령어.

인터럽트 / 인터럽트 루틴

인터럽트 당한 시점에서 OS는 메모리에 인터럽트 당한 시점의 레지스터와 Program counter 값을 저장 한 후, 인터럽트 종류에 따라 종류별 인터럽트 루틴에 따라 인터럽트를 처리. 커널 함수로 정의되어있음

동기식, 비동기식 입출력

동기식 입출력

IO 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감

비동기식 입출력

IO가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

DMA (Direct Memory Access)

인터럽트가 자주발생으로 인한 문제를 막기 위한 장치. 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용된다.

  • 기존 IO 인터럽트 발생 시 처리 프로세스
    • CPU 인터럽트 확인 → 현재 작업 중이던 프로세스 정보 저장 및 중단→ ISR(인터럽트 처리 루틴 실행) → CPU가 각 IO의 버퍼에서 데이터 메모리 공간에 복사 → 재실행
    • 이 과정이 매우 짧은 시간 동안 여러 번 발생한다면 성능 하락 이를 위해 DMA를 사용
  • DMA를 이용한 처리 프로세스
    • IO 장치는 자신의 버퍼에 작업한 내용 저장 → 일정 크기 이상이 되었을 때, DMA가 메모리에다가 버퍼의 내용을 복사 → 인터럽트 발생

'운영체제' 카테고리의 다른 글

운영체제 개요  (0) 2023.11.12