이번 글은 이화여자대학교 반효경 교수님의 강의와 Abraham Silberschatz의「Operating Syetems Concepts」를 바탕으로 작성했음을 밝힙니다.
2장의 내용은 운영체제에 대한 내용을 들어가기 앞서, 컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지, 그 다음에 프로그램들이 이러한 하드웨어 위에서 어떻게 돌아가는지에 대한 내용을 설명합니다.
즉, 2장의 내용은 컴퓨터 하드웨어에 대한 동작이고, 다음 장부터 운영체제에 대한 본격적인 내용이 시작됩니다.
이번 글은 컴퓨터 구조 관련 내용에 한에서는 간략한 내용만을 담고 있습니다.
CPU
와 Memory
의 집합을 칭합니다.I/O device
라고 부릅니다.레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 다목적 공간입니다. 프로세스 내부에 있는 작은 공간이고 연산 제어, 디버깅 등의 목적으로 사용됩니다.
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치로, 사용자 모드와 모니터 모드(커널 모드)를 구분짓습니다.
특정 프로그램이 CPU를 독점하는 것을 막기 위해서 OS가 사용자 프로그램에게 CPU를 넘겨줄 때에는 정해진 시간을 할당한 후에 넘겨주게 되는데, 이 시간이 다 흐르면 OS에게 제어권이 넘어가도록 인터럽트를 발생시킵니다.
CPU가 I/O Device의 모든 interrupt에 반응하면 많은 overhead가 발생해 비효율적이게 됩니다. 따라서, 컴퓨터는 DMA라는 장치로 메인 메모리에 직접 접근할 수 있습니다.
DMA는 I/O가 빈번하게 일어나는 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용되며, 이를 통해 device controller는 CPU의 중재 없이 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송할 수 있습니다.
그리고, 전송 작업이 완료되면, CPU에 interrupt를 한 번만 걸어 interrupt가 걸리는 빈도를 줄이게 되는 것입니다.
I/O 장치를 전담하는 일종의 작은 CPU
사용자 프로그램이 운영 체제의 서비스를 받기 위해 커널 함수를 호출하는 것을 의미합니다.
Interrupt 당한 시점의 레지스터와 PC를 저장한 후, CPU의 제어를 인터럽트 처리 루틴에 넘기는 작업입니다.
현대의 운영 체제는 인터럽트에 의해 구동됩니다. 운영체제는 CPU를 사용할 일이 거의 없는데, 인터럽트가 발생할 때에만 CPU가 운영체제로 넘어갑니다.
모든 입출력 명령은 특권 명령이고, 사용자 프로그램은 직접 I/O를 하지 못합니다. 따라서 사용자 프로그램은 System Call 을 걸어 운영체제에게 I/O를 요쳥하게 됩니다.
모든 입출력 명령은 운영체제만 수행할 수 있는 특권 명령입니다. 사용자 프로그램은 직접 I/O를 하지 못하기 때문에 system call을 호출해 운영체제에게 I/O를 요청합니다.
이 때의 system call은 일반 함수 호출과는 다르게 본인이 직접 인터럽트를 걸어서 CPU가 운영체제에게 넘어가게 하는데, 이를 다른 말로 trap을 이용해 인터럽트를 건다고 합니다.
이 때 운영체제는 올바른 I/O 요청인지 확인해본 후 이 요청을 수행하게 되고, I/O가 완료되었을 경우 제어권을 system call 다음 명령으로 옮깁니다.