해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다.
운영체제의 구조
- 멀티 프로그래밍 이라고 하는 것 자체가 메모리에 여러개의 프로그램이 올라와 있고, 필요에 따라 cpu가 비게 되면 이 프로그램들 중 하나에게 할당해 주는 형식이다.
- 기본적으로 interrupt를 처리하기 위해 발전하게 되었다.
Dual-mode
- protection을 보장하기 위해 가장 큰 내부 구조가 Dual-mode이다.
- protection이란
- 여러 사용자의 정보가 있을 때 한 사용자의 정보를 다른 사용자의 프로그램에서 접근하지 못하게 막는 것을 말한다.
- 커널의 코드나 자료구조를 다른 일반적인 프로세스가 접근하지 못하도록 하는 것을 말한다.
- 컴퓨터의 mode bit을 통해
- user mode
- kernel mode
- 일반적인 프로그램이 실행될때는 mode bit이 user mode를 가리키고
- 인터럽트가 발생하여 PC가 저장되고 커널로 이동할 때는 kernel mode를 가리키게 된다.
- 인터럽트 핸들러가 처리되고 다시 일반 프로세스로 돌아오는 순간 user mode로 변경된다.
- 결국 PC가 가리키는게 user area에 있으면 user mode, kernel area에 있으면 kernel mode를 가리킨다.
- protection을 수행하기 위해 명령어를 두가지로 나눈다.
- previleged instruction: 하드웨어를 접근하는 명렁어
- none previleged instruction: 하드웨어를 접근하지 않는 명령어
- protection을 하려면 자원을 보호해야 할 필요가 있다.
- 따라서 previleged instruction는 kernel mode에서만 사용되도록 한다.
- user mode에서 실행하면 exception이 발생한다.
- trap(software interrupt)이 발생하는 상황
- 인터럽트를 실행하는 경우
- 자연스러운 과정이라서 일반적인 흐름을 따른다.
- 분모가 0인 나누기일 경우
- user mode에서 previleged instrction 명령어를 실행하는 경우
- 마찬가지로 잘못된 일을 수행하는 것이라서 프로세스를 죽인다.
- 지정된 메모리 영역 밖을 접근 한느 경우
- 이것도 잘못된 일을 수행하는 것이므로 프로세스를 죽인다.
Timer Interrupt
- 무한 루프를 빠져나오기 위해 Timer interrupt가 필요
- cpu 내에는 clock이 존재 하고 그 옆에 배터리도 존재한다.
- 배터리에 전력이 남아 있을 때는 항상 clock이 동작하게 된다.
- 운영체제는 clock 이라는 시계가 인터럽트를 걸 수 있도록 해준다.
- 타이머 인터럽트가 하는 역할은
- 현재 프로그램이 cpu를 얼마나 사용했는지 기록한다.
- 만약 현재 프로그램이 한계를 넘어서 cpu를 사용하게 될 경우 강제로 프로그램을 꺼내고, 다른 프로그램을 cpu에 넣고 실행한다.