21-1학기 운영체제에 대해서 배운 내용들을 상기하고 기록하기 위해 글을 쓰려고 합니다.
첫 글은 OS에 대해 글을 쓰기 전에 이해를 돕기 위해서 컴퓨터 구조에 대해서 Review를 하고자 합니다.
위의 그림은 Top-Level View로 본 컴퓨터 구조로 크게 4가지 요소(CPU,Main Memory, I/O modules, System bus)로 구성되어 있다.
Instruction Execution은 크게 2개의 단계를 거치게 된다.
Fetch stage에서는 명령을 읽고 Execute stage에서는 실행한다.
그림에서 PC란 Program Counter로 다음에 실행할 명령의 주소가 들어있다.
AC란 Accumulator로 연산 결과 데이터를 일시적으로 저장하는 레지스터다.
IR이란 Instruction Register으로 지금 실행중인 명령어가 들어있다.
MAR이란 PC에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터다.
MBR이란 기억장치에 저장될 데이터 혹은 읽혀진 데이터가 일시적으로 저장되는 버퍼 레지스터다.
이와 같은 경로로 Fetch stage에서는 명령어를 가져오고 Execute stage에서는 명령어를 분석하고 실행한다.
Interrupt란 processor의 정상적인 순서가 방해받는 것이다.
그림에서 보면 user program1에서 I/O를 요청하고 user program2를 실행하던 도중 I/O작업이 다 끝나서 2a와 2b사이에서 CPU에 Interrupt가 발생한 것이다.
즉, Interrupt는 중단하길 원했던 부분이 아닌 곳에서 발생한다.
Interrupt stage를 추가한 Instruction Execution Cycle은 아래와 같다.
주의해야 할 점은 Fetch stage와 Execute stage에서도 Interrupt는 언제든 발생 할 수 있다.
하지만 Interrupt에 대한 처리는 Execute stage가 끝나고 Program Status Word의 Interrupt enable/disable bit를 확인해서 Interrupt가 발생했는지 확인하고 발생했다면 Interrupt stage에서 처리한다.
여기서 Interrupt Handler는 interrupt에 걸렸을 때 왜 interrupt에 걸렸는지, 어떻게 처리해야할지 결정하고 요청하는 os의 한 부분이다.
Interrupt가 처리되는 과정을 memory와 register에 대해서 자세하게 보면 아래와 같다.
a는 interrupt가 발생하여 프로그램이 실행하다가 중단이 됐을 때 register의 값을 저장하는 상황이고, b는 interrupt가 끝나고 다시 프로그램을 복원할 때의 상황이다.
Interrupt service routine가 interrupt를 처리한 후, 프로그램을 다시 복원해야하므로 b의 상황이 된다.
Interrupt가 처리되는 과정을 Hardware와 Software로 나눠서 보면 아래와 같다.
용량이 커질수록 access time도 커지고 cost per bit는 낮아진다.
main memory와 CPU사이에 존재하는 cache memory는 OS에서 관리하는게 아니므로 빠르다.
잘못된 점이나 지적할 부분이 있다면 언제든 환영입니다!