컴퓨터 시스템 구조
Computer : CPU + Memory + (Disk + I/O Device)
출처 : https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f
작업 요약
- Memory에서 기계어(명령)를 하나씩 읽어서 CPU를 통해서 실행하는 방식.
- CPU는 Disk에 직접 접근하지 않고, Device Controller를 통해 명령을 내린다.
메모리
에 사용자 프로그램이 Timer에 할당된 시간이 넘어가면 CPU
에 Interrupt를 걸어 해당 프로세스를 종료시킨다.
- CPU는 Interrupt Line을 체크하여 Interrupt가 들어온 것이 있는지 체크한다.
- Interrupt가 발생하는 경우 사용자 프로그램이 CPU를 반납하고,
OS
로 CPU 제어권이 넘어간다.
- 사용자 프로그램이 I/O 작업을 해야하는 경우 OS가 이런 작업들을 대신해준다.
- 이런 I/O 작업은 오래 걸리므로 다른 사용자 프로그램으로 CPU를 넘겨준다.
- I/O 작업이 종료되는 경우 CPU를 다시 넘겨준다.
Mode bit
0
: 모니터 모드 : OS 코드 수행
- Interrupt나 Exception 발생 시 하드웨어가 mode bit을
0
으로 바꿈
- 모든 Instruction 수행 가능
1
: 사용자 모드 : 사용자 프로그램 수행
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 세팅
- 이 상태일 때는 제한된 명령만 수행 가능하다. (보안을 해칠 수 있는 중요한 명령어은 수행 불가)
Timer
- CPU를 특정 프로그램이 독점하는 것으로부터 보호
Device Controller
- 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU
- Local Buffer를 가짐
DMA(Direct Memory Access) Controller
- 잦은 Interrupt를 방지.
- Memory에 I/O 장치의 입출력을 처리하여 CPU의 작업을 대신해준다. (1번의 Interrupt로 이런 작업이 가능하도록)
Memory Controller
- DMA Controller와 CPU가 동시에 Memory에 접근하는 것을 방지
입출력(I/O)
- 모든 입출력 명령은 운영체제만 가능
- 사용자 프로그램이 I/O를 하는 방법
Interrupt
- 인터럽트 당한 시점의 레지스터와 PC를 Save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
- 넓은 의미
- Interrupt : 하드웨어 인터럽트
- Trap : 소프트웨어 인터럽트
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
-
I/O 요청을 위해 System Call(소프트웨어 인터럽트)
-
I/O 완료 후 I/O Controller가 Interrupt(하드웨어 인터럽트)를 걸어 작업 완료를 알림
💡 하나의 I/O 작업을 위해 두 가지 Interrupt를 수행한다.
- 인터럽트 관련 용어
- 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음(어떤 인터럽트가 발생하는 경우 어떤 것을 수행해야 하는지)
- 인터럽트 처리 루틴 : 해당 인터럽트를 처리하는 커널 함수