<운영체제와 정보기술의 원리> 반효경 저
프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 주소 영역은 크게 코드, 데이터, 스택 영역으로 구분된다.
인터럽트의 동작 원리도 함수의 호출과 비슷하다. 프로그램이 CPU를 할당받고 명령을 수행하고 있는데 인터럽트가 발생하면 프로그램은 현재 수행 중인 명령의 위치를 저장해놓는다. 그 후 CPU는 운영체제 내부 코드인 인터럽트 처리루틴으로 넘어가서 인터럽트 처리를 하고 다시 돌아와 프로그램의 이전 작업 지점부터 수행을 계속 이어나간다. 인터럽트 때문에 CPU를 빼앗긴 위치는 운영체제가 관리하는 프로세스 제어블록에 저장된다.
CPU는 매 시점 프로그램 카운터가 가리키는 메모리 위치의 명령을 하나씩 읽어와 실행한다.
메모리에는 사용자 프로그램들과 운영체제가 같이 올라가 수행된다. 프로그램 카운터가 메모리 주소 중 운영체제가 존재하는 부분을 가리키고 있다면 CPU가 커널모드에서 운영체제의 코드를 수행 중이라는 뜻이며, 사용자 프로그램이 존재하는 메모리 위치를 가리키고 있다면 사용자모드에서 CPU가 수행되고 있는 것이다.
프로그램의 실행(program execution)은 첫 번째로 디스크에 존재하던 실행파일이 메모리에 적재된다는 의미와, 두 번째는 프로그램이 CPU를 할당받고 명령을 수행하고 있는 상태라는 의미를 가진다.
프로세스의 주소 공간은 코드, 데이터, 스택 등으로 구성된다.