본문 바로가기

기술 블로그 (Tech Blog)/검색용 개발 블로그

[운영체제] 입출력의 수행, 동기-비동기 입출력, 인터럽트

 

 

컴퓨터의 구조

유튜브로 참조함: https://www.youtube.com/watch?v=uMyKBYF48nY&t=18s

 

 

 

 

운영체제의 목적

프로세서 기억장치, 입출력 장치 등의 효율적 관리

유튜브: https://www.youtube.com/watch?v=uMyKBYF48nY&t=18s

 

1. 입출력 수행

 

입출력이란

데이터를 입력, 출력하는 행위이다.

 

다양한 장치로부터 입출력을 받는다.

1) 순서를 정한다

I/O 스케쥴링 --> 성능이 높아진다

 

 

2. 동기식 입출력

여러 프로세스가 동시에 I/O요청을 할 경우, 각 요청을 큐에 넣어 순서대로 처리한다.

 

프로그램이 I/O 요청을 했을 때, 해당 I/O를 작업이 완료되어야 다음 작업을 할 수 있다.

완료되면 --> 사용자 프로그램으로 제어가 넘어간다.

 

I/O가 진행되는 동안 다음 명령을 수행하지않고 기다린다.

I/O 상태의 프로세스는 Block state로 전환된다.

I/O가 완료되면 인터럽트를 통해 완료를 알린다. 이후 CPU의 제어권이 기존 프로그램에 넘어간다.

Blocked state의 프로세스는 wait 상태로 돌아간다

명령 수행 속도 빠르다 입출력 연산은 느리다
I/O가 진행되면 CPU는 다른 프로그램의 작업을 수행한다 기다리는 과정에서 CPU 자원 낭비 초래

 

3. 비동기식 입출력

CPU의 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 다시 부여한다.

I/O 결과와 관련이 없는 연산이 있을 경우 주로 사용된다.

CPU는 I/O 결과와 상관 없이 처리가 가능한 작업부터 처리한다.

I/O 연산이 완료되면 인터럽트를 통해 알린다.

 

공통점

I/O의 완료는 인터럽트로 알려준다.

4. 인터럽트

CPU는 굉장히 빠르다

I/O는 굉장히 느리다

CPU가 기다리지않게... CPU는 계속 일한다... 중간에  I/O가 CPU에게 '나 작업 끝났어'라고 알리는 것이 인터럽트다.

 

CPU가 프로그램을 실해앟고 있을 때, 입출력 하드웨어 등의 장치나 예외 상황이 발생하여 처리가 필요한 경우

마이크로 프로세(CPU)에게 알려서 처리할 수 있도록 한다.

 

하드워에 인터럽트 소프트웨어 인터럽트
하드웨어가 발생시킴
하드웨어 장치가 CPU에게 요청, 사실 전달할 경우 발생
소프트웨어가 발생시킴
사용자 프로그램이 스스로 인터럽트 라인은 세팅한다.
ex) 예외 상황, system call