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)
'Computer Science > OS' 카테고리의 다른 글
[OS] 운영체제 6. CPU Scheduling : CPU 성능척도, 스케쥴링 방법(FCFS, SJF, Priority Scheduling, Round Robin) (0) | 2020.02.04 |
---|---|
[OS] 운영체제 5. Process Management : 프로세스 생성/종료 (0) | 2020.02.01 |
[OS] 운영체제 4. Thread : 스레드 정의, 효과 및 장점 (0) | 2020.01.27 |
[OS] 운영체제 3. Process : 프로세스의 상태흐름(Ready,Running,Blocked, Suspended), PCB, 문맥교환(Context switch) (0) | 2020.01.25 |
[OS] 운영체제 1. OS (0) | 2020.01.19 |