KOCW > 이화여자대학교 반효경 교수님 > 운영체제 > 2. 컴퓨터시스템의 구조(3)
2. 컴퓨터시스템의 구조(3)
시스템콜(System Call)
- 모든 I/O 관련 명령은 CPU 직통이 아닌 OS를 통한 특권 권한을 필요로 함.
- 시스템콜: 사용자 프로그램이 운영체제의 서비스를 받기 위해 OS의 커널 함수를 호출하는 것
인터럽트(Interrupt)
- 인터럽트 당한 시점의 레지스터와 프로그램 카운터를 저장한 후, CPU의 제어를 인터럽트 처리 루틴에 넘긴다
- Interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트)
- Exception: 프로그램이 오류를 범한 경우
- System call: 프로그램이 커널 함수를 호출하는 경우
- 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(= Interrupt Service Routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수
Device Controller
- I/O device controller
- 해당 I/O 장치를 관리하는 일종의 작은 CPU
- 제어 정보를 위해 controller register, status register를 가짐
- local buffer를 가짐(일종의 data register)
- I/O는 실제 device와 local buffer 사이에서 일어남
- I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림
- device driver(장치구동기): CPU가 device controller에 명령을 전달하기 위한 소프트웨어
- device controller(장치제어기): 각 장치를 통제하는 작은 CPU, 하드웨어
- firmware: device controller가 장치를 제어 및 구동하기 위한 내장 소프트웨어
동기식 입출력과 비동기식 입출력
동기식 입출력(synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 방법 1
- I/O가 끝날 때까지 CPU를 낭비시킴
- 매시점 하나의 I/O만 일어날 수 있음
- 구현 방법 2
- I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세우고, 다른 프로그램에게 CPU 자원을 할당
비동기식 입출력(asynchronous I/O)
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
DMA(Direct Memory Access)
- 고속 I/O 장치로 인한 인터럽트가 너무 빈번한 경우를 방지하기 위해 사용
- CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시켜 빈도를 줄일 수 있음
서로 다른 입출력 기계어
- I/O를 수행하는 special instruction에 의해: 전담하는 기계어를 두는 방식
- Memory Mapped I/O에 의해: 메모리 주소를 매핑해서 할당하는 방식