일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- docker
- kubectl
- grafana
- Network
- CVAT
- AWS
- Vision
- zookeeper
- aws s3
- Trino
- jvm
- Packet
- EC2
- Operating System
- OS
- ip
- JavaScript
- kubeadm
- CSV
- Spring
- Python
- airflow
- Kafka
- PostgreSQL
- java
- helm
- MAC address
- log
- kubernetes
- tcp
- Today
- Total
JUST WRITE
Dual Mode and Protection 본문
이 글은 KOCW 강좌 중 경성대학교 양희재 교수님의 '운영체제' 강의를 정리한 글입니다.
Dual Mode
이중 모드
요즘 1개의 컴퓨터로 여러 명이 동시에 사용하기도 한다.(Server)
아니면 여러 개의 Program을 동시에 사용한다.
Program이 컴퓨터 전체에 영향을 끼칠 가능성이 높다.
이런 치명적인 상황을 불가능하게 하기 위해서 Dual Mode로 관리한다.
아래 2가지 Mode로 나누어서 관리한다.
- User Mode
- Privileged Instruction 실행 불가능
- Supervisor Mode
- Privileged Instruction 실행 가능
- System, Monitor, Priviliged Mode라고도 함.
Privileged Instrution에는 STOP, HALT, RESET, SET_TIMER, SET_HW ... 등이 있다.
Dual Mode는 CPU Register내 Bit를 활용한 flag를 사용한다.
예를 들어 flag Bit의 값을 Supervisor Mode일 때는 0, User Mode일 때는 1로 한다.
Privileged Instruction 실행 시 Supervisor Mode로 전환된다.
- 운영체제 Service 실행 -> Supervisor Mode
- User Program 실행 -> User Mode
- Hardware / Software Interrupt 발생 -> Supervisor Mode
User Program 실행될때 아래와 같이 Mode가 전환된다.
- User Program 작동(User Mode)
- Hadrware 접근 필요 -> Software Interrupt 발생(Supervisor Mode)
- ISR(Interrupt Service Routine) 진행(Supervisor Mode)
- Interrupt 종료 후 User Program 복귀(User Mode)
Protection
I/O Protection
다수의 사용자가 컴퓨터를 사용하게 되면서 동시 입력, 타인 파일 접근 등 문제가 발생할 수 있다.
I/O를 보호하기 위해서 Privileged Instruction를 이용한다.
IN, OUT 등 I/O관련 명령을 Privileged Instruction으로 설정한다.
I/O를 하려면 Supervisor Mode에서 운영체제를 통해 수행한다.
I/O를 하려고 하면 운영체제내 ISR를 수행하는데 이때 올바른 명령인지 판단한다.
올바르지 않은 명령일 경우 Privileged Instruction Violation으로 간주하여 해당 명령은 거부된다.
Memory Protection
Memory에 다수의 Process가 올라온다.
자신의 영역이 아닌 다른 Process Memory 영역에 접근하려 할수도 있다.(Segement Violation)
Memory 침범을 보호하기 위해서 MMU(Memory Management Unit)으로 관리한다.
Address Bus에 있는 Hardware Unit으로 Process의 Memory 영역 범위를 저장한다.
Base, Limit 2가지로 Memory 영역을 관리한다.
Process가 Memory에 접근하기 전 MMU에서 영역 확인 후 맞을 경우만 접근을 허용한다.
MMU의 Base, Limit 값은 Privileged Instruction로만 변경 가능하다.
CPU Protection
다수의 Process가 실행되면서 CPU 사용도 중요하다.
한 가지의 Process가 과도하게 CPU 사용을 차지하면 안 된다.
Timer를 두어 일정 시간이 지나면 Interrupt가 발생하게 한다.
그러면 운영체제 내 ISR에서 각 Process의 CPU 점유시간을 측정하여 적절히 분배한다.
만약 비정상적으로 CPU를 차지하고 있는 Process가 있다면 강제로 CPU 사용을 다른 Process로 전환한다.
'OS' 카테고리의 다른 글
CPU Scheduling (0) | 2022.01.11 |
---|---|
Process (0) | 2022.01.09 |
OS Service (0) | 2022.01.06 |
Interrupt-Based System (0) | 2022.01.04 |
What is OS? (0) | 2021.11.05 |