본문 바로가기
CS/운영체제

장치 관리, 장치의 개념, 장치의 구성, 입출력 처리 유형, 입출력 관리

by Renechoi 2023. 6. 15.

 

1. 장치의 개념 

다양한 장치들 

- CPU, 메모리: 프로세스 실행에 필수

- 나머지 : 프로세스 실행시 데이터 입력이나 출력에 사용되는 입출력 장치 

 

세가지 범주

- 전용장치, 공용장치, 가상장치

 

구분 기준

- 장치의 기능적 특징과 장치관리자의 관리 방법 

 

 

전용 장치

- 한 번에 단지 하나의 프로세스에만 할당 (동시 x) 

- 예: 테이프 드라이브, 프린터, 플로터 등

- 단점: 대기시간이 길어질 수 있음 

 

 

공용장치

- 여러 프로세스에 동시에 할당

- 예: 디스크 같은 직접 접근 저장 장치 

- 스케줄링 기법 필요 

 

 

가상장치

- 전용장치를 공용장치처럼 보이게 함

- 디스크 같은 공용장치를 이용

- 스풀링을 적용한 플로터 등 

 

 

 

 

 

 

2. 장치의 구성 

 

 

장치제어기 

- 장치를 직접적으로 다루는 전자장치

- 장치에서 발생하는 각종 데이터를 전자신호로 변환하여 운영체제로 보냄 

- 운영체제가 요청하는 명령을 받아 장치를 구동

- 운영체제가 보내는 출력을 장치에 맞게 변환 

 

 

 

 

 

장치 드라이버

- 응용 프로그램의 입출력 요청을 해당 장치에 맞도록 변환 

- 장치의 종류나 제조사에 따라 장치제어기가 이해하는 명령이나 명령의 종류가 다를 수 있기 때문

- 보통 장치 제조사에서 해당 장치의 드라이버도 같이 제공 

 

 

CPU의 장치 사용법

- 장치제어기의 레지스터를 이용

- 장치의 상태를 확인하거나 장치에 명령 

 

 

 

 

메모리 사상 입출력(memory-mapped I/O) 

- 메모리의 특정 영역을 장치제어기의 레지스터와 대응시켜 둠 

- 메모리를 읽고 쓰는 것으로 CPU가 장치를 사용 

 

 

 

 

3. 입출력 처리 유형 

프로세스가 진행하며 입출력이 발생하는 경우 세 가지 유형

- 프로그램 방법

- 인터럽트 방법

- DMA 방법 

 

 

프로그램 방법

- CPU만 이용하는 폴링(polling)을 이용하여 입출력을 처리

- CPU가 입출력장치의 상태를 지속적으로 확인하며 CPU가 원하는 상태까지 기다림 

 

 

- CPU 낭비가 심함 

 

 

 

인터럽트 방법

- 인터럽트를 이용 

- 인터럽트: 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능

- 프로세스를 대기 상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 프로세스를 처리할 수 있음 

 

 

인터럽트 처리과정

1) I/O 장치가 가용한 상태가 되었다고 인터럽트 제어기에 신호 보냄

2) 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄

3) CPU는 현재 실행 중이던 명령만 마치고 즉시 인터럽트에 응답

4) 인터럽트 제어기는 이벤트 대상에 대한 정보를 CPU에 보냄

5) CPU는 현재 상태 보관 후 필요한 입출력 처리 

 

 

=> 10 줄 출력시 10번의 인터럽트 발생 

 

 

DMA 방법(Direct Memory Access)

- DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법

- 인터럽트 발생 횟수를 단 한번으로 줄여 CPU 효율 증대 

 

 

 

DMA 처리과정 

1) CPU는 입출력에 필요한 정보를 DMA 제어기에 넘김

2) DMA 제어기는 소스에서 목적지로 데이터를 보내도록 장치제어기에 요청하고 이를 CPU가 지시한 양만큼 반복

3) 입출력이 끝나면 DMA 제어기는 인터럽트 제어기에 신호 보냄

4) 인터럽트 제어기는 CPU에 인터럽트 보냄 

 

=> 10줄 출력하는 일을 직접 처리 = 한꺼번에 보내놓고 CPU는 다른 일 가능 

 

사이클 스틸링(Cycle stealing) 

- CPU와 DMA 제어기가 동시에 메모리 엑세스를 시도하면 DMA 제어기에 우선권을 줌 

 

 

 

 

4. 입출력 관리 

 

입출력 장치와는 독립적인 관리 방법

- 버퍼링, 스풀링 

 

 

 

버퍼링 

 

CPU의 데이터 처리속도와 I/O장치의 데이터 전송 속도 차이로 인한 문제를 버퍼를 통해 해결

 

메모리를 일시적인 데이터 저장 장소인 버퍼로 이용 

 

단일 버퍼링: 저장과 처리를 동시에 못해 비효율적 

 

이중버퍼링: 

먼저 채워져도 기다리지 않고 끊임 없이 작업 가능 

 

순환버퍼링 : 방식은 2중과 동일하되 여러 개의 버퍼를 둠 

 

 

 

스풀링 

 

입출력 프로세스와 저속 입출력장치 사이의 데이터전송을 자기 디스크와 가은 고속장치를 통하도록 하는 것 

프로세스 입장에서는 입출력 작업이 빨리 끝남

전용장치를 가상장치로 변화시킴 

 

 

 

 


참고자료: 운영체제(김진욱, 이인복 공저, KNOU press 출판) 

 
 
 
 
반응형