Day-13
5장 컴퓨터 아키텍처와 운영체제
-컴퓨터는 어떻게 프로그램과 메모리를 관 리할까
3. 인터럽트
순서도는 작업이 이뤄지는 순서를 표현하는 다이어그램이다.
이런 방법을 폴링 이라고 부른다.
인터럽트 시스템
- 요즘 쓰이는 프로세서 대부분에 들어감
- 적절한 신호가 들어오면 CPU 실행을 잠깐 중단시킬 수 있는 핀이나 전기 연결을 포함
- 많은 프로세서 칩에는 통합 주변장치가 들어있고 이런 장치
(온칩 I/O 장치라고도 함)
들은
내부적으로 인터럽트 시스템에 연결되어 있음
핀
작동방식
- CPU가 주의를 기울여야 하는 주변장치는 인터럽트 요청을 생성
- 프로세서는 현재 실행 중인 명령어를 끝까지 실행
- 현재 실행 중인 프로그램을 잠시 중단시키고 인터럽트 핸들러(함수) 라는 전혀 다른 프로그램 실행
- 필요한 작업을 다 마치고 나면 원래 실행중이던 프로그램이 중단된 위치부터 다시 실행을 계속함
- 인터럽트에 대한 응답 시간
- 인터럽트 처리를 정해진 시간 안에 끝내야함
- ex) 배달기사에게 시간을 너무 많이 소모하면 쿠키가 타버림
- 인터럽트를 서비스하고 나중에 다시 원래대로 돌아오기 위해서는 현재 상태를 저장할 방법이 필요함
- ex) 인터럽트가 걸린 시점에 실행 중이던 프로그램이 레지스터에 어떤 값을 저장하고 있었다면, 인터럽트 핸들러는 그 레지스터를 저장했다가 나중에 원래 프로그램으로 돌아오기 전에 레지스터값을 복구해주어야 함
인터럽트 시스템은 서비스 후 돌아올 프로그램 위치를 스택에 저장함.
인터럽트 핸들러는 자신이 덮어 쓸 레지스터를 모두 저장해야 할 책임이 있음.
이렇게 약속하면 인터럽트 핸들러가 저장해야 하는 요소를 최소화해서
가장 빨리 인터럽트를 서비스 할 수 있다.
컴퓨터가 어떻게 인터럽트 핸들러 위치를 찾을까?
- 보통은 인터럽트 핸들러 주소를 저장하기로 약속한 메모리 주소가 존재함
- 이 주소에는 여러 인터럽트 벡터가 들어있고,
CPU가 지원하는 각 인터럽트에 대한 핸들러 주소를 지정함
- 인터럽트 벡터는 단지 메모리 위치를 가리키는 포인터다.
- 인터럽트가 일어나면 컴퓨터는 인터럽트 벡터에 저장된 주소를 살펴보고 제어를 그 주소로 옮긴다.
인터럽트 벡터
- 많은 기계가 물리적인 주소를 벗어나는 사용하려고 시도하거나
- 스택 오버플로가 일어나는 등의 예외상황에도 제공됨
인터럽트 제어
- 인터럽트를 중단시킬 수 있는 마스크가 있는 경우가 자주 있음
- 인터럽트가 많이 있는 기계에는 종종 인터럽트간의 우선순위가 있음
(더 중요한 인터럽트를 더 먼저 처리하게 해줌)
- 대부분의 기계에는 일정 시간이 지나면 인터럽트를
발생시킬 수 있는 내장 타이머도 하나 이상 들어있음.
다른 일반 프로그램들은 접근할 수 없는 물리적(하드웨어) 인터럽트에 접근할 수 있는 경우가 종종 있음
운영체제는 일종의 가상 인터럽트나 소프트웨어 인터럽트 시스템을 제공하기도 함
ex) 유닉스 운영체제는 시그널 메커니즘을 제공
최근 개발된 시스템들은 보통 이를 이벤트라고 부름
4. 상대 주소 지정
여러 프로그램을 동시에 실행하려면, 각 프로그램을 서로 전환시켜 줄 수 있는
일종의 관리자 프로그램이 필요
- 이러한 프로그램을 운영체제 or 운영체제 커널 이라고 부름
- OS와 OS가 관리하는 프로그램을 구분하기 위해 OS를 시스템 프로그램이라고 부르고 다른 모든 프로그램을 사용자 프로그램이나 프로세스라고 부름
간단한 OS 작동
OS는 타이머를 사용해 사용자 프로그램을 전환시켜줄 때가 됐는지 판단함.
시분할
- 사용자 프로그램의 실행 시간을 조절하는 스케줄링 기법
- 시간을 정해진 간격으로 나누고, 정해진 시간 간격 동안 사용자 프로그램을 실행함
- 사용자 프로그램 상태 or 문맥은 레지스터의 상태와 프로그램이 사용 중인 메모리의 상태를 뜻함.
- 메모리에는 스택도 포함된다.
이렇게 각 프로그램에게 각기 다른 공간을 허용할 수 있으면 훨씬 더 빠르게 시분할 실행이 가능함
179페이지에서 사용된 ‘주소 지정 모드’
절대 주소 지정