학습 개요
- 장치 관리자는 컴퓨터 시스템의 모든 주변 장치를 관리하는 역할을 함
- 디스플레이나 키보드, 프린터 등의 입 출력 장치, 자기 테이프나 디스크와 같은 저장 장치가 이러한 주변 장치에 해당됨
- 장치의 개념과 구성을 살펴보고, 입출력을 처리하는 여러 가지 방법을 살펴봄
- 장치와는 독립적으로 입출력을 관리하는 기법도 살펴봄
학습 목표
- 장치의 개념과 구성을 설명할 수 있음
- 입출력 처리를 위한 세 가지 방법을 설명할 수 있음
- 장치와는 독립적으로 입출력을 관리하는 두 가지 방법을 설명할 수 있음
강의록
장치의 개념
컴퓨터 시스템의 구성
- 다양한 장치들
- CPU, 메모리
- 프로세스 실행에 필수
- 나머지 장치들
- 프로세스 실행 시 데이터 입력이나 출력에 사용되는 입 출력 장치
- CPU, 메모리
입출력 장치의 구분
- 세 가지 범주
- 전용 장치, 공용 장치, 가상 장치
- 구분 기준
- 장치의 기능적 특징과 장치 관리자의 관리 방법
입출력 장치의 구분
- 전용 장치
- 한 번에 단지 하나의 프로세스에만 할당
- ex) 테이프 드라이브, 프린터, 플로터 등
- 단점
- 대기 시간이 길어질 수 있음
- 공용 장치
- 여러 프로세스에 동시에 할당
- ex) 디스크 같은 직접 접근 저장장치
- 스케줄링 기법 필요
- 가상 장치
- 전용 장치를 공용 장치처럼 보이게 함
- 디스크 같은 공용 장치를 이용
- ex) 스풀링을 적용한 플로터 등
장치의 구성
논리적 구성
장치 제어기
- 장치를 직접적으로 다루는 전자 장치
- 장치에서 발생하는 각종 데이터를 전자 신호로 변환하여 운영 체제로 보냄
- 운영 체제가 요청하는 명령을 받아 장치를 구동
- 운영 체제가 보내는 출력을 장치에 맞게 변환
장치 드라이버
- 응용 프로그램의 입출력 요청을 해당 장치에 맞도록 변환
- 장치의 종류나 제조사에 따라 장치 제어기가 이해하는 명령이나 명령의 종류가 다를 수 있기 때문
- 보통 장치 제조사에서 해당 장치의 드라이버도 같이 제공
물리적 구성
CPU의 장치 사용법
- 장치 제어기의 레지스터를 이용
- 장치의 상태를 확인하거나 장치에 명령
메모리 사상 입출력(Memory-mapped I/O)
- 메모리의 특정 영역을 장치 제어기의 레지스터와 대응 시켜 둠
- 메모리를 읽고 쓰는 것으로 CPU가 장치를 사용
입출력 처리 유형
입출력 처리
- 프로세스가 진행하며 입출력이 발생하는 경우
- 세 가지 유형
- 프로그램 방법
- 인터럽트 방법
- DMA 방법
프로그램 방법
- CPU만 이용하는 폴링(Polling)을 이용하여 입출력을 처리
- CPU가 입출력 장치의 상태를 지속적으로 확인하며 CPU가 원하는 상태가 될 때까지 기다림
- CPU 낭비가 심해 비효율적
인터럽트 방법
- 인터럽트(interrupt)를 이용하여 입출력을 처리
- 인터럽트
- 어떤 장치가 다른 장치의 작업을 잠시 중단 시키고 자신의 상태를 알리는 기능
- 인터럽트
- 프로세스를 대기 상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 프로세스를 처리할 수 있음
인터럽트 처리 과정
- I/O장치가 가용한 상태가 되었다고 인터럽트 제어기에 신호를 보냄
- 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄
- CPU는 현재 실행 중이던 명령만 마치고 즉시 인터럽트에 응답
- 인터럽트 제어기는 이벤트 대상에 대한 정보를 CPU에 보냄
- CPU는 현재 상태 보관 후 필요 한 입출력 처리
DMA 방법
- DMA(Direct Memory Access)를 이용하여 입출력을 처리
- DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법
- 인터럽트 발생 횟수를 단 한번으로 줄여 CPU 효율 증대
사이클 스틸링(cycle stealing)
- CPU와 DMA 제어기가 동시에 메모리 액세스를 시도하면 DMA 제어기에 우선권을 줌
DMA 처리 과정
- CPU는 입출력에 필요한 정보를 DMA 제어기에 넘김
- DMA 제어기는 소스에서 목적지로 데이터를 보내도록 장치 제어기에 요청하고, 이를 CPU가 지시한 양만큼 반복
- 입출력이 끝나면 DMA 제어기는 인터럽트 제어기에 신호 보냄
- 인터럽트 제어기는 CPU에 인터럽트 보냄
입출력 관리
입출력 관리
- 입출력 장치와는 독립적인 입출력 관리 방법
- 두 가지 방법
- 버퍼링
- 스풀링
버퍼링
- CPU의 데이터 처리 속도와 I/O 장치의 데이터 전송 속도의 차이로 인한 문제를 버퍼를 통해 해결
- 메모리를 일시적인 데이터 저장 장소인 버퍼로 이동
단일 버퍼링
- 저장과 처리를 동시에 할 수 없어 비효율적
이중 버퍼링
순환 버퍼링
스풀링
입출력 프로세스와 저속 입출력 장치 사이의 데이터 전송을 자기 디스크와 같은 고속 장치를 통하도록 하는 것
- 프로세스 입장에서는 입출력 작업이 빨리 끝남
- 전용 장치를 가상 장치로 변화 시킴
정리 하기
- 운영 체제에서 장치 관리자는 시스템의 모든 주변 기기를 관리하며 입출력의 균형을 유지함
- 장치는 일반적으로 전용 장치, 공유 장치 그리고 가상 장치의 세 가지 범주로 구분 됨
- 입출력이 발생하는 경우 이를 처리하는 방법으로 프로그램 방법, 인터럽트 방법, DMA 방법이 있음
- 프로그램 방법은 CPU가 입 출력 장치의 상태를 지속적으로 확인하여 CPU가 원하는 상태가 될 때까지 기다리는 폴링을 이용하는 방법임
- 인터럽트 방법은 어떤 장치가 다른 장치의 작업을 잠시 중단 시키고 자신의 상태를 알리는 인터럽트를 이용하는 방법임
- DMA는 DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법임
- 장치와는 독립적으로 입출력을 관리하는 방법으로 버퍼링과 스풀링이 있음
- 버퍼링은 CPU의 데이터 처리 속도와 데이터 전송 속도의 차이로 인한 문제를 메모리의 일부를 일시적인 데이터 저장 장소로 사용하는 버퍼를 이용하여 해결하는 방법으로, 단일 버퍼링, 이중 버퍼링, 순환 버퍼링이 있음
- 스풀링은 입출력의 속도를 높이기 위해 입출력 프로세스와 저속 입출력 장치 사이의 데이터 전송을 자기 디스크와 같은 고속 장치를 통하도록 하는 방법임