All
장치의 개념
컴퓨터 시스템의 구성
•
필수 구성요소
◦
CPU와 메모리는 프로세스를 실행하기 위한 필수 자원이다.
•
입출력 장치
◦
입출력(I/O) 장치는 데이터를 입력하거나 출력하는 데 사용
◦
예: 키보드, 마우스, 디스크, 프린터 등
장치 관리자는 시스템의 모든 주변 장치를 제어하며, 입출력 자원의 효율적 사용과 균형을 유지
입출력 장치의 구분
1. 전용장치
•
한 번에 하나의 프로세스에만 사용가능
•
예: 테이프 드라이브, 프린터, 플로터 등
•
단점: 대기시간이 길어질 수 있음
2. 공용장치
•
여러 프로세스에 동시에 접근 가능
•
예: 디스크 같은 직접접근 저장장치
•
스케줄링 기법 필요
3. 가상장치
•
전용장치를 공용장치처럼 보이게 함
•
디스크 같은 공용장치를 이용
•
예: 스풀링된 프린터, 네트워크 프린터
장치의 구성
1. 논리적 구성
운영체제가 장치를 제어하기 위해 사용하는 소프트웨어 및 제어 계층
장치제어기
•
장치를 직접 제어하는 전자장치
•
주요 기능:
◦
장치에서 발생한 신호를 운영체제가 이해할 수 있는 전자 신호로 변환
◦
OS로부터 받은 명령을 하드웨어 제어 명령으로 변환해 장치 구동
◦
출력 데이터를 장치 형식에 맞게 변환 후 전달
장치드라이버
•
운영체제와 장치 제어기 사이의 소프트웨어 인터페이스
•
주요 기능:
◦
사용자/응용 프로그램의 I/O 요청을 해당 장치가 이해할 수 있는 형태로 변환
◦
제조회사마다 제어 방식이 다르기 때문에, 장치에 맞는 드라이버 필요
◦
일반적으로 장치 제조사에서 제공
2. 물리적 구성
CPU가 장치를 하드웨어적으로 어떻게 제어하는가에 대한 내용
CPU의 장치 제어 방식
•
장치 제어기의 레지스터를 통해 장치 상태를 확인하거나 제어 명령을 전송
•
예: 장치 상태 레지스터, 명령 레지스터, 데이터 레지스터 등 사용
메모리 사상 입출력(Memory-Mapped I/O)
•
메모리 주소 공간 중 일부를 장치 제어기에 매핑
•
CPU가 장치와 통신할 때, 메모리에 접근하듯 레지스터에 접근
•
장점: 별도의 입출력 명령 없이 일반 메모리 명령으로 장치 제어 가능
입출력 처리 유형
1. 폴링(Polling)
•
CPU가 입출력장치의 상태를 지속적으로 확인하며 CPU가 원하는 상태가 될 때까지 대기하는 방식
•
CPU 낭비가 심해 비효율적
repeat
while (State(프린터) != 가용) do skip;
한줄 인쇄;
until 10줄 인쇄 완료;
C
복사
2. 인터럽트 기반 I/O
•
인터럽트: 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능
•
장치가 CPU에 작업 가능 신호를 보내고, CPU는 해당 작업만 처리한 뒤 다시 본래 작업으로 복귀
•
장점: CPU가 대기 없이 다른 작업 수행 가능
인터럽트 처리과정
1.
I/O 장치가 가용 상태가 되면 인터럽트 제어기에 신호 전송
2.
인터럽트 제어기는 CPU에 인터럽트 요청
3.
CPU는 현재 작업을 잠시 멈추고 인터럽트에 응답
4.
이벤트 정보(어떤 장치인지 등)를 수신
5.
CPU는 현재 상태 저장 후 필요한 입출력 수행
3. DMA(Direct Memory Access)
•
CPU 없이 메모리와 I/O 장치가 직접 데이터 전송하는 방식
•
DMA 제어기가 데이터를 처리하고, 완료 후 CPU에 인터럽트를 보냄
DMA 처리과정
1.
CPU가 I/O 요청과 데이터 정보 → DMA 제어기에 전달
2.
DMA 제어기가 장치에 전송 명령 → 메모리와 직접 데이터 교환
3.
전송 완료 → DMA가 인터럽트 발생시킴
4.
CPU는 인터럽트 응답 후 처리
사이클 스틸링(cycle stealing)
•
CPU와 DMA가 동시에 메모리에 접근할 때 CPU를 일시 정지시켜 DMA가 우선권을 획득
•
I/O 효율은 증가하지만 CPU의 메모리 접근 시간은 약간 손해
입출력관리
•
장치와는 독립적으로 입출력을 관리하는 방법
1. 버퍼링(Buffering)
CPU와 장치의 속도 차이 해결을 위해, 메모리의 일부 공간을 중간 저장소로 사용하는 기법
방식 | 설명 |
단일 버퍼링 | 버퍼 1개로 데이터 입출력 → 입출력과 CPU 작업이 동시에 불가능 |
이중 버퍼링 | 버퍼 2개를 번갈아 사용 → 한쪽에선 입출력, 다른 쪽에선 CPU 처리 가능 |
순환 버퍼링 | 버퍼를 원형 큐처럼 구성 → 연속적인 데이터 처리에 유리, 끊김 최소화 |
2. 스풀링(Spooling)
저속 I/O 장치와의 직접 통신 대신, 디스크에 먼저 기록해두고 천천히 출력
•
예: 프린터 → 출력 명령이 오면 즉시 디스크에 저장, 프린터는 자기 속도에 맞춰 읽어감
•
효과:
◦
사용자 입장: I/O 작업이 즉시 완료된 것처럼 보임
◦
OS 입장: 디스크를 통해 입출력 대기 없이 처리
◦
전용 장치를 가상 공용 장치로 전환하는 효과

