중앙처리장치인 CPU는 메모리에 적재된 명령어를 실행한다. 데이터 입출력 작업을 위해 해당 장치 제어기로 명령을 전달하는데 제어기가 이를 확인하고 작업을 수행한다. CPU가 작업의 결과를 확인하는 방식은 반복적으로 작업 완료 여부를 확인하는 폴링 방식이 아닌, 작업을 수행한 제어기가 작업 완료 시점에 CPU로 인터럽트 신호를 보내는 인터럽트 방식을 주로 채택한다. 제어기가 직접 메모리에 접근하여 읽기, 쓰기 작업을 수행하는 장치를 DMA 제어기라고 한다.
CPU는 명령어를 실행할 때 OS 부분과 프로세스 부분이 실행될 때를 구분해 권한 차이를 두는데 이는 각각 커널 모드와 유저모드로 설명된다. 전자에서는 시스템 전체의 메모리와 하드웨어에 접근 가능하지만 후자는 일정 메모리 영역에 한해 권한이 제한된다. 특히 전자는 특권 명령으로 상태 레지스터의 모드 부분 변경이나 인터럽트 금지 및 해제 등의 권한을 가진다. 유저 모드에서 커널 모드로 전환할 때는 임의로 비트를 변경하는 것이 안 되기 때문에 인터럽트를 발생하여 전환하고 이후 커널 부분의 인터럽트 처리루틴이 실행된다. 반대의 경우는 인터럽트를 발생할 때 당시 모드 값을 다른 곳에 저장하였다 iret명령어에 통해 복귀한다. 프로세스가 커널 모드에서 실행할 수 있는 시스템 콜 함수를 호출했을 때는 유저 모드에서 인터럽트를 통해 커널 모드로 전환되는데 함수를 처리하는 과정에서 스케줄링을 통해 문맥교환도 가능하다. 이때 현재의 모드와 다음 명령어 주소인 IP 레지스터 값을 스택에 저장한 후 모드를 변경하면 이후 이전 위치로 복귀할 수 있다.
'OS' 카테고리의 다른 글
| 운영체제의 이해 8장: 저장장치 입출력 및 스케줄링 (2023.05.16) (0) | 2026.03.13 |
|---|---|
| 운영체제의 이해 7장: 파일 관리 (2023.05.10) (0) | 2026.03.13 |
| 운영체제의 이해 4장: CPU 스케줄링 (2023.04.12) (0) | 2026.03.13 |
| 운영체제의 이해 3장: 프로세스 관리 (2023.03.31) (0) | 2026.03.13 |
| 운영체제의 이해 1장: 운영체제의 이해를 위한 기초 (2023.03.15) (0) | 2026.03.13 |