Dev/CS 컴퓨터사이언스
[혼공컴운/OS] 입출력장치 | 장치 컨트롤러 | 프로그램 입출력 | 인터럽트 입출력 | DMA 입출력 | 장치 드라이버
솔버(Solver)
2023. 6. 17. 13:15
728x90
반응형
장치 컨트롤러
컴퓨터 내부와 정보를 주고 받을 수 있도록 하는 하드웨어적인 통로
장치 컨트롤러의 역할
- CPU와 입출력장치 간의 통신 중개: CPU와 입출력장치간 데이터를 주고받을 수 있도록 해줌
- 오류 검출: 연결된 입출력 장치에 문제가 없는지 오류 검출 및 확인
- 데이터 버퍼링: 전송률이 다름으로써 생기는 문제를 해결하기 위해 데이터를 버퍼에 저장하여 전달
장치 컨트롤러의 데이터 입출력 방식
프로그램 입출력: 프로그램 속 명령어로 입출력 장치를 제어하는 방식
- 메모리 맵 입출력: 메모리 접근 주소공간과 입출력 접근용 주소공간을 함께 사용
- 고립형 입출력: 메모리 접근 주소 공간과 입출력 접근용 주소공간을 독립적으로 사용 (입출력장치 읽기/쓰기 선을 따로 둠으로써 가능해지는 방법임)
인터럽트 기반 입출력:
- 하드웨어 인터럽트란?
- CPU가 입출력 장치에게 장치 컨트롤러를 통해 업무 지시
- 입출력 장치가 업무 수행
- 업무가 끝나면 입출력 장치가 CPU에게 인터럽트를 날림으로써 작업이 끝남을 알림
- 인터럽트 동시 발생 시 처리 방식
- 순차 처리: 인터럽트가 발생한 순서에 따라서 처리
- 우선순위 처리: 우선순위가 높은 인터럽트를 우선으로 처리
- 이 때, 우선순위는 PIC(Programmable Interrupt Controller)를 통해 파악하고, PIC가 먼저 처리를 인터럽트를 CPU에게 전달한다. 무시할 수 없는 인터럽트인 NMI(Non-Maskable Interrupt)는 무조건 먼저 처리 된다
DMA 입출력: CPU를 거치지 않고 바로 입출력 장치와 메모리간 접근이 가능하도록 DMA 컨트롤러를 사용하는 방식
- 동작 방식
- CPU가 DMA 컨트롤러에게 명령을 내림
- DMA 컨트롤러가 CPU 대신 메모리, 입출력 장치와 데이터를 전송해가며 업무 수행
- 업무가 다 끝나면 DMA 컨트롤러가 CPU에게 인터럽트를 걸어 작업이 끝남을 알림
- 입출력 버스: DMA는 CPU와 시스템 버스를 공유하는데, 그러면 사이클 스틸링이 잦게 일어날 수 있음. 따라서 이를 최소한으로 줄이기 위해 DMA와 입출력 장치 간 서로 데이터를 전송할 수 있는 입출력 버스를 별도로 두었음 (예: PCI 버스, PCIe 버스)
장치 드라이버
장치 컨트롤러의 동작을 감지하고 제어하여 연결하기 위한 소프트웨어적인 통로
728x90
반응형