본문 바로가기
개발공부 개발새발/OS

OS ) 이중 모드, 다중 모드, 타이머

by 휴일이 2024. 12. 22.

이중 모드 Dual-Mode, 다중 모드 Multimode Operation

운영체제는 잘못된 (또는 악의적인) 프로그램으로 인해 다른 프로그램이나 운영체제 자체가 잘못 실행될 수 없도록 보장해야 함.

  • 운영체제 코드 실행사용자 정의 코드 실행구분할 수 있어야 함.
  • 이중 모드는 잘못된 사용자로부터 운영체제를, 잘못딘 사용자를 서로 보호하는 방법을 제공하는데…

두 가지 모드

  • 사용자 모드
  • 커널 모드

모드 비트

모드 비트 는 커널모드(0), 사용자모드(1) 을 나타낸다.

  • 이 모드 비트로 사용자를 위한 사용자 모드와 운영체제 실행 모드인 커널 모드를 구분할 수 있음.
  • 사용자 앱이 운영체제로부터 시스템 콜 로 서비스를 요청하면 요청을 수행하기 위해 사용자모드 → 커널모드로 전환.

시스템 동작

  1. 시스템 부트 시, 하드웨어는 커널 모드에서 시작.
  2. 운영체제가 적재.
  3. 사용자 모드에서 사용자 프로세스가 시작 된다.

참고

  • 트랩이나 인터럽트가 발생할 때마다 하드웨어는 사용자 모드에서 커널 모드로 전환 된다.
  • 운영체제가 컴퓨터의 제어를 얻을 때마다 항상 커널 모드에 있게 된다.
  • 사용자 프로그램에 제어가 넘어갈 때는 항상 사용자 모드로 바꾼다.
  • 특권 명령

커널 모드로 전환하는 명령어

  • I/O 제어
  • 타이머 관리
  • 인터럽트 관리

특권 명령

하드웨어 자원에 직접 접근하거나 시스템 중요 설정을 변경하는 명령.

  • 커널 모드에서만 수행되도록 허용.
  • 사용자 모드에서 특권 명령을 수행하려고 하면, 운영체제는 이를 불법적인 명령으로 간주해 “트랩”을 건다.
💡 모드는 두 가지 이상의 모드가 있을 수 있다. 가상 머신을 생성하고 관리하는 VMM(Virtual machine manager) 처럼 사용자 프로세스보다 많은 권한을 가지지만 커널 모드보다는 적은 권한을 가지는 모드도 있다.

시스템 콜

사용자 프로그램이 자신을 대신하여 운영체제가 수행할 수 있는 작업을 요청하기 위한 방법.

  • 운영체제에 의해 수행될 동작을 사용자 프로세스가 요청하는 방법이다.
  • 일반적으로 인터럽트 벡터의 특정 위치로 트랩을 거는 형태.

방법

  • 하드웨어에 의해 하나의 소프트웨어 인터럽트(시스템 콜 서비스 루틴) 으로 취급 된다.
    • 제어가 인터럽트 벡터를 통해 운영체제 내의 서비스 루틴으로 전달
    • 모드 비트는 커널 모드로 설정.
  • 커널이 인터럽트(시스템 콜)를 발생시킨 명령을 검사하여 어떤 시스템 콜이 발생했는지 찾음.
    • 이 때 사용자 프로그램이 요청하는 서비스 유형(I/O 요청 등)을 함께 인수로 전달하여 사용자 프로세스가 원하는 서비스 유형을 표시.
    • 추가 정보는 레지스터, 스택, 메모리(메모리 위치에 대한 포인터)가 전달 될 수도 있다.

트랩

사용자 프로그램이 불법적인 명령을 수행하려 하거나 사용자 주소 공간이 아닌 메모리에 접근을 시도하는 등, 오류가 발생하면 하드웨어가 운영체제로 트랩 을 발생 시킴.

  • 인터럽트 벡터를 통해 제어를 운영체제에 넘김.
  • 오류가 발생하면 운영체제는 비정상적으로 프로그램을 종료
    • 오류 메시지가 주어지며
    • 프로그램의 메모리가 덤프 됨.
      • 메모리 덤프는 → 사용자나 프로그래머가 이를 조사하고 프로그램을 수정하여 다시 실행활 수 있도록 통상 파일에 기록

결론

  • 초기 제어는 운영체제에 있고 여기서의 명령은 커널 모드 로 실행 된다.
  • 사용자 프로그램에 제어가 넘어가면 사용자 모드 로 설정 된다.
  • 인터럽트, 트랩, 시스템 콜을 통해 다시 제어를 운영체제로 넘기는 커널 모드 로 전환 된다.

타이머

지정된 시간 후 컴퓨터를 인터럽트 하도록 설정하는 것.

  • 클록이 똑딱(tick) 할 때마다 계수기가 감소하고, 계수기가 0이 되면 인터럽트 발생.
  • 사용자에게 제어를 넘기기 전에 운영체제는 타이머가 인터럽트 할 수 있는지 확인 함.
  • 타이머가 인터럽트를 발생하면 제어는 자동으로 운영체제에 넘어가는데..
    • 오류로 취급하거나, 프로그램에게 더 많은 시간을 주기도 한다.
    • 예를 들어 프로그램이 응답 X 라면 인터럽트하고 타임슬라이스가 끝남, 운영체제에게 제어권 줌

타이머 값을 변경하는 것은 특권 명령이다.

728x90

'개발공부 개발새발 > OS' 카테고리의 다른 글

OS ) 시스템 콜  (2) 2024.12.30
OS ) 스레드의 컨텍스트 스위칭  (0) 2024.12.24
OS ) 멀티 프로그래밍과 멀티 태스킹  (0) 2024.12.22
OS ) 운영체제의 작동  (0) 2024.12.19
OS ) 클러스터형 시스템  (0) 2024.12.19