운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.
컴퓨터 시스템의 구성요소

컴퓨터 시스템의 일반적인 구조: 버스

- 초창기: 단일 버스 사용
- 한 종류의 시스템 버스에 여러가지 모듈이 연결되는 구조
- CPU, Memory, I/O의 속도가 비슷했던 초창기에 사용
- CPU, Memory, I/O의 속도 격차 증가 → 병목 현상 발생
Bottleneck(병목 현상)
- 같은 버스에 연결된 디바이스들 간의 속도 차이로 인해 발생하는 성능 저하
- 빠른 device에 대한 stall
- 빠른 디바이스가 처리하는 양만큼을 느린 디바이스가 처리하지 못함
- → 전체 시스템 속도가 느린 디바이스의 속도로 제한됨
- e.g., CPU가 초당 5단위의 일을 처리, 메모리가 초당 3단위의 일을 처리
- → 전체 시스템 속도는 초당 3단위의 일 처리
- 일반적인 속도는 CPU > Memory > I/O
버스 이중화

- 계층적 버스 구성
- 속도 격차로 인한 병목 현상 해결
- 의도: 1. 빈번히 활용되고 2. 속도가 유사한 장치들끼리 묶는 것
- 접근 빈도가 적고, 처리 속도가 느린 장치들은 시스템 버스에 직접 연결하지 않고, I/O 버스를 거쳐 연결됨 → stall 방지
CPU의 실행 모드 예시

- 시스템 보호를 위한 실행 모드
- CPU는 하드웨어적으로 Mode switch를 함
- 레벨 0 (Kernel Mode 또는 Supervisor Mode): 커널 또는 운영 체제에 의해 사용, 가장 높은 권한을 가지고 있으며, 모든 하드웨어와 메모리에 대한 전체 접근 권한이 있다. 운영 체제와 하드웨어의 관리, 시스템 콜 및 하드웨어 인터럽트 처리 등이 수행된다.
- 레벨 1 (Hypervisor Mode 또는 Virtual Machine Monitor Mode): 가상화 소프트웨어에 의해 사용된다. 하드웨어에 직접적으로 접근하지 않으며, 가상화 레이어에서 실행되는 하드웨어 리소스에 대한 제한된 접근 권한을 가진다.
- 레벨 2 (Driver Mode 또는 Device Driver Mode): 하드웨어 디바이스 드라이버에 의해 사용됩니다. 하드웨어 리소스를 직접적으로 접근할 수 있으며, 레벨 3보다 높은 권한을 가진다.
- 레벨 3 (User Mode): 사용자 응용 프로그램에 의해 사용된다. 가장 낮은 권한을 가지며, 자신이 사용하는 메모리 영역 외의 다른 메모리 영역에 대한 접근이 제한된다. 대부분의 응용 프로그램이 실행되는 레벨이다.
CPU 이벤트 처리 기법
- CPU 이벤트: 동기적 이벤트와 비동기적 이벤트로 나뉨
- 동기적 이벤트: 어떠한 이벤트가 순차적으로 발생
- 현재 수행하고 있는 프로그램의 맥락에서 발생
- 프로그램의 흐름이 이벤트의 발생을 알고 있음
- 시스템 콜, divide by zero(에러 처리)와 같이 프로그램 동작 상에서 발생
- 요청을 하면 결과가 반환되는 것을 기다려야 함
- 처리기법: trap(SW inturrupt)
- 비동기적 이벤트: 현재 수행하고 있는 프로그램과 병렬적 or 독립적 or 동시에 일어날 수 있음
동기적 이벤트 처리 기법: trap

- 동기적 이벤트를 처리하기 위한 기법
- divide by zero와 같은 프로그램 동작 상에서 발생
- Trap 발생 상황의 예시
- 0으로 나누는 경우
- 유효하지 않은 메모리 주소에 액세스하는 경우
- 시스템 콜 호출
- 프로그램 치명적인 오류 발생
- 시스템이 예외 처리 루틴으로 점프하여 예외를 처리할 때 사용되는 점프 명령어가 바로 Trap 명령어이고, Trap 명령어는 CPU가 현재 실행 중인 명령어의 주소를 저장하고, 예외 처리 루틴의 주소로 점프한다.
- Trap시 Mode switch가 일어난다.
- 처리 루틴
- Trap 발생 시 해당 Trap을 처리하기 위한 trap service routine으로 점프
- Trap 처리 완료 후 기존 실행 흐름으로 복원하여 다시 작업 이어 실행
- Note
- 트랩을 SW interrupt라고 부르는 경우가 다수 있음
- 이 경우, 앞서 interrupt는 엄격하게 HW interrupt라고 구분됨
비동기 이벤트 처리 기법: interrupt

- 비동기적 이벤트를 처리하기 위한 기법: interrupt
- e.g., 네트워크 패킷 도착 이벤트, 타이머 인터럽트
- 인터럽트 처리 순서
- 현재 상태(state)를 저장
- ISR(Interrupt service routine)로 점프
- 인터럽트 처리 루틴은 짧아야 함(최소한의 시간 안에 실행)
- 저장한 실행 상태(state)를 복원
- 인터럽트로 중단된 지점부터 다시 시작
- Note
- 상태를 저장하고 복원하는 이유는 이벤트가 비동기적이기 때문
- 인터럽트에는 우선순위가 있으며, H/W 장치마다 다르게 설정됨
- ISR은 짧아야 함, 너무 길면 다른 인터럽트들이 처리 받기까지 오래 대기
- Timesharing 역시 timer interrupt의 도움으로 가능하게 된 기술