OS

Multi Programmed System : Dual- Mode, protection 기법

sshhhh 2024. 10. 26. 17:58

Multi Programmed System

- 효율성을 위해 필요

- 여러개의 작업들이 동시에 메인메모리에 적재

- cpu는 이 작업들을 실행하며 이용률 증가시킴

- 하드웨어 자원들을 필요할때마다 프로세스가 os에게 지원 요청한 후 실행

 

즉 목적은 cpu 이용률을 최대화 하는 것..........

 

 

Dual- Mode

- cpu 동작모드

- 모드 비트라는 상태비트를 두어 구분 

- os/user 를 위해 실행되는 작업 구분 -> 0(moniter)이면 os 1(user)이면 user

 

- moniter 모드 : 모든 명령 실행권한 o, privileged instructions -> os에 의해서만 실행되는 명령

- 하드웨어는 os에게 특권을 줌, os가 서비스를 요청하면 moniter 모드로 전환해야함

- 인터럽트 발생하면 자동적으로 제어권이 user -> moniter 모드로 

 

- 프로세스들이 서로 방해/독점 하지않고 공존하도록 os가 하드웨어를 관리하는 것임

 

- 듀얼모드에서 os가 하드웨어 자원들을 protection 해야
   Multi Programmed System 환경하에서 각 프로세스들이  제대로 돌아갈 수 있는 것임!!!

 

 

protection 기법

하드웨어에 대해 프로그램, 사용자들의 접근을 제어하는 기법

 

 

 1) i/o protection 

1. 모든 i/o 명령어를 privileged 명령으로 바꿈 -> 모든 i/o 명령어를 os만 실행할수 있게 함

2. 프로세스는 r/w 직접 명령 못하고 os에게 요청해야함 

3. os는 i/o 컨트롤러에 i/o 명령을 내리는 것 

 

 2) memory protection 

- 레지스터 사용

-> 사용자 프로세스가 자기 메모리나 다른 메모리에 접근하는지 확인하고 접근시 os가 해당 프로세스 kil

-> 잘못된 메모리 번지 참조하지 않도록 막아줌

 

 3) cpu protection 

<<타임쉐어링>>

- cpu랑 os 권한을 a가 얻으면 b,c 프로세스는 계속 가만히 있음

- 만약 a가 계속 자원을 독점하게 된다면?

- 타이머로 해결한다.  -> 시간설정해서 시간이 지나면 타임 인터럽트 걸리게 한다.

 

1. 인터럽트 발생 시 제어권은 os로 감 -> isr이 os에 있기 때문에

2. cpu 할당을 os가 하는데

3. a에게 권한을 주기 전에 타이머로 설정하고 준다.

 

ex) 0.1초 지난 후 0이 되면 타이머 인터럽트 발생, 자동적으로 a는 멈추고 제어권은 os로 넘어감 
     os는 타이머 설정 후 b로 넘김.

 

- load-timer : 타이머 설정 명령어로 privileged istrction