이중 모드

이한수·2022년 3월 20일
0

OS

목록 보기
3/10
post-thumbnail

공부 내용 정리 목적입니다.
참고 : 양희재 교수님의 os

사용자모드(유저)와 관리자 모드(특권 모드)가 있다.

1.관리자 모드

관리자 모드에서만 내릴 수 있는 명령을 특권 명령이라고 한다.

STOP ,RESET 등이 있는데 , 사용자 모드에서 해당 명령을 사용할 시 CPU는 내부 인터럽트를 발생시켜 요청한 프로그램을 강제 종료한다.

이는 쉽게 말해 , 서버처럼 한 컴퓨터를 여러 사람이 사용하거나 , 우리가 일반적으로 한 컴퓨터에서 여러 프로그램을 수행하는 것처럼 , 한 곳에서 위와 같은 특권명령을 수행하면 해당 컴퓨터를 사용하는 여러 사용자 혹은 프로그램이 영향을 받게 되므로 , 아무나 접근 가능해서는 안되는 명령어다.

이와 같은 상황을 방지하기 위해 이중모드가 나온것인데 , 무튼 순서가 잘못됬다. 이게 맨처음에 설명했어야 했는데..

무튼 우리는 컴퓨터를 사용하면서 사용자 모드와 관리자 모드를 왔다갔다 한다.

이를 가능하게 해주는 것이 CPU내부의 Register의 bit를 활요하여 플래그로 나타내는데 ,

관리자 모드에서는 비트값이 0이고 , 사용자 모드일 때는 1로 설정되어 구분한다.

구체적인 예시로 실제 프로그램을 수행하는 과정에서의 모드 변환을 살펴보자면 ,

마우스 ,키보드등의 작업이 이루어지면 전편에서 말했지만, 하드웨어 인터럽트가 발생한다고 했다.

인터럽트가 발생되는 순간, cpu는 이를 감지하고 ISR을 호출하기 직전에 모드를 관리자 모드의 값으로 설정한다.

ISR이 호출되어 처리되기 전까지 관리자 모드에서 수행을 한 뒤에 CPU는 다시 비트를 1로 설정하여 사용자 모드로 되돌린 다음 복귀한다.

무튼 이러한 원리로 동작되며 ,우리가 컴퓨터를 사용하는 동안 수없이 모드가 바뀌면서 작업을 처리한다.

2.하드웨어 보호

이중 모드는 운영체제의 보호 기능을 담당한다.

그럼 운영체제에서 보호해 줘야할 대상은 무엇이 있을까??

1) 입출력 장치 보호

여러 정보들이 여러 입출력 장치를 통해 입력되고 출력 된다.

이와 같은 과정에서 혼선이 발생하여 다른 사용자의 데이터가 입력되고 출력되는 것과 같은 일들이

발생될 수 있다. 혹은 이러한 점을 이용하여 다른 사용자의 정보에 일부러 접근할 수도 있는 것이고 말이다.

이러한 점을 이중 모드로 방지할 수 있게 되었다.

입출력 명령을 특권 명령으로 설정함으로써 , 사용자가 애플리케이션에서 입출력 작업을 수행하려면 운영체제를 통해서만 수행되게 되는데 이때 운영체제는 내부적으로 다른 사용자가 데이터를 읽거나 출력하고자 할 때 내부 인터럽트를 발생 시켜 접근하는 프로그램을 강제 종료한다 .

2)메모리 보호

메모리에서도 마찬가지다.

메모리의 각 주소에는 여러개의 서로 다른 애플리케이션들이 적재되어 있을 것이다.

이때 , 한 애플리케이션이 수행 중 일 때 다른 애플리케이션에서 접근을 할 경우 위험하다.

*MMU → Memory Management Unit

이를 방지하기 위해 CPU와 Memory 사이에는 MMU를 둔다.

그리고 내부에 base와 limit라는 register를 두어 사용되는 애플리케이션의 메모리 주소범위를 설정하고 , CPU는 해당 애플리케이션을 수행할 때 이를 참고하여 , 벗어나는 범위의 주소를 가진 애플리케이션에서 접근해올 경우 내부 인터럽트를 발생하여 강제 종료한다.

3)CPU 보호

말 그대로 cpu를 독점하는 경우를 의미하는데 , 이렇게 되면 다른 프로그램은 수행되지 못하게 된다.

이를 해결하기 위해 Timer를 두어 일정 시간이 지나면 타이머 인터럽트를 발생시키는데 ,

CPU 점유 시간이 비정상적으로 오래 걸리는 경우, 강제로 다른 프로그램으로 CPU를 전환시킨다.

profile
성실하게

0개의 댓글