목표: 컴퓨터 시스템에서 하드웨어 동작과, 하드웨어 위에서의 프로그램의 동작
컴퓨터 시스템 구조
![](https://velog.velcdn.com/images%2Fmee9204%2Fpost%2F0e3f3ff7-ac84-442f-a416-e99354c3febb%2Fstructure.png)
Memory
-
Memory
- 메모리란 CPU에서 직접접근이 가능한 내부의 장치이며 어떤 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다.
- Main Memory란 CPU의 작업공간을 말한다.
-
device controller
- IO의 역할을 수행하는 디바이스 장치에 작은 CPU 역할을 한다.
- IO의 디바이스 장치와 CPU의 속도 차이가 심하기 때문에 디바이스 컨트롤러가 역할을 대신한다.
-
local buffer
- 디바이스 컨트롤러의 작업공간 CPU의 메모리 공간의 역할을 한다.
CPU
-
CPU
- CPU는 메모리에서 클럭마다 명령을 하나씩 읽어와 실행하는 역할을 한다.
- IO가 일어난다면 CPU에서 처리하지 않고 디바이스 컨트롤러에서 처리한다.
-
범위
- 메모리와, local buffer에 접근이 가능하다.
-
인터럽트 라인(Interrupt Line)
- CPU는 다음 수행할 명령어를 수행하기 전에 인터럽트 라인을 먼저 확인한다.
-
레지스터(Register)
- CPU의 내부에 존재하며 메모리보다 처리 속도가 더 빠른 레지스터가 존재한다.
- 레지스터 중에 메모리 주소를 가르키는 레지스터인 PC(Program Counter)의 레지스터가 있다.
- CPU는 PC 레지스터가 가르키는 메모리 주소의 명령을 읽어와 수행한다.
-
Mode bit
- CPU의 주도권이 현재 운영체제인지 사용자 프로그램인지 구분한다
(사용자 모드)
사용자 프로그램이 CPU의 주도권을 가지고 있을 때 제한된 명령만 실행시킬수 있다.
보안상의 문제로 보호가 필요하다.
(커널 모드)
운영체제가 CPU의 주도권을 가지고 있으며 모든 명령어를 실행시킬 수 있다.
Timer
특정 프로그램이 CPU를 독점하는 것을 방지하기 위한 하드웨어이다.
- 타이머값이 0이 되면 타이머 인터럽트 발생을 시킨다
- CPU를 특정 프로그램이 독점하는 것을 방지
- 타이머는 시분할을 구현하기 위해 널리 이용된다.
DMA(Direct Memory Access controller)
CPU는 수많은 IO 장치들로부터 인터럽트를 받게 된다.
위에서도 설명했듯이 CPU의 작업속도는 매우 빨라서 CPU가 인터럽트를 계속해서 받는 것은 매우 효율적이지 못하다. 그래서 CPU 이외에 메모리에 접근할 수 있는 DMA 컨트롤러를 둔다.
CPU의 중재가 없이 디바이스의 인터럽트를 처리한 뒤 완료 신호를 CPU에게 전달한다.
- 메모리 컨트롤러(Memory Controller)
- CPU와 DMA 컨트롤러가 메모리에 동시에 접근하는 것을 방지한다.
시스템 콜 (System Call)
사용자 프로그램이 운영체제에게 I/O요청을 하는 것을 시스템 콜 이라고 한다.
운영 체제의 서비스를 받기 위하여 커널 함수를 호출하는 것이다.
- 사용자 프로그램은 I/O의 요청이 온다면 현재의 mode bit의 값이 ‘1’이기 때문에 OS로 갈 수 없다.
- 프로그램이 직접 인터럽트를 세팅해야 한다.
- 위에도 설명했듯이 CPU는 명령을 수행하며 인터럽트 라인도 확인하기 때문에 mode bit을 0으로 바꾸고 제어권을 OS로 넘긴다.
인터럽트(Interrupt)
인터럽트
참고
https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f