일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Operating System
- Operating System.
- 김영한
- 스프링 입문
- inflearn
- C#
- 에러핸들링
- OS
- 제프리리처
- TCP/IP
- C++
- 열혈 TCP/IP 소켓 프로그래밍
- 윤성우 저자
- n타일링2
- 토마토
- Window-Via-c/c++
- 10026번
- redis
- HTTP
- FIFO paging
- 2475번
- 우아한레디스
- 열혈 tcp/ip 프로그래밍
- Spring
- 이펙티브코틀린
- 스프링 핵심 원리
- Four Squares
- 우아한 테크 세미나
- BOJ
- 운영체제
- Today
- Total
나의 브을로오그으
#4. 이중모드, 하드웨어 보호 본문
이중모드(dual mode)
- 한 컴퓨터를 여러 사람이 동시에 사용하는 환경
* 또는 한 사람이 여러 개의 프로그램을 동시에 사용, 한사람의 실수가 프로그램 전체에 영향을 줌
STOP, HALT, RESET 등
- 사용자 프로그램은 STOP 등 치명적 명령 사용 불가하게!
* 사용자(user)모드 vs 관리자(supervisor)모드
* 이중 모드(dual mode)
* 관리자 모드 = 시스템 모드 = 모니터 모드 = 특권 모드 = 커널 모드
* Supervisor, System, Monitor, Privileged, Kernel
- 특권 명령 (privileged Instructions)
* STOP, HALT, RESET, SET_TIMER, SET_HW ...
- 레지스터에 모드를 나타내는 플래그 (flag)
- 운영체제 서비스 실행될 때는 관리자 모드
- 사용자 프록그램 실행될 때는 사용자 모드
- 하드웨어/소프트웨어 인터럽트 발생하면 관리자 모드 전환
- 운영체제 서비스가 끝나면 다시 사용자 모드 전환
(프로그램을 저장 할 때 유저 프로그램이 하드 디스크에 저장 할 수 있다는 얘기는 유저 모드에서 하드디스크에 접근 할 수 있다는 의미이므로 서버 컴퓨터는 여러 사람들이 사용하는데, 다른 사람의 파일을 열람 할 수 있다.(보안문제), 그렇다면 게임 프로그램을 실행해서 유저의 스코어를 하드디스크에 저장하려면 어떻게 해야 할까? 바로 스코어 저장을 OS에 요청하는 것이다. 이러한 방식을 Interrupt라 하며, 소프트웨어에서 요청한 Interrupt이므로 Software Interrupt를 건다. 그리고 ISR을 실행하여 스코어를 저장한다.)
(만약 유저모드 상태에서 관리자 모드 명령을 내리게 되면, CPU는 해당 명령을 해석 할 때, 유저 모드 상태이므로 내부 인터럽트를 발생시킴. 그리고 나서 현재 프로세스를 강제 종료함.)
일반적 프로그램의 실행
- 프로그램 적재 (on memory)
- user mode > (키보드, 마우스) > syste m mode (ISR) > user mode > (모니터, 디스크, 프린터) > system mode (ISR) > user mode
하드웨어 보호
이렇듯 컴퓨터에서는 보호 받아야 할 장치가 존재한다. UserMode, SupervisorMode를 둔 이유도
이러한 보호 차원에서 분리를 한 것이다.
- CPU 보호 : CPU Protection
- 입출력장치 보호 : Input/Output Device Protection
- 메모리 보호 : Memory Protection
입출력장치 보호
- 사용자의 잘못된 입출력 명령
* 다른 사용자의 입출력, 정보 등에 방해
* 예: 프린트 혼선, 리셋 등
(서버 컴퓨터에 유저들이 프린터를 중복해서 사용한다든지... 누군가 사용중인 프린터에 RESET 신호를 보낸다든지... 이런걸 방지)
* 예: 다른 사람의 파일 읽고 쓰기(하드디스크)
(하드 디스크에 저장한 정보를 다른 유저가 마음대로 접근해서 본다면 문제가 있음. 이것을 방지)
* 입출력 장치를 보호하는 명령어 : IN, OUT (입력장치로 부터 입력, 출력장치로 출력 명령어)
- 해결법
* 입출력 명령을 특권명령으로 : IN, OUT
* 입출력을 하려면 운영체제에게 요청하고 (system mode 전환)
* 운영체제가 입출력 대행 : 마친 후 다시 user mode로 복귀
* 올바른 요청이 아니면 운영체제가 거부
(당연히 OS에 요청한 내용이 올바른 요청이 맞는지도 체크하는 부분이 OS안에 들어있음,
설령 요청을 하더라도 유효한 요청인지도 체크한다.)
- 사용자가 입출력 명령을 직접 내린 경우?
* Privileged Instruction Violation (특권 명령 침범)
메모리 보호
- 다른 사용자 메모리 또는 운영체제 영역 메모리 접근
* 우연히 또는 고의적인 실수
* 다른 사용자 정보/프로그램에 대한 해킹, 운영체제 해킹
(유저 모드 프로그램이 다른 메모리 영역을 보려고 하는 것을 어떻게 막아야 할까???
특정 레지스터에 특정 영역의 시작, 끝 주소가 저장되어 있음,
특정 address bus에 실린 주소가 현재 모드(유저, 관리자 모드)에 따라 읽기/쓰기 가능한 영역의 시작과 끝 주소 사이의 주소만 통과될 수 있도록 한다. 만약 잘못된 영역의 주소(현재 모드가 유저 모드인데 관리자 모드 영역 메모리 주소를 읽거나 쓰려고 한다면?? CPU에 내부 인터럽트를 발생시켜서 지금 하던 일을 중지하고
OS내부의 ISR을 실행하고 현재 프로세스를 강제 종료하여 이를 방지한다.)
이러한 잘못된 시도를 보통 Segment violation이라고 한다.
- 해결법
* MMU를 두어 다른 메모리 영역 침범 감시하도록 (Memory Management Unit)
* MMU 설정은 특권명령 : 운영체제만 바꿀 수 있다.
(MMU는 해당 모드의 base, limit 주소만 통과시키고 다른건 통과 시키지 않고 내부 인터럽트를 발생시킨다.
그렇다면 이 base와 limit의 주소값은 누가 설정 하는가?? 바로 OS가 설정한다. 당연히 base와 limit를 바꾸는 명령은 특권 명령이다.)
- 다른 사용자 또는 운영체제 영역 메모리 접근 시도?
* Segment violation (영역 침범)
CPU보호는 다음 시간에~
'Computer Science > 운영체제' 카테고리의 다른 글
#6. 프로세스 관리 (0) | 2022.06.29 |
---|---|
#5. 운영체제 서비스 (0) | 2022.06.28 |
#3. 고등운영체제, 인터럽트 기반 시스템 (0) | 2022.06.26 |
#2. 운영체제 역사 (0) | 2022.06.26 |
#1. 운영체제 개요 (0) | 2022.06.25 |