CPU: 연산처리장치, 메모리에서 매 클럭마다 메모리에서 instruction을 읽어서 실행, register의 PC가 다음 수행할 명령의 주소를 가지고 있음, CPU는 메모리 하고만 일할 수 있음, I/O device와는 일할 수 없다. CPU는 정말 정말 빠른 속도로 일하는데 반해 I/O device와 같은 친구들은 너무나 느리기 때문에 같이 일을 하지 않음.
Memory: 실행중인 프로그램이 로드되는 영역, OS & Process가 올라감
I/O device: 입출력장치, Disk, keyboard, monitor... 등이 있음
timer: 특정 프로그램이 무한정 CPU를 점유할 수 없도록 세팅된 일정 시간 후 CPU를 반납하여 OS에 제어권이 넘어가도록 하기 위해 Interrupt를 거는 장치
device controller: 작은 CPU, I/O 장치의 입출력 과정에서 필요한 데이터 저장 및 연산 과정을 자체적으로 처리, 제어 정보를 위한 control register, status register, local buffer를 가짐, I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림, CPU는 Memory나 I/O device의 저장장치 모두에 접근 가능함
DMA(direct memory access) controller: I/O 장치에게 요청된 입출력 동작을 수행하고, 수행이 종료됐음을 Process에게 알려야 하는데, byte 단위로 수시로 결과에 대한 interrupt를 하면 CPU에 Overhead가 발생할 수 있기 때문에, block이나 page 단위로 처리한 후 interrupt를 걸게 됨, DMA controller는 이 입출력 수행 및 memory에 결과 반영 작업까지 수행한 후에 CPU에게 interrupt를 통해 작업이 완료됐음을 알리는 역할을 수행함(CPU와 더불어 Memory에 접근 가능한 장치)
memory controller: CPU와 DMA가 동시에 Memory에 접근해 작업할 경우 발생할 수 있는 문제를 방지하고 조율함
Interrupt: 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다, CPU에게 특정 작업에 대해 요청을 하기 위해 알리는 행위, CPU 제어권이 OS에게 넘어가고 OS가 필요한 작업을 처리하고 CPU를 재할당
인터럽트 관련 용어
Instruction: CPU가 Process를 동작시킬 때 읽는 기계어, 연산 및 메모리 버퍼 등 HW 컴퓨팅 기능을 사용하기 위해 작성된 비트로 이루어진 기계어
입출력(I/O)의 수행
의문점 정리
CPU랑 device controller 차이가 뭐지, device controller도 연산장치야?
Interrupt를 걸면 무조건 일단 제어권이 O.S에게 넘어가고 나서 다음 작업을 실행하나 아니며 바로 다른 프로그램으로 실행이 넘어갈 수도 있나?
사용자 프로그램이 O.S에게 특정 작업을 요청할 때 그 요청 관련 코드는 그럼 O.S가 사용자 프로그램에 접근해서 읽는거임??
- System call은 O.S를 구동시키기 위한 함수를 호출하는 것으로 사용자 프로그램과 O.S를 연결하는 interface 역할을 함. 사용자 프로그램에서는 단지 고급언어를 통해 O.S에게 필요한 것을 요청하는 것 뿐. 어떻게 시스템 콜이 동작할지는 O.S에 다 정의되어 있음. O.S가 사용자 프로그램의 코드를 읽을 일이 없음.
강의: http://www.kocw.net/home/search/kemView.do?kemId=1046323