Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

운영체제 11주차 정리 - 1 본문

2-1/운영체제

운영체제 11주차 정리 - 1

김브래 2023. 5. 12. 18:04

입·출력시스템

입·출력장치의 통신 방식


입출력장치와 통신


데이터 전송 속도에 따른 분류

- 저속의 주변장치(키보드, 마우스 등)와 고속 주변장치(그래픽 카드, 하드 디스크 등)로 나뉨
- 하나의 버스로 주변장치를 묶으면 저속 장치로 인해 고속 장치의 활용성이 떨어짐 = 효율성 저하

버스의 기본적인 연결 구조

- CPU와 주기억장치(RAM)를 주 축으로 다른 입출력장치와 통신함
- 모든 통신은 시스템 버스(FSB)를 통해 가능 (주소, 제어, 데이터 버스로 구성)

채널(channel)

- 데이터가 지나가는 통로
- 버스(BUS)를 통한 논리적인 경로

 

채널 공유와 분리

 - 서로 다른 전송 대역(bandwidth)을 갖는 장치들 간 채널을 공유 또는 분리

 

 공유

• 공유되는 통로를 통해 모든 연결된 주변 장치들과 통신을 수행
• 채널의 구성이 단순 = 저렴
• 모든 주변 장치의 성능은 가장 낮은 성능의 주변장치의 성능을 따름 = 비효율적


분리
• 각 주변장치를 위한 별도의 채널을 구성
• 채널의 구성이 복잡 = 고가
• 성능향상 기대


입출력 모듈의 구성


일반적인 구성

- 프로세서마다 입출력장치를 위한 내부 모듈(유닛)들이 각기 다른 형태로 구성
- 많은 프로세서들이 GPIO를 통해 외부 장치(주기억장치 포함)와 연결됨 (외부 버스(FSB) 또한 GPIO의 일종)

입출력 모듈 기능

- 내부 자원과 데이터 입출력 등 다양한 동작을 제어
- 입출력장치에 명령을 보내기 위해서는 장치의 식별을 위한 주소 등을 지정
- 타이밍 동기 기능을 제공
- 버퍼링을 이용한 전송속도 조절
- 오류 검출


데이터 처리 방식


폴링(Polling)

- CPU가 연결된 모든 주변장치에게 데이터 송수신을 위해 상태를 물음
- 동일 작업을 주기적으로 수행
- 잦은 데이터 송수신이 있는 주변장치의 접근에 유리
- 이벤트성의 데이터송수신 장치의 경우 비효율적인 접근이 됨

- CPU의 부하를 발생

인터럽트(Interrupt)

- 주변장치에서 송수신관련 데이터가 있으면 CPU에게 알림
- CPU는 알림신호를 받으면 해당 주변장치와 송수신작업을 수행
- CPU의 부하를 최소화
- 너무 잦은 인터럽트는 CPU의 성능을 저하시킴

- 하나의 프로세서 코어(core)는 한 번에 한 개의 명령만을 수행
- 인터럽트를 이용하면 멀티태스킹(multi-tasking)이 가능

(사용자는 모든 작업이 동시에 수행되는 것 처럼 보임)

인터럽트 제어기
• 입출력 장치에서 발생되는 인터럽트의 요청을 제어함
• 하드웨어에 따라 인터럽트 응답을 위한 신호도 제공함

인터럽트 요청과 서비스 실행

인터럽트 처리

DMA(Direct Memory Access)

- 프로세서의 개입 없이 입출력장치가 주기억장치에 직접 접근하는 방식
- 다른 장치 간에도 메모리의 접근을 통해 서로 데이터를 교환할 수 있음

'2-1 > 운영체제' 카테고리의 다른 글

운영체제 12주차 정리 - 1  (0) 2023.05.21
운영체제 11주차 정리 - 2  (0) 2023.05.12
운영체제 10주차 정리 - 2  (0) 2023.05.05
운영체제 10주차 정리 - 1  (0) 2023.05.05
운영체제 9주차 정리 - 3  (0) 2023.04.27