728x90
듀얼모드와 하드웨어 보호
듀얼 모드
- OS는 유저모드와 커널모드(관리자 모드, 특권 모드)로 나뉜다.
- 유저가 만약 모든 권한을 가진다면 하드웨어에게 해를 끼칠 수 있는 상황이 존재할 수 있다.
- I/O를 침범할 수 있다.
- 어떠한 프로그램이 OS상태를 바꾸거나 강제로 디스크를 탐색할 수 있다.
- 즉 해킹이나 불법 프로그램에 의해 의도치 않은 상황이 발생할 수 있다.
- 이러한 상황을 방지 하기 위해 OS는 듀얼 모드를 지원한다.
- CPU 레지스터는 flag를 가지고 있다. 사진의 mode bit가 레지스터가 갖고 있는 그것이다. 여기엔 여러가지 비트가 있는데 그 중 하나이다. flag비트에 따라 유저 모드와 커널 모드가 바뀌게 된다. 이것은 하나의 인터럽트로 작용한다. 인터럽트에 의한 설명은 이전 포스팅에 자세히 다루었다.
- 유저 모드
- 유저 모드는 그야말로 유저가 컴퓨터를 지배하는 상태를 말한다. 사용자가 메모장을 켜서 타이핑을 하고 있다면 이것은 유저 모드이다.
- 유저 모드는 입출력 모드를 할 수 없고 메모리에 직접적으로 접근할 수 없다.
- 커널 모드
- 워드 작업을 하다가 이미지 업로드를 하려고 한다면 소프트웨어 인터럽트가 발생하고 모드 변경 인터럽트가 이어져 커널모드로 바뀐다. 그리고 하드디스크에서 이미지를 찾아 메인 메모리에 적재하고 업로드가 완료되면 다시 유저 모드로 전환된다.
하드웨어 보호
- I/O 보호
- I/O보호는 위에서 설명한대로 듀얼 모드에 의해 보호된다. 입출력을 운영체제에서 관리하게 되므로 유저가 강제로 입출력을 할 수 없게 한다.
- 메모리 보호
- 다른 프로그램의 메모리나 운영체제의 메모리를 침범하려는 시도가 있을 수 있다. 이것이 해킹이다.
- 이것을 막기 위해 cpu에서 주소버스가 메모리로 갈 때 지정된 주소 범위가 아니면 인터럽트가 발생해 프로그램을 종료하는 방법을 사용한다.
- 이것을 MMU(Memory Manager Unit)라한다. base와 limit 사이의 주소일 경우에만 허용하도록 한다. 이러한 base 와 limit는 운영체제가 관리하게 된다. MMU는 이러한 보호 기능 외에도 가상 메모리 공간을 실제 메모리 공간으로 매핑하는 등 많은 기능을 수행하는 것 같다. 이것은 추후 공부하게 될 것 같다.
- CPU 보호
- program이 동작하다보면 cpu를 독점하게 되는 일이 생길 수 있다.
- 만약 while(true) 이면 무한루프에 걸린다. 이러면 이 프로그램만 무한으로 실행되게 된다.
- 이것을 해결하기 위해 Timer를 두어 일정 주기로 cpu에 인터럽트를 걸도록 설계하여 지금 cpu시간이 골고루 분포되고 있는지 검사한다. 그리고 어떠한 프로그램에 집중되어 있을 경우 그 프로그램을 종료하는 것으로 CPU보호를 실현할 수 있다.
'CS > 운영체제(OS)' 카테고리의 다른 글
OS - CPU 스케줄링(2) (0) | 2023.11.04 |
---|---|
OS - 프로세스 관리와 CPU 스케줄링 (1) | 2023.11.02 |
OS - 프로세스 관리 (0) | 2023.11.01 |
OS - 운영체제의 주요 서비스: 프로세스, 메모리, 파일관리 (1) | 2023.10.29 |
OS - 인터럽트(Interrupt)의 이해와 실행과정 (0) | 2023.10.27 |