방송대/운영체제
11강. 장치 관리
monimoni
2025. 5. 5. 20:58
1. 컴퓨터 시스템의 구성
- 다양한 장치들
- CPU, 메모리 : 프로세스 실행에 필수적인 장치
- 나머지 장치들 : 프로세스 실행 시 데이터 입력이나 출력에 사용되는 입출력 장치
2. 입출력장치의 구분
- 세 가지 범주
- 전용장치, 공용장치, 가상장치
- 구분 기준
- 장치의 기능적 특징
- 장치관리자의 관리 방법
3. 입출력장치의 구분
- 전용장치
- 한 번에 단지 하나의 프로세스에만 할당
- 예 : 테이프 드라이브, 프린터, 플로터 등
- 단점 : 대기시간이 길어질 수 있음
- 공용장치
- 여러 프로세스에 동시에 할당
- 예 : 디스크 같은 직접접근 저장장치
- 스케줄링 기법 필요
- 가상장치
- 전용장치를 공용장치처럼 보이게 함
- 디스크 같은 공용장치를 이용
- 예 : 스풀링을 적용한 플로터 등
4. 논리적 구성
- 장치 제어기
- 장치를 직접적으로 다루는 전자장치( 하드웨어 범주에 포함 )
- 장치에서 발생하는 각종 데이터를 전자신호로 변환하여 운영체제로 보냄
- 운영체제가 요청하는 명령을 받아 장치를 구동
- 운영체제가 보내는 출력을 장치에 맞게 변환
- 장치 드라이버
- 응용 프로그램의 입출력 요청을 해당 장치에 맞도록 변환( 운영체제 범주에 포함 )
- 장치의 종류나 제조사에 따라 장치제어기가 이해하는 명령이나 명령의 종류가 다를 수 있기 때문
- 보통 장치 제조사에서 해당 장치의 드라이버도 같이 제공
5. 물리적 구성
- CPU의 장치 사용법
- 장치제어기의 레지스터를 이용
- 장치의 상태를 확인하거나 장치에 명령
- 메모리 사상 입출력( memory-mapped I/O )
- 메모리의 특정 영역을 장치제어기의 레지스터와 대응시켜 둠
- 메모리를 읽고 쓰는 것으로 CPU가 장치를 사용
6. 입출력 처리
- 프로세스가 진행하며 입출력이 발생하는 경우
- 세 가지 유형
- 프로그램 방법
- 인터럽트 방법
- DMA 방법
7. 프로그램 방법
- CPU만 이용하는 폴링( polling )을 이용하여 입출력을 처리
- CPU가 입출력장치의 상태를 지속적으로 확인하며, CPU가 원하는 상태가 될 때까지 기다림
repeat
while (State(프린터) != 가용) do skip;
한 줄 인쇄;
until 10줄 인쇄 완료;
- CPU 낭비가 심해 비효율적
8. 인터럽트 방법
- 인터럽트( interrupt )를 이용하여 입출력을 처리
- 인터럽트란?
- 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능
- 인터럽트란?
- 프로세스를 대기 상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 프로세스를 처리할 수 있음
9. 인터럽트 처리과정
- ① I/O 장치가 가용한 상태가 되었다고 인터럽트 제어기에 신호 보냄
- ② 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄
- ③ CPU는 현재 실행 중이던 명령만 마치고 즉시 인터럽트에 응답
- ④ 인터럽트 제어기는 이벤트 대상에 대한 정보를 CPU에 보냄
- ⑤ CPU는 현재 상태 보관 후 필요한 입출력 처리
10. DMA 방법
- DMA( Direct Memory Access )를 이용하여 입출력을 처리
- DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법
- 인터럽트 발생 횟수를 단 한 번으로 줄여 CPU 효율 증대
- 사이클 스틸링 ( cycle stealing )
- CPU와 DMA 제어기가 동시에 메모리 액세스를 시도하면 DMA 제어기에 우선권을 줌
11. DMA 처리과정 ( 입출력 처리 유형 )
- ① CPU는 입출력에 필요한 정보를 DMA 제어기에 넘김
- ② DMA 제어기는 소스에서 목적지로 데이터를 보내도록 장치제어기에 요청하고, 이를 CPU가 지시한 양만큼 반복
- ③ 입출력이 끝나면 DMA 제어기는 인터럽트 제어기에 신호 보냄
- ④ 인터럽트 제어기는 CPU에 인터럽트 보냄
12. 입출력 관리
- 입출력장치와는 독립적인 입출력 관리방법
- 두 가지 방법
- 버퍼링
- 스풀링
13. 버퍼링
- CPU의 데이터 처리속도와 I/O 장치의 데이터 전송속도의 차이로 인한 문제를 버퍼를 통해 해결
- 메모리를 일시적인 데이터 저장장소인 버퍼로 이용
- 프로세스 ← 버퍼 ← I/O 장치
- 단일 버퍼링
- 저장과 처리를 동시에 할 수 없어 비효율적
- 이중 버퍼링
- 두 개의 버퍼를 번갈아 사용하여 CPU와 I/O 장치 간 병렬 처리를 가능하게 함
- 하나의 버퍼가 입출력 작업 중일 때, 다른 버퍼는 CPU가 처리 가능
- 순환 버퍼링
- 세 개 이상의 버퍼를 원형 구조로 구성하여 연속적인 입출력 처리
- 버퍼가 가득 차도 다음 버퍼로 순환되며 데이터 손실을 방지하고 처리 효율 향상
14. 스풀링( Spooling )
- 입출력 프로세스와 저속 입출력 장치 사이의 데이터 전송을 자기 디스크와 같은 고속장치를 통하도록 하는 것
- 프로세스 → 자기디스크 → I/O 장치
- 프로세스 입장에서는 입출력 작업이 빨리 끝남
- 전용장치를 가상장치로 변화시킴
728x90