운영체제

[운영체제] 시스템 구조 및 프로그램의 실행 Part2

whitedeveloper 2023. 3. 6. 22:27

#.동기식 입출력(synchronous I/O)

-I/O 요청 후 입출력 작업이 완료된 후에야 다음 작업을 실행

  >I/O를 요청한 다음에 그 I/O 장치로부터 작업이 끝난 다음에야 사용자 프로그램이 다음 일을 할 수 있음

 

-구현방법 1 : CPU를 가지고 있는 채로 I/O 작업 끝날 때 까지 기다린다.

  > I/O가 끝날 때 까지  CPU를 낭비시킴

  > 매시점 하나의  I/O만 일어날 수 있음

    >> 매 순간에  I/O 장치도 하나의 일만 하니까 I/O 장치도 낭비

 

- 구현방법 2 : I/O 요청 한 후 다른 프로세스에게 CPU 넘겨주기

  > I/O가 완료될 때 까지 해당 프로그램에게서 CPU를 빼앗음

  > I/O 처리를 기다리는 줄에 그 프로그램에게서 CPU를 빼앗음

  > 다른 프로그램에게 CPU를 줌

 

#.비동기식 입출력(asynchronous I/O)

- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 바로 넘어감

  > I/O 하라고 던져놓고 그 프로세스가 바로 CPU 다시 얻어와서 다음 일을 하는 것

 

=> 두 경우 모두 I/O의 완료는 인터럽트로 알려줌

 

-synchronous

  > user가 커널을 통해 I/O 작업 요청

  > 하드웨어를 통해 I/O를 읽거나 쓰는 작업 수행

  > 작업이 완료되었을 때 다시 user에게 인터럽트를 통해 알려줌

 

-Asynchronous

  > user가 커널을 통해 I/O 작업 요청

  > I/O 작업은 수행되지만 cpu제어권은 다시 얻어와 다른 일을 함

  > 작업이 완료되었을 때 다시 user에게 인터럽트를 통해 알려줌

 

 

#.DMA (Direct Memory Access)

- 메모리를 접근할 수 있는 장치

- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용

- CPU의 중재없이 device controller 가 device의 buffer stroage의 내용을 메모리에 block 단위로 직접 전

- 작은 일 하나하나 인터럽트 걸리면 CPU 가 효율적으로 작동하지 못함

- 버퍼에 데이터가 block 단위로 쌓이면 CPU에게 한번 인터럽트 걸어서 알려주기

    -> CPU가 인터럽트 당하는 빈도 낮아져서 효율적으로 일할 수 있게 됨

 

#.서로 다른 입출력 명령어

-좌 : I/O를 수행하는 special insturction에 의해

  > 주 메모리 주소 따로, I/O 주소 따로 관리

-우 : Memory Mapped I/O에 의해

  > 주 메모리 주소 규칙에 이어서 I/O 주소 규칙을 사용

 

#.저장장치 계층 구조

>가장 위는 CPU

- 주기억장치(Excutable)

  > 레지스터

  > 캐시메모리

    >> 빠른 메모리 접근을 위한 복사된 정보

  > 주 메모리

 

- 보조 기억장치(구성은 세대에 따라 달라짐)

  > 하드디스크

  > 광디스크

  > 테이프

 

- 특징

  > 위로 갈수록 속도가 빠르고, 용량이 적다.

  > 주 기억장치는 휘발성, 보조 기억장치는 비휘발성

  > 주 기억장치는 바이트 단위 접근, 보조 기억장치는 섹터 단위 접근