1. 컴퓨터 시스템의 구조
입력 (input) : 컴퓨터 내부로 데이터가 들어오는 것
출력(output) : 컴퓨터 외부 장치(= 입출력장치)로 데이터가 나가는 것
입출력(I/O) : ex ) 키보드로부터 입력받아 컴퓨터가 연산을 한 후 결과를 모니터에 출력하는 것
메모리 및 입출력장 등의 하드웨어 장치에는 컨트롤러가 있다. 컨트롤러는 일종의 작은 CPU로써 각 하드웨어 장치에서의 제어를 담당한다. 메모리를 제어하는 메모리 컨트롤러, 디스크를 제어하는 디스크 컨트롤러등이 있다.
운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분을 커널이라고 한다.
2. CPU연산과 I/O 연산
로컬 버퍼(local buffer) : 장치 컨트롤러는 장치로부터 오고 나가는 데이터를 임시로 저장하기 위해 작은 메모리를 가짐
장치 > 로컬 버퍼 > 메모리 > CPU
장치에서 로컬 버퍼로는 컨트롤러가 담당. 컨트롤러는 인터럽트를 발생시켜 CPU에 보고
CPU는 매 시점 메모리에서 명령을 하나씩 읽어오는데, 인터럽트 라인 신호가 들어오면 인터럽트와 관련된 일을 먼저 처리
3. 인터럽트의 일반적 기능
운영체제 커널 내의 인터럽트 처리루틴 : 다양한 인터럽트에 대해 각각 처리할 업무를 정의
CPU : 디스크의 로컬 버퍼 내용 > 사용자 프로그램 메모리로 전달 & 다음 명령 수행가능함 표시
인터럽트 벡터(interrupt vector) : 인터럽트 종류마다 번호를 정해 번호에 따라 처리할 코드 위치를 가르키는 자료구조
소프트웨어 인터럽트 (trap)
- 예외상황 (exception) , 시스템 콜 (system call)
4. 인터럽트 핸들링
인터럽트 핸들링(interrupt handling) : 인터럽트 발생 시 해야할 일의 절차
원래 하던일이 임시 기억장치인 레지스터(register)가 아닌 다른 곳에 저장해야함. (인터럽트 실행 시 레지스터 지워짐)
프로세스 제어블록(Process Control Block:PCB) : 프로그램마다 1개씩 존재. 프로그램의 어느 부분이 실행중이었는지 저장.
인터럽트 발생 시, PCB에 프로그램 상태를 저장한 다음 인터럽트를 실행한다.
* 오늘날의 운영체제 : 인터럽트 발생시에만 CPU점유
5. 입출력 구조
동기식 입출력(synchronous I/O) : 입출력 요청시 입출력 작업이 완료되어야 후속 작업을 수행할 수 있는 방식
CPU가 인터럽트를 기다리기 때문에(입출력 작업 완료까지) CPU가 인터럽트를 기다리면서 자원이 낭비됨.
프로그램이 입출력 수행중인 경우 CPU를 다른 프로그램에게 넘겨 CPU가 계속 일하도록 관리.
비동기식 입출력(Asynchronous I/O) : 입출력 연산 요청 후 CPU 제어권을 I/O 연산 호출 프로그램에게 다시 부여하는 방식
CPU의 제어권이 입출력을 요청한 프로세스로 바로 주어지며, 입출력 연산 완료와 무관하게 처리가능한 작업부터 처리.