컴퓨터 시스템 구조
1개 이상의 CPU와 여러 개의 장치제어기(device controller) 들은 서로의 공유 메모리를 접근할 수 있게 하는 bus를 통해 서로를 연결한다.
System bus
컴퓨터 시스템의 주요 구성요소를 연결하는 통로이다.
- data bus : 시스템 모듈 사이에 데이터가 이동하기 위한 길을 제공한다.
- address bus : data bus의 데이터가 어디서에서 어디로 이동해야 하는지 결정한다.
- control bus : CPU가 memory를 read/write 할 지에 대한 정보를 가진다.
bus의 transaction을 시작하는 요소
- bus arbiter : bus master들의 여러 bus 요청에 대한 충돌을 막기 위해 특정 bus master에게 bus를 제공한다.
- bus master : bus 요청 신호를 보내면서 bus transaction을 시작할 수 있게 한다. ex) CPU, DMA controller
- bus slave : bus master에게 명령을 받아 적절히 수행한다. ex) Memory, Device controller
I/O operation
CPU의 명령에 따라 I/O controller는 I/O operation을 수행한다.
I/O operation은 입출력 작업처리 방식과 주소 매핑 방식에 따라 두 가지로 분류할 수 있다.
입출력 작업처리 방식
- Polling I/O : CPU가 주기적으로 I/O 작업이 끝났는지 확인하기 위해 I/O status register를 체크한다.
- Interrupt-driven I/O : I/O 컨트롤러가 CPU에게 I/O 작업이 끝났을 경우 interrupt를 보낸다.
주소 매핑 방식
Memory-mapped I/O : I/O과 메모리의 주소 공간을 분리하지 않고 하나의 메모리 공간에 취급하여 배치하는 방식이다
Port-mapped I/O : 메모리와 I/O의 주소 공간을 분리하여 접근하는 방식이다
인터럽트(Interrupt)
인터럽트란 CPU가 실행 중에 I/O 같은 장치에서 예외 상황이 발생하여 급하게 처리해야 할 경우 CPU에게 알려 처리할 수 있게 하는 것이다.
인터럽트가 발생하면 수행 중인 작업을 완료한 후 현재 PC값을 저장한다. 그리고 현재 발생한 인터럽트의 종류에 따라 interrupt vector table에서 처리해야 할 interrupt service routine(ISR)의 주소를 확인한 후 실행한다. interrupt에 대한 처리가 완료되면 저장된 PC값을 이용해 원래 실행위치로 복원한다.
'OS' 카테고리의 다른 글
[OS] 교착상태(Deadlock) (0) | 2023.10.04 |
---|---|
[OS] 프로세스 동기화 (0) | 2023.09.27 |
[OS] CPU 스케줄링(CPU Scheduling) (0) | 2023.09.20 |
[OS] 스레드(Threads) (0) | 2023.09.14 |
[OS] 프로세스 (0) | 2023.09.06 |