본문 바로가기

C.E/OS

I/O Structure - Synchronous&Asynchronous

컴퓨터 시스템에서 입출력 과정은 다음과 같다.

 

1. CPU가 Device Controller의 레지스터의 원하는 명령어를 적재

 

2. Device Controller가 동작을 결정(ex.read 인가 write인가)

 

3. 장치는 Device Controller의 Local Buffer에 자료를 전송(read의 경우)

 

4. 인터럽트를 통해 완료 통보

 

5. CPU가 Device Controller의 Local Buffer에서 자료를 가져옴

 

이러한 입출력 구조도 Synchronous 방식과 Asynchronous 방식에 따라 다르다.

 

1. Synchronous 방식

 

입출력이 전부 종료된 후에야 Control이 사용자 Process에게 돌아온다. 즉 어떤 프로세스가

 

특정 장치에게 입출력을 요청했다면 인터럽트가 발생할때까지 대기하게 된다. 이 방식의 경우

 

특정 시간에 입출력을 요구하는 Process는 언제나 하나이다.

 

2. Asynchronous 방식

 

입출력이 끝나기를 기다리지 않고 Control이 사용자 Process에게 돌아온다. 즉 어떤 프로세스가

 

특정 장치에게 입출력을 요청했다면 요청한 후에 바로 다음 작업을 진행하게 된다. 이 방식의 경우

 

특정 시간에 특정 장치에게 입출력을 요구하는 Process가 여러개 있을 가능성이 존재한다.

 

 그렇기 때문에 Device-status table 즉, 장치 상태 테이블을 두어 구분한다.

 

 

 

이러한 장치 상태 테이블은 장치의 타입과 주소, 그리고 상태를 나타낸다.

 

만일 인터럽트가 발생하면 CPU는 인터럽트를 발생시킨 장치를 확인하고

 

장치 상태 테이블을 읽어 장치의 상태를 결정한다. 그리고 그에 따라 테이블을 갱신한다.

 

만일 큐에 대기중인 인터럽트 요청이 있다면 서비스하고 다시 돌아간다.