- CPU: 매 클럭마다 메모리에서 인스트럭션(기계어)을 차례로 읽어 실행하는 작업 반복
- 레지스터: 메모리보다 빠른 작은 정보 저장 공간
- 다음 인스트럭션의 주소를 담고 있음
- mode bit: 실행중인 프로세스가 OS인지 사용자 프로그램인지 구분해준다
- 1 (사용자 모드): 사용자 프로그램 수행 -> 제한된 인스트럭션만 수행 가능 (보안)
- 0 (모니터 모드): OS 코드 수행 (=커널모드) -> I/O 관련된 인스트럭션까지 모두 수행 가능
- interrupt line: CPU는 매 인스트럭션을 읽기 전에 interrupt line이 세팅되어 interrupt될 사항이 있는지 체크한다
- CPU에 인터럽트가 걸리면 실행중인 프로그램에서 OS로 CPU 제어권이 넘어간다
- 프로그램 실행 중에 I/O 장치의 관여가 필요하다면 CPU가 device controller에게 요청하고, 해당 I/O 장치의 처리 결과는 local buffer에 저장된다 -> 처리 완료 후 device controller가 interrupt로 CPU에 알림
- 이때 CPU는 I/O 장치의 데이터 입력 결과가 나오는 동안 다른 작업을 계속해서 수행한다
- 레지스터: 메모리보다 빠른 작은 정보 저장 공간
- 타이머: 특정 프로그램의 CPU 독점 방지, OS가 할당 시간을 타이머에 세팅하여 각 프로그램에 CPU 할당
- 할당 시간이 넘어가면 타이머 인터럽트
- DMA(Direct Memory Access) controller: 직접 메모리에 접근 권한이 있는 컨트롤러
- I/O가 매번 일일히 인터럽트하는 것의 비효율성 때문에 local buffer에 저장된 데이터를 메모리에 옮겨놓고 한번만 인터럽트 걸기 위해 존재
- memory controller: CPU와 DMA controller가 동시에 메모리에 접근하는 것 방지
- 메모리: CPU의 작업공간
- I/O 장치: 데이터 입력 및 컴퓨터 처리 결과 출력
- device controller: I/O 장치에 있어서 CPU와 같은 역할을 하는 장치 (제어 레지스터)
- local buffer: I/O 장치에 있어서 메모리와 같은 역할을 하는 장치 (데이터 레지스터)
* device driver (장치 구동기): OS 코드 중 CPU가 실행하는 각 장치별 처리루틴 -> 소프트웨어
- 입출력의 수행
- 모든 입출력 명령은 특권 명령
- 시스템콜: 사용자 프로그램이 OS에 I/O 요청
- 사용자 프로그램이 직접 interrupt line을 세팅할 수 있음
- 올바른 I/O 요청인지 확인 후 수행 -> 완료 시 제어권을 시스템콜 다음 명령으로 옮김
- 인터럽트
- 소프트웨어 인터럽트(trap): 시스템콜, exception(프로그램 오류)
- 하드웨어 인터럽트: 타이머, device controller 등의 인터럽트
- 인터럽트 처리 루틴: 해당 인터럽트를 처리하는 커널 함수
- 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음 (어떤 함수로 가야하는지)
출처: https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f
'CS > OS' 카테고리의 다른 글
5. Process1 (0) | 2022.03.07 |
---|---|
4. System Structure & Program Execution 2 (0) | 2022.03.04 |
2. Introduction to Operating Systems (0) | 2022.03.02 |
(OS 개요) (0) | 2022.03.01 |
1. OS 개요 (0) | 2022.03.01 |