1. Mode bit

사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치

1 사용자모드 : 사용자 프로그램 수행

0 모니터모드 : OS 코드 수행

 

- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드(OS)에서만 수행 가능 == 특권명령

- Interrupt 나 Exception 발생시 하드웨어가 mode bit 을 0으로 바꾼다

- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit 을 1로 바꾼다

 

2. Timer

- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 interrupt 를 발생시킨다

- 타이머는 매 클럭 틱 마다 1씩 감소

- 타이머 값이 0이 되면 타이머 interrupt 발생 

- CPU를 특정 프로그램이 독점하는 것으로부터 보호

- 타이머는 time sharing을 구현하기 위해 널리 이용된다

- 타이머는 현재 시간을 계산하기 위해서도 사용된다

 

3. Device Controller

3-1. I/O device Controller

- I/O 장치유형을 관리하는 일종의 작은 CPU

- 제어 정보를 위해 control register, status register 를 가진다

- local buffer 를 가진다

- I/O는 실제 device와 local buffer 사이에서 일어난다

- Device controller는 I/O가 끝났을 경우 Interrupt 로 CPU에 그 사실을 알린다

 

Device Driver (장치구동기) : OS 코드 중 각 장치별 처리루틴 (software)

Device Controller (장치제어기) : 각 장치를 통제하는 일종의 작은 CPU (hardware)

 

※ 인터럽트(Interrupt)

인터럽트 당한 시점의 레지스터와 program counter 를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다

- Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트

- Trap (소프트웨어 인터럽트) :

  Exception : 프로그램 오류

  System Call : 프로그램이 커널 함수 호출

 

인터럽트 관련 용어

- 인터럽트 벡터

  해당 인터럽트의 처리 루틴 주소를 가지고 있음

  : 함수의 주소 값을 가지고 있는 일종의 테이블

- 인터럽트 처리 루틴 (=Interrupt Service Routine, 인터럽트 핸들러)

  해당 인터럽트를 처리하는 커널 함수

  : 인터럽트마다 처리하는 작업내용이 다르므로 각각의 인터럽트마다 어떤 작업을 수행해야 하는지가 작성되어 있는 코드

 

입출력의 수행

모든 입출력 명령은 특권 명령

사용자 프로그램이 I/O 하는 방법 : 시스템콜(System Call)

1) 인터럽트 라인 세팅

2) CPU는 실행중이던 인스트럭션을 실행한 후 interrupt 확인

3) mode bit 0 으로 바뀜

4) 운영체제에게 CPU 제어권이 넘어감

5) device controller 에게 I/O 데이터 요청

6) CPU는 I/O 를 기다리지 않고, 다른 인스트럭션 실행

7) I/O 입력

8) device controller가 인터럽트 라인 세팅

9) CPU는 실행중이던 인스트럭션을 실행한 후 interrupt 확인

10) mode bit 0으로 바뀜

11) 운영체제에게 CPU 제어권이 넘어감

12) device controller로부터 buffer에 저장된 데이터를 운영체제가 받아옴

13) I/O를 요청했던 인스트럭션의 메모리영역에 buffer 데이터 저장

 

* CPU는 레지스터 중 program counter 가 가르키는 메모리 주소(인스트럭션)을 실행

* program counter 가 가리키는 메모리 주소를 실행하기 전에 interrupt line 을 확인

* mode bit 이 0일 땐 OS 가 CPU 를 가지고 있으므로 모든 인스트럭션 실행이 가능

* mode bit 이 1일 땐 사용자 프로그램이 CPU 를 가지고 있으므로 실행 불가한 인스트럭션이 존재(인터럽트를 걸어 운영체제에게 서비스 요청)

인스트럭션 1개는 4byte

 

입출력 방식

동기식 입출력 : I/O 요청 후 입출력 작업이 완료된 후, 사용자 프로그램에 제어가 넘어감

비동기식 입출력 : I/O 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

* I/O 완료여부는 interrupt로 알린다.

 

DMA (Direct Memory Access)

- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용

- CPU의 중재 없이 device controller 가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송

- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴

* CPU에 인터럽트를 매번 걸지 않아 효율이 증가

 

저장장치 계층구조

* Volatility 휘발성

 

프로그램 실행시 메모리 로드

File System --> virtual memory --(Address transaction 논리메모리 주소를 물리 메모리 주소로 변환)--> physical memory

1) 프로그램 실행시 실행된 각각의 프로그램의 Address space 를 virtual memory 에 생성

2) physical memory 에 virtual memory 의 필요한 일부만 올림

3) 불필요한 경우 Swap area(메모리의 한계로 메모리 연장을 위한 공간으로 사용) 에 저장

 

 

커널 주소 공간의 내용

 

※ 이화여대 반효경 교수님의 운영체제 강의내용 정리 (kocw.net)

반응형

+ Recent posts