명령어를 처리하기 위해서는 아래 그림과 같은 절차가 필요하다.
먼저, 메모리에 있는 명령어를 읽어서 레지스터로 갖고 온다. (Fetch)
그다음, 연산 종류를 파악하고 실제로 실행하는 과정을 거치면서 명령어가 처리된다. (Decode)
이 과정이 반복되면서 전체 프로그램이 실행된다. (Execute)
컴퓨터 시스템에 존재하는 각 자원들의 상태를 파악하는 방법
폴링
- CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식이다.
- 단점 1) 폴링 간격이 적절해야하고, 다음 폴링까지 자신의 상태를 알릴 수 없다.
- 단점 2) 아무일 없어도 CPU는 폴링에 일정시간 들어야한다.
인터럽트
- 각 자원들이 능동적으로 자신의 상태변화를 CPU에게 알리는 방식이다.
- 자주 일어나는 일이라 커널에 있어야한다.
- 폴링단점극복) CPU 시간 따로 들이지 않고, 상황 발생시 즉시 알려서 처리한다.
- 하드웨어 인터럽트 : 자원들로 부터 인터럽트
ex) 입출력 인터럽트
- 소프트웨어 인터럽트 : CPU 자신에게 인터럽트, 트랩(Trap) 이라고도 불린다.
ex) 예외 : 실행중인 명령어의 오류 때문에 일어난다. (0으로 나누기, 다른 사용자 주소 참조 등)
ex) 시스템 콜(System call) : 사용자가 의도적으로 일으킨다.
인터럽트 처리과정
- 장치가 인터럽트 신호를 CPU에게 보낸다.
- CPU는 실행 중인 명령어를 완료시키고 인터럽트 신호를 확인힌다.
- 현재 수행 중인 프로그램 상태 정보를 시스템 스택에 저장한다. (PSW, PC의 내용)
- PC에 인터럽트 처리 루틴의 시작 주소를 넣으면 처리 루틴이 시작된다.
- 처리 루틴은 CPU에 있는 레지스터들의 값을 저장한 후 필요한 처리 루틴을 실행한다.
- PSW와 PC의 저장된 값을 원래대로 재저장한다.
- 인터럽트가 걸린 다음 명령어부터 실행이 재개된다.
PSW : Program Status Word 레지스터
PC : Program Counter 레지스터
중첩된 인터럽트의 처리
(a) 인터럽트의 순차처리 : 인터럽트의 중요도가 같다.
(b) 인터럽트의 중첩처리 : 시급한 인터럽트가 먼저 들어온다. 중첩처리 되어지는 만큼 제어스택을 위로 쌓아준다.
<OS? Oh Yes! 누워서 보는 운영체제 이야기> 교재를 이용한 수업 내용을 바탕으로 본인이 스스로 작성하였습니다.
'CS > 운영체제' 카테고리의 다른 글
OS(운영체제)란 무엇일까? (역할, 구성요소, 위치) (0) | 2021.01.07 |
---|---|
운영체제의 역사 및 운용기법 (일괄처리 시스템, 다중 프로그래밍 시스템, 다중처리 시스템, 시분할 시스템, 대화식 시스템) (0) | 2021.01.06 |