CPU: 작업을 처리하는 하드웨어
DMA controller: I/O 장치로 부터 온 데이터를 메모리에 저장해주는 역할
Mode bit: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치
-> 0이면 OS가 사용중(커널 모드), 1이면 사용자 프로그램이 사용중(사용자 모드)
-> 보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행가능한 '특권명령'으로 규정
-> Interrupt나 Exception 발생 시 하드웨어가 mode bit를 0으로 바꿈
-> 사용자 프로그램에게 CPU를 넘기기 전에 mode bit를 1로 셋팅
사용자 프로그램이 I/O를 하는 법
- 시스템콜: 사용자 프로그램이 OS에 요청하는 것 (CPU에게 요청하기 위해)
-> 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
- trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
- 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
- 올바른 I/O 요청인지 확인 후 I/O 수행
- I/O완료 시 제어권을 시스템콜 다음 명령으로 옮김
I/O device controller(장치제어기)
- 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU(하드웨어)
- local buffer를 가짐.
- I/O는 실제 device와 local buffer 사이에서 일어남.
- Device controller는 I/O가 끝났을 경우 interrupt로 CPU에 이 사실을 알림.
device driver(장치구동기)
- OS코드 중 각 장치별 처리 루틴(소프트웨어)
인터럽트
- 인터럽트 당한 시점의 레지스터와 프로그램 카운터를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
- CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
- 현대의 운영체제는 인터럽트에 의해 구동됨
- Interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트): Exception(프로그램이 오류를 범한 경우), System call(프로그램이 커널 함수를 호출하는 경우)
인터럽트의 처리 과정
-
기존의 작업을 처리하던 도중, 인터럽트가 발생하면
-
현재 컴퓨터가 처리하는 일을 중지하고 현재의 컴퓨터의 상태(CPU 내부의 레지스터, 메인 메모리 내용 등을)를 저장한다.
-
해당하는 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴을 처리한다.
-
인터럽트 처리 이후 저장되었던 이전 작업의 상태를 복구하고 이전 작업 수행을 재개한다.
인터럽트 관련 용어
- 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수
타이머
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- 타이머 값이 0이 되면 타이머 인터럽트 발생
- CPU를 특정 프로그램이 독점하는 것으로부터 보호
- 타이머는 현재 시간을 계산하기 위해서도 사용
'Computer Science > 운영체제' 카테고리의 다른 글
운영체제의 개념과 구조 (0) | 2022.11.15 |
---|---|
운영체제란? (0) | 2022.11.15 |
연속 할당, 불연속 할당 (0) | 2022.07.26 |
컴퓨터 시스템 구조2(System Structure & Program Execution 2) (0) | 2022.06.29 |
운영체제(Operating System, OS)란? (0) | 2022.06.20 |