컴퓨터 구조

강준호·2021년 12월 2일
0

운영체제

목록 보기
4/13

I/O 디바이스 개념

  • 보통 하드웨어 장치는 레지스터를 가지고 있음
  • 레지스터들은 메인 메모리의 일부 영역에 매핑됨

I/O Interrupt 처리 기법

  • 버스의 병목현상을 처리하기위해

비동기적 이벤트

  • 언제 발생할지 모르는 이벤트 ex) 네트워크 패킷도착, I/O 요청
  • 처리순서
  1. 현재 상태 저장
  2. I/O를 처리하기 위한(ex I/O 일때) ISR(Interrupt Service Routine)으로 점프
  3. 저장한 실행 상태 복원
  4. 다시 시작
  • Interrupt 에는 우선순위가 있음
  • ISR은 짧아야함
  • cf) Time Sharing은 타이머의 Interrupt로 이루어짐

동기적 이벤트

  • 프로그램 내에서 발생하는 사건 ex) Divide by Zero
  • Trap handler에 의해서 처리

Trap vs Interrupt

  • 트랩은 프로그램 안에서 일어나는거라 interrupt와 달리 실행상태를 따로 저장/ 복원하지않음.

I/O Handling 기법

Polling

  • CPU가 5분대기조 하면서 I/O 가 왔나 기다림 <-> Interrupt
  • 컨트롤러나 장치가 매우 빠른 경우에 적합
  • CPU 시간이 낭비됨..

DMA(Direct Memory Access)

  • 전송 데이터가 크거나 오래걸릴때 폴링의 대안으로 나옴
  • DMA 컨트롤러라는 프로세서가 CPU의 비서로 대신 I/O 해옴
  • CPU가 I/O 시간동안 다른 일 할 수 있어서 성능굳.
  • But 비용적 측면 안좋음

DMA Read 과정

Ex)Disk 의 경우

1. CPU가 DMA 컨트롤러 초기화하고 READ 설정
2. DMA한테 어디 주소로 가서 얼마만큼 읽어온 다음에 지정한 버퍼에 넣어놔 시킴
3. DMA는 디스크 컨트롤러에게 데이터 전송 요청
4. 디스크 컨트롤러는 읽을 수 있는 만큼 읽어서 DMA한테 전송
5. DMA는 받은 데이터를 버퍼에 기록. 전송할때마다 c값을 감소시키면서 cpu가 시킨 횟수만큼 수행
6. c가 0이되면 cpu에게 Interrupt해서 알려줌

DMA Write 과정

  1. CPU가 DMA 컨트롤러 초기화하고 WRITE 설정
  2. DMA한테 메모리에 있는 x부터 c의 크기를 알려줌
  3. DMA는 디스크 컨트롤러가 write 준비됐는지 확인
  4. DMA는 메모리 버퍼로부터 데이터 읽어와 디스크 컨트롤러한테 전송
  5. c값이 0이될때까지 전송

DMA vs Polling

  • DMA: 추가 장비 필요

- 성능: DMA 최대한 활용하려면 적당한 Parallelism 필요 => I/O 하는동안 CPU 쉬자나. CPU가 그때 일하면 효율성 굳굳

I/O 디바이스 접근방법

Memory 매핑

  • 디바이스 레지스터들을 메모리 특정 공간에 매핑해서 사용
  • CPU가 특정 영역을 바꿨으면, I/O가 들어온걸로 파악

장점

  • CPU는 일반적인 명령어를 사용해서 I/O 할수있음
  • 하드웨어 구현없이 편함

단점

  • 무조건 메모리 거쳐야해서 성능 나쁨.
  • 일부 메모리 영역을 온전히 I/O를 위해 할당해줘야함

I/O Instruction

  • I/O 합니다~ 하는 명령어를 만들어서 사용

장점

  • 명령어 사용이니 속도 굳굳

단점

  • 명령어 만들어야하니 하드웨어적으로 복잡한 구현

0개의 댓글