[3] 이중모드, 하드웨어 보호

hyunsooo·2023년 6월 2일
0
post-thumbnail

KOCW - 양희재 교수님 강의를 기반으로 운영체제 정리

이중모드

현대의 컴퓨터는 하나의 컴퓨터를 여러 사람이 동시에 사용하거나 한 사람이 여러 개의 프로그램을 동시에 사용합니다. 이런 환경에서 누군가 고의적으로 STOP, HALT, RESET 등과 같은 명령어를 수행한다면 전체 시스템에 영향을 미칠 것 입니다.

따라서, 일반 유저들은 이런 치명적인 명령어를 사용할 수 없도록 하고 관리자만 사용할 수 있도록 해야 겠다는 아이디어에서 이중 모드가 나오게 되었습니다. 이중 모드는 사용자(User) 모드관리자(supervisor) 모드로 이루어져 있습니다. 특히 관리자 모드에서 사용할 수 있는 특권 명령어는 STOP, HALT, RESET, SET_TIMER, SET_HW 등이 존재합니다.

CPU에는 다양한 레지스터들이 존재합니다. 이 레지스터들 중 플래그 레지스터의 슈퍼바이저 비트는 이중 모드를 나타내는 비트를 저장할 수 있습니다. 컴퓨터를 부팅할때 슈퍼바이저 비트는 1로 되어 있습니다. 즉, 관리자 모드로 부팅이 수행되고 이때 STOP이나 RESET과 같은 명령어가 실행될 수 있습니다. 부팅이 완료되고 사용자 어플리케이션을 수행하게 되면 사용자 모드(슈퍼바이저 비트 0)로 실행됩니다. 프로그램이 실행되는 중 하드웨어/소프트웨어 인터럽트가 발생하면 관리자 모드로 변환되며 인터럽트 서비스 루틴(ISR)이 종료되면 다시 사용자 모드로 변환되는 작업을 거치게 됩니다.

만약 일반 유저가 STOP과 같은 명령어를 내리게 되면 CPU는 슈퍼바이저 비트를 확인하고 이 비트가 0이라면 내부 인터럽트가 발생한 것으로 간주하고 운영체제의 특정 ISR을 수행하게 됩니다.

하드웨어 보호

입출력장치 보호

하나의 서버에서 한 사용자가 프린트를 사용하고 있는데 다른 사용자가 접근해서 혼선을 일으키거나 RESET과 같은 명령어를 수행하면 안됩니다. 또 다른 예시로 성적표를 저장한 서버의 하드디스크에 접근하여 다른 사람의 파일을 읽거나 쓰는 행위를 가능하게 해서는 안됩니다.

컴퓨터 입장에서 프린트나 하드디스크는 입출력장치이기 때문에 입출력 명령을 특권명령으로 지정합니다. 입출력 특권 명령은 IN과 OUT이 있는데 IN은 키보드나 마우스로 부터 정보를 받아들이는 명령이며 OUT은 모니터나 스피커와 같은 출력장치에 사용하는 명령어 입니다. 이 명령어를 일반 유저는 내리지 못하고 관리자만 사용할 수 있는 명령어 입니다. 따라서 일반 유저가 억지로 IN 명령어를 사용하려고 한다면 내부 인터럽트가 발생하게 되고 올바른 요청을 하려면 SWI를 발생시켜 운영체제가 입출력을 대행하게 됩니다.

그렇다고 서버에 접근하여 다른 사람의 파일을 읽기 위해 SWI을 발생시키면 읽을 수 있는 것은 아닙니다. 운영체제 안에는 현재 요청이 올바른 정당한지를 확인하는 루틴도 존재하기 때문에 다른 사람의 파일을 읽을 수 없습니다.

메모리 보호

다른 프로그램(사용자)의 메모리 또는 운영체제 영역 메모리에 접근하는 상황이 생길 수 있습니다. 컴퓨터 구조 시간에 배운 내용에서 MMU(Memory Management Unit)을 통해 이 상황을 해결할 수 있습니다. 이안에 베이스와 리미트 레지스터 사이의 메모리 주소값만 읽을 수 있도록 하여 다른 영역을 침범하지 않도록 할 수 있습니다. 이 영역을 벗어난 메모리를 읽을 경우 운영체제에 의해서 특정 ISR이 실행되어 프로그램을 종료시키게 됩니다. 이때 MMU의 베이스나 리미트 값을 설정하는 명령어는 운영체제가 담당하게 되고 특권 명령어에 속하게 됩니다.

CPU 보호

무한 루프를 도는 상황이 일어난다면 해당 프로그램만 계속 실행되기 때문에 CPU를 독점하게 되고 다른 사용자의 프로그램 실행이 불가능 합니다. 이런 상황을 해결하기 위해 Timer를 두어 일정 시간 경과 시 타이머 인터럽트를 발생시킵니다. 타이머 ISR에는 현재 CPU가 누군가에 독점되고 있는지 판단하고 다른 프로그램으로 강제 전환시키는 코드가 실행되게 됩니다.

profile
CS | ML | DL

0개의 댓글