1.2 컴퓨터 시스템의 구성
1) 현대의 컴퓨터 시스템 = cpu, 메모리, 여러 개의 device controller가 버스에 의해 연결되어 있는 구조.
2) 컴퓨터가 켜질 때, BIOS 후 bootstrap 실행.
bootstrap은 ROM에 저장되어 있으며, 시스템 초기화 후 운영체제의 커널을 찾아 메모리에 적재한다.
3) 그 후 운영체제는 init 과 같은 첫 번째 프로세스 수행후 event를 기다린다. 이벤트가 발생하면 interrupt에 의해 신호가 보내짐.(하드웨어는 system bus를 통해, 소프트웨어는 system call을 통해 interrupt 발생시킬수 있음.)
4) cpu가 interrupt 되면 하던 일을 중단하고, 고정된 위치(일반적으로 interrupt를 위한 서비스 루틴의 시작위치)로 실행을 옮긴다.
interrupt는 매우 빠르게 처리되어야 하고, 사용 가능한 interrupt의 수가 미리 정의되어 있으므로, interrupt 루틴에 대한 포인터들의 테이블을 이용한다.(어떤 종류의 interrupt인지 조사하는 과정 생략) 이 포인터들의 테이블은 메모리에 저장되어 있으며, 여러 장치에 대한 interrupt 서비스 루틴의 주소가 들어있다. interrupt가 요청되면, 요청과 함께 interrupt 벡터(주소 배열)이 색인된다.
5) interrupt 서비스 루틴의 실행이 완료되면, cpu는 interrupt 되었던 연산을 재개한다. interrupt 되었던 명령의 복귀주소는 시스템 스택에 저장된다. 만약, interrupt 루틴이 레지스터 등의 값을 변경한다면, 현재 상태를 저장, 복귀 전에 상태를 복원하여야 함. interrupt 후, 연산이 중단된적이 없던 것처럼 다시 시작된다.
6) 컴퓨터가 프로그램을 수행하려면, 프로그램이 주 메모리(RAM)에 있어야함. 주 메모리는 CPU가 직접 접근 할수 있는 유일한 대량 저장 장치이며, DRAM이라는 반도체 기술로 구현됨.
DRAM은 메모리 워드의 배열을 형성하며, 각 워드는 자신의 주소를 가지고 있다. cpu와 메모리 사이의 상호작용은 load, store 명령을 통하여 이루어진다. (load – 주 메모리에서 레지스터로 한 워드를 옮기는 것, store – 레지스터 -> 주 메모리)
7) I/O
device controller는 특정 유형의 장치들을 담당하며, 지역 버퍼 저장 장치와 특수 목적용 레지스터 집합을 가진다. device controller는 자신이 제어하는 장치와 지역 버퍼간의 자료 전송을 담당한다. 운영체제는 장치 드라이버를 사용해 device controller를 관리한다.(장치 드라이버는 device controller의 레지스터에 명령 적재, device controller는 레지스터의 내용에 따라 장치로부터 지역버퍼로 자료전송)
+] interrupt driven I/O
1. CPU가 I/O제어기에 명령을 보내고, CPU는 다른 작업을 수행.
2. 제어기는 I/O 장치를 제어하여 I/O 명령을 수행.
3. I/O 명령 수행이 완료되면, 제어기는 CPU 로 인터럽트 신호 전송.
4. CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 수행을 계속한다.
인터럽트 방식은 기억장치와 I/O 장치간의 데이터 통신에 CPU가 직접개입을 하여야 하는데, 이로인하여, 이동되는 데이터들이 반드시 CPU를 경유해야 한다는 단점이 있음.
+] DMA(Direct Memory Access) 방식
CPU의 개입없이 I/O장치와 기억장치 사이에 데이터를 전송하는 방식
device controller는 CPU의 개입 없이 메모리와 자신의 버퍼 장치 간에 자료 블록 전체를 전송한다. 전송이 완료되면 interrupt가 발생 한다. device controller가 전송작업을 하는동안 cpu는 다른 작업을 수행 할수 있다.
정말 유익한 자료네요
답글삭제