middlefitting

I/O 디바이스 입출력에 관하여 본문

OS

I/O 디바이스 입출력에 관하여

middlefitting 2023. 1. 23. 23:05

I/O 디바이스란

I/O 디바이스는 입출력을 수행할 수 있는 하드웨어 장치를 말합니다.

 

I/O 디바이스 종류의 예시는 다음과 같습니다.

  • Input : 키보드
  • Output: 모니터
  • Input / Output: 하드디스크

 

 

 

I/O 의 작업과정

입출력은 디바이스 컨트롤러를 통해 명령을 수행

 

디바이스 컨트롤러란 I/O 디바이스를 전담하는 CPU 같은 것이고, 디바이스 내부를 통제합니다.

 

CPU는 직접 I/O 디바이스를 통제하지 않고 디바이스 컨트롤러에 위임을 하여 작업을 수행합니다.

 

그런 구조로 진행이 되는 이유는 컴퓨터에서 가장 빠른 CPU의 낭비가 이루어지면 안되기 때문입니다.

 

작업속도는 CPU >>>>> Lam >>>>> I/O 입니다.

 

따라서 CPU가 자기보다 상대적으로 느린 I/O 작업을 담당하고 기다리는 것은 큰 낭비일 것입니다. 

 

CPU 의 운명은 열심히 누구보다 빠르게 남들과는 다르게 Instruction 명령을 수행하는 것 뿐입니다. 

 

 

Mode bit, 누가 운영체제를 점유하고 있는가

 

CPU를 점유할 수 있는 친구들은 운영체제, 사용자 프로그램이 있습니다.

 

다만 이 둘은 수행할 수 있는 명령이 다릅니다.

 

이유는 사용자 프로그램이 실수로 혹은 악의적으로 운영체제 및 다른 프로그램에 피해를 끼치지 못하게 하기 위해서 입니다.

 

누가 CPU 를 점유하고 있는지 구분하기 위해서 Mode bit 이라는 비트를 사용합니다.

 

1은 사용자 모드, 0은 커널(운영체제) 모드입니다.

 

 

I/O 디바이스 컨트롤러에 명령을 내릴 수 있는 것은 운영체제 뿐

 

디바이스 컨트롤러에 I/O 요청을 할 수 있는 것은 운영체제 뿐, mode bit이 0일 경우만 가능합니다.

 

그러면 사용자 프로그램은 어떻게 I/O 요청을 할 수 있을까요, 그것은 시스템 콜을 통해 이루어집니다.

 

사용자 프로그램은 주소점프를 하지 못하기 때문에 사용하는 방법인데 사용자 프로그램이 커널 함수를 호출하는 것입니다.

 

사용자 프로그램은 I/O 요청을 위해 운영체제에 부탁을 하는 것입니다.

 

그 결과 프로그램은 interrupt line을 세팅하는 instruction을 실행하게 되고 interrupt 가 걸린 CPU는 modebit이 0으로 바뀌고

 

운영체제가 점유하게 됩니다. 그러면 운영체제는 사용자 프로그램이 부탁한 I/O 요청을 디바이스 컨트롤러에 요청을 하게 되는 것입니다.

 

 

I/O 작업 및 Local buffer

 

명령을 받은 디바이스 컨트롤러는 I/O 작업을 진행하게 됩니다.

 

I/O 작업을 위해서는 사용하는 메모리는 자체 메모리 영역인 local buffer에서 수행하게 됩니다.

 

출력은 메인 메모리에서 가져온 내용을 local buffer에 담아 수행할 것이고, 입력은 그 반대가 되겠습니다.

 

I/O 작업을 마친 후에는 CPU 에 interrupt를 걸어 작업을 끝냈음을 알리게 됩니다.

 

 

DMA 컨트롤러

 

원래 메인 메모리는 CPU만 접근할 수 있습니다. 다만 그러면 또 비효율적인 일들이 생깁니다.

 

그 예시로 I/O 작업을 위해 CPU 가 메인 메모리와 local buffer로 이동이라는 비용이 소요되는 일을 해야 합니다.

 

따라서 CPU를 돕기 위해 DMA 컨트롤러가 존재합니다.

 

직접 메모리를 접근할 수 있는 컨트롤러이며 local buffer를 메인 메모리로 복사하는 역할을 수행하게 됩니다.

 

그리고 복사가 끝나면 interrupt 걸어 작업을 끝냈음을 알리게 됩니다.

 

근데 CPU와 DMA 컨트롤러가 특정 메모리 영역을 동시에 접근하면 일관성 등 문제가 발생할 것입니다.

 

따라서 해당 교통 정리 역할로 메모리 컨트롤러가 존재합니다.

 

 

I/O 작업 이후

 

I/O 작업이 끝나고 메모리도 다 옮긴 이후에 interrupt 가 걸리면 CPU를 운영체제가 점유하게 됩니다.

 

이후 운영체제를 통해 CPU 는 I/O 를 요청한 사용자 프로그램으로 넘어가게 됩니다.

 

 

 

참고문헌

KOWS 운영체제 - 반효경 교수님 - System Structure & Program Execution 1

http://www.kocw.net/home/search/kemView.do?kemId=1046323

'OS' 카테고리의 다른 글

프로세스 관리에 관하여  (0) 2023.01.27
[Process] 프로세스란 무엇인가  (0) 2023.01.26
[OS] Context Switch란 무엇인가  (0) 2023.01.25
[I/O] 동기식 입출력과 비동기식 입출력  (0) 2023.01.24
운영체제란 무엇인가  (0) 2023.01.22