오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 24. File I/O 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 24. File I/O

쫑알bot 2023. 12. 2. 12:20
728x90

사용자와 컴퓨터는 Input / Output으로 교류한다.

 

따라서, I/O가 없으면 아무리 좋은 기술이 있어도, 얻을 수 있는 게 없다.

ex) 바퀴없는 차.

 

 

● Processor 와  IO Device들과 Mem 사이를 연결해주는 것 = BUS

Bus의 Performance를 제한하는 것 : wire의 길이 , connections의 수

 

 

 

 

더보기

 

(추가적인 설명)

 

 

 

 


● BUS 의 장점

 

1) Versaility : 새로 Device를 추가하기 쉽고
    Peripherals = Standard bus를 이용하는 IO device는 빼거나 이동시킬 수 있음 (조립하기 쉽다는 의미)

 

2) Low Cost : 하나의 wire를 여러 길로 빠지게 만들어서 공유하기 때문에 비용 절감 가능

 

 

● BUS 의 단점

1) Communiction bottleneck : 공통으로 병목 현상이 생긴다.

                                 하나의 wire에서 I/O Device로 가는 bus가 진행중이면 다른 길로 가는 건 막힌다.

 

 

2) Maximum bus 의 속도는 

   - Bus 의 Length

   - Devices 숫자 개수

   - 커버해야하는 범위의 devices

 

 


 

Control / Data Lines

 

- Control Line : 어떤 type의 Info 가 있는지 Data line에 있는지 알려준다.

ex) 지금은 data 관련 이동. / 지금은 address 를 다룰거다.

 

- Data Line : Data / Address / complex commands  

 

 

Bus transaction

 

Request 와 Resoponse를 포함한 Bus operation 의 순서

두 개의 파트로 나뉜다.

 

1) Sending Address
2) Receiving or Sending Data

 


Bus : Synchronous    vs   Asynchronous

 

  • Synchronous
     - Control line 안에 Clcok 이 들어가 있다.
     - Clock 을 확인하기 위해 프로토콜이 있다.
    - 장점 : 빠름
    - 단점 : 1. 모든 device가 clock에 맞춰 움직여야 함
                 2. CLK이 딸깍 하는 곳과 먼 곳은 반응이 늦을 수도 있다. = Clock skew

  • Asynchronous

    - CLK에 영향 X
    - 넓은 범위의 devices를 수용 가능
    - CLK skew 고려하지 않고 길이를 늘릴 수 있음
    - Handshaking protocol 사용

 

 

 

 

 


Instruction Set Architecture for I/O

 

배경 : Processor는 I/O에 관련되어 어떤 일을 할까?

          - Input : reads a sequence of bytes

          - Output : writes a sequence of bytes

 

대답 : Special I/O  Instruction

           →   IO device와 Processor 사이에 데이터를 주고받기 위해서 필요한 Inst가 있다.

 

 


 

 

 

IO device가 어떤 일을 하고 그걸 OS에 알려줘야한다. 

혹은 IO device에서 에러가 생겼을 때 알 수 있어야 한다.

그럴 때 쓸 수 있는 기술이 Polling과 I/O interrupt가 있음.

 

I/O device와 Processor(OS) 사이에 소통 관련하여 방법이 2가지가 있다.

 

 

 

1) Polling : CPU에서 I/O operation 을 계속 확인하는 것

 

    ==> IO device가 어떤 상태인지, 계속 주기적으로 체크함.
     (애기를 어른들이 계속 체크하는 거라고 생각하면 편함)

 

장점 : Processor가 다 control할 수 있으며, 일들을 다 맡아서 할 수 있음

단점 : CPU 타임이 너무 낭비 ( 계속 확인해야 하기 때문에 )

 

 

processor는 일을 하기 전에 2가지 상태를 확인한다. 

  (1) Control register : 읽고/쓰는써도 되는지 확인하는 용 ( = I/O ready )

  (2) Data register : data 담고있음

 

 

Control reg가 0 -> 1이면 써도 ㅇㅋ

그럼 가져올 거고, 다 끝나면 1 -> 0이 된다.

 

 

근데 계속 확인해야하니 단점대로 낭비가 너무 많다.

--> 그럼 Interrupt을 쓰자

 

 

 

  2) I/O Interrupt : IO device가 변화가 생기면 CPU에게 알려줌.


비유 :  애가 다 크면 지 필요할 때 연락함

 

● 연락하는 사유

 

- Exception : CPU에서 일어남.

  ex) undefined opcode , overflow , syscall

 

 

- Interrupt : 외부 External I/O controller 

 

특징 : Interrupt (including exception) 은 시스템에서 따로 신경을 써야한다.

 →  Interrupt 가 발생했을 때, 현재 진행중인 프로그램을 Inerrupt service routine으로 넘겨줘야 해서!   

 

- Interrupt Handling Procedure


1) 현재 진행되는 Procedure 나오기 , CPU의 상태 저장 (PC)
2) 불려간 곳에서 필요한 Action들을 한다.
3) 1) 에서 저장했던 CPU상태를 가져와서 원래 하던 프로그램으로 돌아온다.

 

 

 

Interrupt 와 exception의 차이

 

1) Interrupt는 Instruction 실행에  synchronized하지 않다.

 

 

 

 

2) CPU가 I/O한테 일을 시킴  → I/O가 일을 끝냈고 그걸 CPU한테 말함   

     = I/O Interrupt (보고사항 있을 때 말하는 것)

 

 


DMA

 

 

Direct Memory Access :

 

배경:  명령어가 많아지면 CPU가 일을 IO component 한테 줘도,

                              계속 다시 보고하러 CPU한테 오니까 CPU도 할 일을 못 함 

 

따라서 DMA를 만든다. 

> CPU가 DMAC한테 [ 메모리 시작 주소 , Read / Write /  얼만큼 가져올지 ] 를 보낸다.

    DMAC이 알아서 Mem과 IOC 사이에서 transfer 다 한다.

   그거 다 할 때까지는 다시 보고 안 함. 

 


 

요약

 

 

 

 

* Performance 는 OS와 device에서 가장 먼 곳으로 제한된다.

 

 

 

(출처)

한동대학교 용환기교수님 - 컴퓨터 구조