컴퓨터 시스템 구조
- Computer
- CPU : 매 clock cycle 마다 메모리에서 instruction(기계어)를 하나씩 읽어서 실행
- Memory : CPU의 작업공간
- I/O device
- disk : input&output 동시 수행
- device controller : 디바이스 각각을 전담하는 작은 CPU
- cf) device driver : SW. OS 코드 중 각 장치별 처리 루틴
- local buffer : device controller의 작업공간. 실제 데이터 저장(일종의 data register)
- CPU 내부
- register : 메모리보다 더 빠른 작은 정보 저장 공간
- mode bit : 지금 CPU에서 실행되는 게 OS인지 사용자 프로그램인지 구분
- 1 : 사용자 모드 - 사용자 프로그램 수행. 제한된 instruction만 수행 가능(보안 상 목적)
- 0 : 모니터 모드 - OS 코드 수행. 무슨 일이든지 다 할 수 있도록 정의
- interrupt line : I/O device에서 작업을 요청해야하는지, 작업이 끝났는지 CPU에게 알려주는 역할 수행(scanf, printf와 같은 작업 처리) → IO 요청 들어오면 IO controller에게 작업 시킴(CPU가 직접 작업 x)
- timer : 특정 프로그램이 CPU 독점하는 것을 막기 위한 장치. CPU의 time sharing 구현을 위해 필요.
- timer 시간이 되면 program A → OS로 CPU 제어권 넘어가고 OS는 CPU를 program B가 사용할 수 있도록 할당
- DMA controller : Directly Memory Access
- 메모리를 CPU도 접근할 수 있고 DMA도 접근할 수 있도록
- memory controller가 CPU와 DMA가 접근하는 메모리 영역을 조율하는 역할
- I/O 장치가 너무 자주 interrupt를 걸면 CPU 작업에 방해 → local buffer 의 내용을 메모리로 복사하는 일을 DMA가 담당
- ⇒ CPU는 interrupt 한번만! CPU를 더 효과적으로 사용할 수 있다.
I/O의 수행
- 모든 입출력 명령은
특권명령
- 사용자 프로그램이 I/O하는 방법
- 시스템콜(System call) : 운영체제에게 I/O 요청
- 프로그램이 운영체제에게 요청하기 위해 interrupt 걸 수 있음 → mode bit가 0으로 설정되어 운영체제가 CPU 할당
- OS가 올바른 IO 요청인지 확인 후 수행
- IO 요청 : 소프트웨어 인터럽트
- IO 끝난 거 알려줌 : 하드웨어 인터럽트
Interrupt
일반적으로 하드웨어 인터럽트를 의미(소프트웨어 인터럽트 : trap)
- 운영체제는 interrupt가 일어날 때만 CPU 제어권이 운영체제에게 넘어감
- 평소에는 사용자 프로그램이 제어권
- 인터럽트 벡터 : 인터럽트 종류마다 실행해야할 함수(인터럽트 처리 루틴)의 주소를 가지고 있음
- 인터럽트 처리 루틴 : 실제로 인터럽트를 처리하는 커널 함수(코드)
'개발하자 > 🐧 운영체제' 카테고리의 다른 글
운영체제 1. Introduction to Operating System (0) | 2022.08.14 |
---|