듀얼 모드와 타이머 인터럽트

sun202x·2023년 1월 13일
0

운영체제

목록 보기
4/23
post-thumbnail

해당 게시글은 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: 하드웨어를 접근하는 명렁어
      • in, out 명령어
    • none previleged instruction: 하드웨어를 접근하지 않는 명령어
      • add, load, int 명령어 등
    • protection을 하려면 자원을 보호해야 할 필요가 있다.
      • 따라서 previleged instruction는 kernel mode에서만 사용되도록 한다.
      • user mode에서 실행하면 exception이 발생한다.
  • trap(software interrupt)이 발생하는 상황
      1. 인터럽트를 실행하는 경우
      • 자연스러운 과정이라서 일반적인 흐름을 따른다.
      1. 분모가 0인 나누기일 경우
      • 잘못된 프로그램이라서 프로세스를 죽인다.
      1. user mode에서 previleged instrction 명령어를 실행하는 경우
      • 마찬가지로 잘못된 일을 수행하는 것이라서 프로세스를 죽인다.
      1. 지정된 메모리 영역 밖을 접근 한느 경우
      • 이것도 잘못된 일을 수행하는 것이므로 프로세스를 죽인다.

Timer Interrupt

  • 무한 루프를 빠져나오기 위해 Timer interrupt가 필요
  • cpu 내에는 clock이 존재 하고 그 옆에 배터리도 존재한다.
    • 배터리에 전력이 남아 있을 때는 항상 clock이 동작하게 된다.
  • 운영체제는 clock 이라는 시계가 인터럽트를 걸 수 있도록 해준다.
    • 약 1/1000 초마다 인터럽트가 발생한다.
  • 타이머 인터럽트가 하는 역할은
    • 현재 프로그램이 cpu를 얼마나 사용했는지 기록한다.
    • 만약 현재 프로그램이 한계를 넘어서 cpu를 사용하게 될 경우 강제로 프로그램을 꺼내고, 다른 프로그램을 cpu에 넣고 실행한다.
profile
긍정적으로 살고 싶은 개발자

0개의 댓글