I/O Request Life Cycle

갱두·2021년 12월 5일
1

📚 운영체제

목록 보기
12/14

정의

1. Device Controller

  • 하드웨어
  • 디바이스를 전담하는 작은 CPU. 어떻게 헤드를 움직여서 어떤 데이터를 읽어올지 정함
  • IO 작업은 CPU와 로컬버퍼와 컨트롤러 사이에서 이루어진다.
    키보드를 입력하면 로컬 버퍼에 저장해 놨다 컨트롤러가 가져가 CPU가 사용하고,
    모니터 같은 경우엔 출력할 data를 로컬 버퍼에 저장해놓면 컨트롤러에 지시를 내려 출력하라 명령하고, data를 디스크에 저장하고 싶으면 CPU가 data를 로컬버퍼에 넣고 컨트롤러에 명령을 내려 디스크에 저장하는식.

(근데 이렇게 I/O디바이스마다 지 할거 하려고 CPU를 인터럽트 하는데, CPU가 너무 혹사 당하는 것같아서 사용하는게 DMA Controller = 작업이 다 되면 인터럽트 ❌ 직접 메모리로 이동까지 시켜줌)

2. Device Driver
= 디스크를 실행하기 위해 필요한 코드를 담고 있음
(ex. 펌웨어)

✅ 컨트롤러와의 차이 ?
컨트롤러는 하드웨어 드라이버는 소프트웨어

  • 컨트롤러가 아닌 CPU가 실행시키는 코드임. OS가 컨트롤러에게 부탁하는 방법이 적혀있는 코드가 드라이버라 보면 된다.
  • OS 커널의 가장 아랫단에 존재한다.

3. Interrupt Handler

  • 인터럽트 발생 시에 프로세스의 상태를 저장함
  • 커널 모드로 전환해줌

순서

IO장치를 접근하는 것은 모두 커널모드에서 수행됨 = 운영체제를 통해서만 수행이 되는 것
그럼 사용자 프로세스가 IO를 수행하기 위해서는 ? system call

간단하게 라이프 사이클을 알아보면
1. 프로세스가 시스템콜을 통해 IO를 OS에게 요청(인터럽트랑 비슷한 시스템콜)
2. OS는 디바이스 컨트롤러에게 디바이스 드라이버를 통해 일을 시킨다
3. OS는 CPU제어권을 다른 프로세스에게 넘긴다(I/O요청은 오래 걸리니까)
4. 다른 프로세스 수행 중 디바이스가 I/O작업을 끝내면 인터럽트 신호를 보낸다(하드웨어 인터럽트)

✔️ 인터럽트는 총 두번

참고 : https://kouzie.github.io/operatingsystem/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0,-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%B2%98%EB%A6%AC/#%EB%8F%99%EA%B8%B0%EC%8B%9D-%EC%9E%85%EC%B6%9C%EB%A0%A5
http://melonicedlatte.com/computerarchitecture/2020/01/01/234600.html

profile
👩🏻‍💻🔥

0개의 댓글