0. 인터럽트
CPU의 정상적인 작업을 방해하는 신호
인터럽트 처리 과정
- CPU는 인터럽트 당한 시점의 프로그램 카운터와 레지스터를 백업
- CPU의 제어권이 운영체제에 넘어감
- 운영체제는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴의 주소를 찾음
→ 인터럽트 벡터 : 인터럽트 종류 번호에 따라 처리해야 할 코드가 위치하는 부분을 가리키는 자료구조
→ 인터럽트 서비스 루틴 (인터럽트 핸들러) : 인터럽트를 처리하는 커널 함수 - CPU는 인터럽트 서비스 루틴을 실행하고 본래 수행하던 작업으로 복귀
인터럽트 종류
- 하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트
- 소프트웨어 인터럽트 : 소프트웨어가 발생시킨 인터럽트, Trap이라고도 부름
→ 예외 (Exception) : 사용자 프로그램이 오류를 범한 경우 이에 대한 처리를 위해 발생시키는 소프트웨어 인터럽트
→ 시스템 콜 (System Call) : 사용자 프로그램이 직접 특권 명령을 수행할 수 없으므로 운영체제에 대행을 요청하기 위해 발생시키는 소프트웨어 인터럽트
1. CPU (Central Processing Unit)
매 클럭마다 명령어 사이클에 따라 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품
- 계산을 담당하는 ALU (산술논리연산장치), 명령어를 읽어 들이고 해석하는 제어 장치, 내부 임시 저장장치인 레지스터로 구성
- 프로그램 카운터 (Program Counter, PC)
→ CPU가 수행해야 할 명령어의 메모리 주소를 저장하는 레지스터
→ 일반적으로 조건문이나 반복문, 함수 호출 등에 의한 주소 이동이 없는 이상 항상 다음 명령을 가리키게 되어 코드의 순차적인 수행이 이루어짐
Mode Bit
- 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치
→ 사용자 프로그램이 CPU 제어권을 가지고 있는 동안에는 운영체제가 자신의 코드를 실행하지 못하므로 감시할 방법이 없기 때문에 하드웨어적인 지원이 필요 - Mode Bit를 통해 하드웨어적으로 두 가지 모드 지원
- 커널 모드 (0) : 운영체제 코드 수행
→ 인터럽트 발생 시 운영체제가 Mode Bit를 0으로 설정 - 사용자 모드 (1) : 사용자 프로그램 수행
→ 보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행 가능한 '특권 명령'으로 규정
→ 사용자 프로그램에 CPU의 제어권을 넘기기 전에 운영체제가 Mode Bit를 1로 설정
Interrupt Line
- CPU는 하나의 명령어 사이클을 수행 후 다음 명령어 사이클을 수행하기 직전에 Interrupt Line이 세팅되었는지 확인
→ 세팅되어있다면 인터럽트 처리 과정 수행
2. 주기억장치 (Memory)
현재 실행되는 프로그램의 데이터와 명령어를 저장하는 부품
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함
- 커널 영역에는 운영체제가, 사용자 영역에는 사용자 프로그램이 저장
- 원칙적으로 CPU에 의해서만 접근될 수 있음
3. 보조기억장치 (Disk)
휘발성 저장장치인 메모리와 다르게 전원이 꺼져도 저장된 내용을 잃지 않는 저장장치
- 1. 파일 시스템 용도
→ 전원이 나가도 유지해야 할 정보가 있으면 그것을 파일 형태로 보조기억장치에 저장 - 2. 스왑 영역 용도
→ 운영체제는 프로그램 수행에 당장 필요한 부분만 메모리에 올려놓고 그렇지 않은 부분은 보조기억장치의 스왑 영역에 내려놓음
4. 입출력장치 (I/O Device)
컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
Device Controller
- 해당 입출력장치 유형을 관리하는 일종의 작은 CPU
- Local Buffer를 가짐 (일종의 Data Register)
→ 입출력은 실제 Device와 Local Buffer 사이에서 일어남 - Device Controller는 입출력이 끝났을 경우 인터럽트를 발생시켜 CPU에 보고
Device Driver
- 운영체제와 Device 간의 인터페이스 역할을 하는 소프트웨어
입출력의 수행
- 모든 입출력 명령은 특권 명령
- 사용자 프로그램은 시스템 콜을 통해 입출력 수행
5. Timer
CPU가 하나의 프로그램에 의해 독점되는 것을 막기 위해 사용되는 하드웨어
- 정해진 시간이 흐른 뒤 운영체제에 CPU 제어권이 넘어가도록 인터럽트를 발생시킴
→ 타이머는 매 클럭마다 1씩 감소
→ 타이머의 값이 0이 되면 타이머 인터럽트 발생
→ CPU를 특정 프로그램이 독점하는 것으로부터 보호 - 로드 타이머 (Load Timer)
→ 타이머의 값을 세팅하는 명령
→ 특권 명령에 속함 - 시분할 시스템에서 현재 시각을 계산하기 위해서도 사용
6. DMA Controller & Memory Controller
DMA Controller (Direct Memory Access Controller)
- 잦은 인터럽트로 인한 CPU의 오버헤드를 막기 위해 존재하는 하드웨어
→ Local Buffer와 메모리 사이에서 데이터를 옮기는 작업을 CPU가 담당하는 것이 아니라 DMA Controller가 대행
→ 이때 DMA Controller는 데이터를 byte 단위가 아닌 block 단위로 주고받음
→ 전송 완료 후 인터럽트를 발생시켜 CPU에 보고
Memory Controller
- 메모리에 CPU와 DMA Controller가 모두 접근 가능하므로 생기는 동시성 문제를 해결하는 역할을 담당하는 하드웨어
7. 동기식 입출력과 비동기식 입출력
동기식 입출력 (Synchronous I/O)
- 프로그램이 입출력 요청 후 입출력 작업이 완료된 후에야 CPU 제어권이 해당 프로그램에 넘어가는 입출력 방식
→ 일반적으로 프로그램이 입출력 수행 중인 경우 CPU를 낭비시키지 않고 다른 프로그램에 이양
→ 입출력 요청의 동기화를 위해 장치별로 큐를 두어 요청한 순서대로 처리할 수 있도록 함
비동기식 입출력 (Asynchronous I/O)
- 프로그램이 입출력 요청 후 CPU 제어권이 해당 프로그램에 즉시 넘어가는 입출력 방식
8. 저장장치 계층 구조
저장장치 계층 구조
- 위로 갈수록 속도와 비용이 증가하지만, 용량은 감소
- Primary Storage의 경우 휘발성이며 CPU가 접근 가능
- Secondary Storage의 경우 비휘발성이며 CPU가 접근 불가능
이화여자대학교 반효경 교수님의 운영체제 강의를 정리한 글입니다.
http://www.kocw.net/home/cview.do?cid=3646706b4347ef09
또한 반효경 교수님의 "운영체제와 정보기술의 원리" 책을 참고하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=238716482
'OS' 카테고리의 다른 글
6. 프로세스 동기화 (0) | 2024.01.03 |
---|---|
5. CPU 스케줄링 (0) | 2023.12.30 |
4. 프로세스 생성 (0) | 2023.12.27 |
3. 프로세스 (0) | 2023.12.25 |
1. 운영체제 소개 (2) | 2023.12.20 |