- device controller : 각 device가 갖고 있는 일종의 cpu이다.
- local buffer : 각 device가 갖고 있는 일종의 메모리이다.
- mode bit : 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 OS에 피해가 가지 않도록 하는 일종의 보호장치이다.
- 1 사용자 모드 : 사용자의 프로그램을 실행한다.
- 0 모니터 모드 : OS 코드를 수행한다. 커널 모드, 시스템 모드라고도 한다.
- 보안을 해칠 수 있는 특수 명령은 모니터 모드에서만 실행할 수 있는데 이를 특권 명령이라고 한다.
- 인터럽트가 발생시 하드웨어가 mode bit을 0으로 바꾸고, 사용자 프로그램에게 CPU를 넘기기 전엔 mode bit을 1로 세팅한다.
- 위험한 명령인데 mode bit가 1이다? 불손한 명령으로 여기고 OS에 cpu를 넘긴다.
- PC : Program Counter. 다음번에 실행할 레지스터의 메모리 주소를 가지고 있다.
- ex) 사용자 프로그램 A를 가리키고 있다면 A를 실행중이라는 의미이다.
- timer : 일정 시간 간격으로 인터럽트를 발생한다. os가 프로그램에 cpu를 넘겨줄 때 타이머를 세팅한다. os가 cpu를 독점중인 프로그램에게서 cpu를 혼자서는 가져올 수 없기 때문에 사용한다. time sharing을 구현하기 위해 널리 사용된다.
- 시스템콜 : 사용자 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출하는 것을 말한다.
🍉 인터럽트
인터럽트 당한 시점의 레지으터와 PC를 저장한 후 CPU의 제어를 인터럽트 제어 루틴에 넘긴다.
- 일반적으로 인터럽트는 하드웨어 인터럽트를 일컫는다.
- 소프트웨어 인터럽트는 Trap이라고 한다.
- Exception : 프로그램이 오류를 범한 경우이다.
- System call : 프로그램이 커널 함수를 호출한 경우이다.
- OS는 인터럽트에 의해 동작한다.
🍉 동기식 입출력과 비동기식 입출력
🥥 동기식 입출력
- I/O 요청 후 입출력 작업이 완료된 후에야 프로그램에 제어가 넘어간다.
- 구현방법 1
- I/O가 끝날 때까지 CPU를 낭비시킨다.
- 매시점 하나의 I/O만 일어날 수 있다.
- 구현방법 2
- I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗는다.
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세운다.
- 다른 프로그램에게 CPU를 준다.
🥥 비동기식 입출력
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어간다.
🍉 DMA
Direct Memory Access. CPU의 중재 없이 device controller가 device의 buffer storage 내용을 메모리에 block 단위로 직접 전송한다.
- 인터럽트가 너무 자주 발생하는 것을 방지하기 위해 사용된다.
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킨다.
해당 내용은 KOCW - 이화여대 반효경 교수님의 강의 내용을 정리한 것입니다.
출처 : http://www.kocw.or.kr/home/cview.do?cid=4b9cd4c7178db077