-
OS - 다중모드 운용과 타이머CS 2024. 3. 12. 00:47
운영체제와 사용자는 컴퓨터 시스템 내 하드웨어와 소프트웨어 자원을 공유하기 때문에
운영체제 혹은 사용자로부터의 잘못된 명령수행이 일어나지 않도록 보장해야 한다.
따라서 대부분의 컴퓨터 시스템에는 사용자 모드와 커널 모드로 최소한 두 개의 모드로 나누어진다.
이렇게 모드를 나누는 비트를 모드비트 라고 한다.
부팅과정을 예시로 설명하자면 아래와 같다.
처음 부팅시 부트스트랩에 의해 부트로더가 실행되기 위해서 커널모드에서 시작한다.
부트로더가 정상적으로 운영체제를 메모리위에 올려 실행되고 그 이후 사용자모드로 전환된다.
이 사용자가 응용프로그램들을 실행하게 되고, 그러다가 인터럽트 또는 트랩이 발생하게 되면
다시 커널모드로 전환하여 인터럽트를 처리하고 난 후 모드 비트를 바꾸어 사용자모드로 전환한다.
트랩(trap)
여기서 트랩(trap)이란, 인터럽트의 한 유형으로서 명령어를 처리하는 도중 발생하는 예외나 오류를 처리하기 위해서 컴퓨터의 제어를 현재 실행중인 프로세스에서 인터럽트의 색인번호 내 서비스 루틴으로 넘기는 메커니즘이다.
인터럽트와의 차이로는, 누가 발생시키냐가 가장 큰 차이다.
인터럽트는 외부 디바이스 혹은 하드웨어가 발생시키는 이벤트로 발생되어 제어를 넘긴다.
트랩은 실행중인 프로세스에서 발생하는 예외 혹은 오류를 처리하기 위해 제어를 넘긴다.
다시 본론으로 넘어가서, 컴퓨터의 제어를 누가 하고 있냐에 따라 모드비트가 전환된다.
위에서 설명했던 “잘못된 명령”은 특권 명령과 같이 커널 모드에서만 수행되어야 하는 명령이 사용자 모드에서 실행하려 하는 경우가 있다.
특권 명령(priviliged instruction)이란, 커널모드에서 수행되는 시스템레벨의 명령으로 운영체제의 핵심기능을 수행하거나 하드웨어에 대한 제어 등을 의미하는 명령이다.
이러한 경우 모드비트를 통해 특권 명령이 어떤 모드에서 실행되려 하는지를 파악하여 잘못된 명령수행이 일어나지 않게 된다.
위의 부팅과정을 예시로 든 문단에서 사용자모드에서 실행중인 응용프로그램이 입출력 I/O 요청과 같은 하드웨어에 대한 요청을 보내기 위하여 특권 명령을 요청해야 하는데
이 때 해당 응용 프로그램의 프로세스가 사용하는 것이 시스템 콜(systemcall) 이다.
시스템 콜이 발생하게 되면 운영체제에서 시스템콜을 처리하기 위해 트랩을 발생시키게 되고
트랩이 발생되면 모드비트를 커널모드로 바꾸고 인터럽트 벡터에서 조회하여 알맞은 서비스 루틴을 호출 하게 된다.
타이머
사용자의 프로그램에 의해 CPU가 무한루프에 빠지거나, 오류가 발생하여 운영체제가 관리하지 못하는 경우가 발생하는일이 있어선 안된다.
이러한 경우를 방지하기 위해 CPU에 대해 타이머를 설정할 수 있다.
운영체제는 사용자에게 컴퓨터 제어를 넘기기 전에 타이머를 설정하고 넘긴다.
이러한 타이머에 설정된 값이 0이 되어 인터럽트가 발생하게 되면,
운영체제는 치명적인 오류로 인식하거나, 해당 프로세스에 더 많은 시간을 부여할 수 있다.
여기서 타이머에 대한 값 설정은 명백히 특권 명령이다.
'CS' 카테고리의 다른 글
OS - 멀티 프로그래밍과 멀티태스킹 (0) 2024.03.11 OS - 멀티 프로세서 (0) 2024.03.10 OS - 메인 메모리와 입출력 장치 (0) 2024.03.10 OS - OS가 할일, 컴퓨터 시스템구성 (1) 2024.03.05