이번 포스팅에서는 컴퓨터 시스템에서 하드웨어들이 어떻게 동작하는지 또 하드웨어에서 프로그램들이 어떻게 동작하는지에 대해서 알아보겠습니다.

참고자료 :
운영체제 강의

컴퓨터 시스템 구조

스크린샷 2021-07-26 오후 9 30 03

위의 그림과 같이 컴퓨터 시스템은 CPU와 Memory로 이루어진 Computer와 Disk, Keyboard, Printer, Monitor와 같은 I/O Device들로 이루어져 있습니다.

컴퓨터의 CPU는 매순간(Clock) 싸이클마다 Memory에 올려져있는 Instruction(기계어)을 읽어드려서 실행을 하게됩니다.

I/O란 Input과 Output을 뜻하며 키보드, 마우스와 같은 기기는 데이터를 입력받아 컴퓨터로 가져오고 처리된 데이터는 프린터나 모니터와 같은 출력장치로 내보내집니다.

여기서 Disk는 왜 I/O장치에 있나라는 의문이 들 수 있는데 Disk의 파일을 컴퓨터로 가져와 Input Device의 역할도 하고 또한 처리된 파일을 file system으로 내보내는 Output Device로써의 역할도 하기 때문에 I/O장치로 분류할 수 있습니다.

스크린샷 2021-07-26 오후 10 01 02

시스템 구조를 더 자세히 보면 각 I/O Device들은 CPU로 내부를 통제하는 것이 아니라 각 I/O기기들의 CPU에 해당하는 Device Controller가 통제하게 됩니다.

CPU가 작업을 하기위해 Main Memory라는 공간을 사용하듯이 Device Controller들도 각자 local buffer라는 작업공간을 가지고 있습니다.

이렇게 CPU에서 직접 관리하지 않는 이유는 CPU의 처리속도는 밀리세컨드 단위로 매우 빠른반면 I/O Device들의 일처리 속도는 비교적 매우매우 느리기 때문에 Device Controller가 존재하는 것입니다.

때문에 CPU는 Main Memory에서 각 작업들을 하나씩 읽어드려 처리하는 일에만 전념할 수 있습니다.

스크린샷 2021-07-26 오후 10 21 38

CPU내부에는 메모리보다 더 빠르며 정보를 저장할 수 있는 Register 영역이 있습니다.

그리고 CPU내부에는 Mode bit이라는 것이 있는데 Mode bit은 현재 CPU를 운영체제가 점유하고 있는지 아니면 다른 사용자 프로그램이 점유하고 있는지를 나타냅니다.

Mode bit이 1이면 사용자 시스템이 점유중인 것이고 0이면 운영체제가 점유하고 있는 것입니다.

또한 Interupt Line이라는 것이 있는데 CPU가 메모리에 존재하는 사용자 프로그램 Instruction을 수행하다가

I/O Device를 활용하는 Instruction을 만나면 사용자 프로그램이 스스로 CPU의 권한을 운영체제에게 넘기게됩니다.

운영체제의 점유를 받는 CPU는 I/O Device를 활용하기 위해 직접 작업을 지시하는 것이 아니라 해당 작업을 맡을 수 있는 device controller에게 작업을 지시합니다.

I/O Device에서 해당 작업이 끝나면 device controller는 해당 작업이 완료되었다고 알려주는데 이때 CPU의 Interupt Line에 올려 이를 전달합니다.

Interupt Line에 무엇인가가 있으면 CPU는 수행중인 사용자 프로그램의 작업을 마치고 다음 작업으로 넘어가기 전에 점유권이 운영체제에게 넘어갑니다.

운영체제는 Interupt Line에 올라온 작업이 포함되있던 프로그램에게 처리된 작업을 넘겨주고 다시 이전에 CPU를 점유하던 사용자 프로그램에게 CPU를 넘겨줍니다.

이로써 알 수 있는 것은 CPU는 메모리에 올라와있는 사용자 프로그램의 Instruction을 수행하다가 I/O Device 관련 Instruction을 만나거나 Interupt를 만나면 점유권이 운영체제에게 넘어간다는 것을 알 수 있습니다.

이렇게 운영체제와 사용자프로그램 사이에서 Interupt로 인하여 CPU의 점유권이 넘어갈 때 위에서 설명하였던 mode bit이 사용됩니다.