오늘은 앞으로 운영체제를 공부하는데 있어서 사전에 필요한 개념에 대해서 짚고 넘어가려고 합니다.
흔히들 컴퓨터 부팅한다라는 말을 많이 들어보셨을 겁니다.
부팅은 컴퓨터의 전원 버튼이 눌려지면 운영체제의 일부가 메모리에 올라와 실행되고 장치들을 준비시키고 각종 레지스터 값을 초기화 하고 사용자의 입력을 받을 준비를 하는 과정이라고 할 수 있습니다.
레지스터는 메모리보다 빠른 기억 장치입니다.
이 레지스터는 여러가지 종류가 있습니다.
➡️ 명령어 실행주기
가장 중요하게 볼 부분입니다. 계속해서 이 개념이 운영체제를 배우는데 있어서 등장할 것이고 따라서 확실하게 알고가야 합니다.
CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 뜻합니다.
인터럽트는 2가지로 나눠서 볼 수 있습니다.
ex) system call, Exception(예외상황)
인터럽트는 다음 그림과 같은 과정을 거치면서 이루어집니다.
출처: https://blackinkgj.github.io/IO/
세세히 각 과정에 대해서 살펴보겠습니다.
실행 중이던 프로그램의 현 상태를 시스템 스택(그림에서는 제어스택)에 저장합니다. 여기서 현 상태 정보는 PC와 PSW 레지스터 값 등을 말할 수 있습니다.
그 후 인터럽트 처리 루틴의 시작 주소를 PC 레지스터에 넣어 실행시킵니다.
인터럽트 처리가 끝난 후 시스템 스택(제어 스택)에 있는 이전의 저장했던 정보들은 다시 레지스터에 Restore하고 PSW, PC 레지스터 값들을 원래 자리에 다시 넣어줍니다.
그리고 프로그램을 이어서 실행해 나갑니다.
운영체제를 배우면서 필수적으로 알아야할 개념에 대해서 살펴보았습니다. 특히 인터럽트는 매우 중요하기 때문에 꼭 개념을 알고 넘어가야합니다.
다음 시간에는 프로세스와 스레드에 대해서 알아보겠습니다😃