본문 바로가기

CS지식/운영체제

운영체제 : I/O System

Device drivers 장치는 세부 정보를 캡슐화한다 → I/O 하위 시스템에 균일한 장치 엑세스 인터페이스를 제공한다.

 

컴퓨터 시스템은 I/O 디바이스와 CPU를 동시에 실행한다.

 

CPU <> Memory : Read,Write

CPU<> I/O Input, Output

 

H/W register


레지스터 : 회로 안에 있는 아주 작은 저장공간

  • 명령어 레지스터
  • 상태 레지스터
  • 데이터 레지스터(buffer) : 일반 데이터가 저장되는 레지스터

system bus


컴퓨터의 구성요소를 서로 연결하고 데이터를 전달하는 데에 사용하는 경로이다.

  • 주소버스
    • 메모리의 주소나 I/O Unit의 포트번호 전달
  • 데이터버스
    • 데이터 전달
  • 제어버스
    • 제어 신호 전달

(1) CPU ↔ Memory : Load and Store

(2) CPU ↔ I/O Unit : Input and Output, interrupt

(3) Memory ↔ I/O Unit : CPU를 이용하지 않고 DMA를 통해 직접 통신한다.

 

I/O 메모리 매핑하는 방식 두가지


  • Memory mapped I/O
    • 모두 메모리 영역
    • 메모리의 일부 주소를 메모리로 사용하지 않고 I/O에 할당한다.
    • I/O 주소와 메모리주소가 오버랩되지 않는다.
    • 하드웨어 구성이 간단하지만 주소나 데이터버스를 많이 사용하게 된다.
  • I/O-mapped I/O
    • I/O를 별도 주소에 할당한다.
    • 메모리에 대한 접근과 I/O에 대한 접근이 다른 것으로 간주된다
    • 입출력 요청인지 메모리접근요청인지에 대한 line이 하나 더 필요하다
    • 오버랩O 별도의 회로설계가 필요하여 하드웨어 구성이 복잡

polling


  • 여론조사! 계속해서 물어보는 것이다.
  • data register가 비어야 busybit 이 바뀐다.(1→0)
  • 나노단위로 물어보고 가끔 ready 상태가 됨 → 비효율적임

Interrupts handling ISR vs interrupt handler


  • I/O 인터럽트 : I/O 디바이스가 CPU한테 작업이 끝났음을 알림 제어신호를 통해 인터럽트 요청을 보내 CPU에게 입출력 작업을 요청

→ CPU는 작업을 잠시 멈춤

→Interrupt service routine

→ Interrupt handler

인터럽트 요청 : 입출력 준비를 마친 I/O Unit이 CPU에 입출력 작업의 시작을 요청

인터럽트 확인 : CPU가 입출력 동작을 수행할 것을 입출력 장치에 통보

 

Interrupt Service Routine(ISR)


디바이스가 많고 라인은 하나임

이번에 인터럽트 요청한 입출력 장치를 찾는 것

 

Interrupt handler


디바이스마다 핸들러가 있다.

DMA (메모리 직접 접근)구조


  • Block transfer : 대용량의 데이터를 블록 단위로 전송한다.
  • DMA Controller(하드웨어 자원)가 필요하다
  • 입출력장치와 메모리가 CPU를 사용하지 않고 직접 데이터를 교환할 수 있도록 하는 구조
  • 블럭 단위로 한번씩 interrupt 한다.
  • DMA 제어기는 CPU를 대신하여 주소 버스와 제어 버스에 신호를 전달
  • DMA 제어기는 통신 시작 전 CPU에 버스 사용에 대한 허가를 받아야 한다.

DMA 구조 동작 방식

입출력 모델


  • Blocking I/O vs Nonblocking I/O
    • I/O가 끝날 때 까지 기다리냐 안기다리냐
  • Synchronous vs Asynchronous I/O
    • 작업이 순차적으로 처리되는 것을 보장하는지 아닌

→ Synchronous Blocking과 Asynchronous Non-blocking이 가장 빈번하게 발생한다.

 

시스템 콜이 I/O 어떻게 동작시키는지


  1. 유저 프로그램이 운영체제에 입출력 동작을 요청한다
  2. system call을 호출하여 trap(s/w intterupt, 모드 전)을 발생시킨다.
  3. 운영체제에서 입출력을 처리한다.
  4. 시스템콜에 의해 흐름제어가 입출력을 호출한 프로세스로 돌아간다.

usermode → mode bit 1 / kernel mode → mode bit 0

'CS지식 > 운영체제' 카테고리의 다른 글

운영체제 : File-System  (0) 2023.09.23
운영체제 : Mass-Storage Interface  (0) 2023.09.23
운영체제 : 가상 메모리 (Virtual Memory)  (0) 2023.09.23
운영체제 : Main Memory  (0) 2023.09.23
운영체제 : Deadlocks  (1) 2023.09.23