1장의 목표 - 운영체제의 대한 전반적인 소개, 컴퓨터 시스템의 구조 지식 학습
▶ 운영체제란?
: 일반 사용자와 컴퓨터 프로그램 사이의 internmediary 즉, 사용자 사용자 프로세스가 컴퓨터 하드웨어를 잘 사용할 수 있도록 만들어둔 인터페이스
◈ 운영체제의 목표
1) 사용자 프로그램을 실행시키고 문제 해결에 도움을 줌
2) 컴퓨터 시스템을 편리하게 사용하기 위함
3) 컴퓨터 하드웨어를 효율적인 방식으로 사용하기 위함
◈ 컴퓨터 시스템 구조 - 크게 4가지 구성 요소로 나눌 수 있다
1. 하드웨어
2. 운영체제 : 하드웨어를 효율적으로 동작시키기 위함
3. 응용 프로그램
4. Users
→ 컴퓨터 시스템 구조를 시각적으로 나타낸 것
◈ 운영 체제의 정의
1. 자원 할당자 Resource Allocator
- 모든 자원들을 관리한다
- 충돌하는 요청들 사이에서 효율적이면서 공정하게 자원들을 사용할 수 있도록 결정하는 역할
2. 프로그램 제어 Control Program
운영 체제의 범위는 확실하지 않다.
컴퓨터를 작동시켰을 때 항상 동작하는 프로그램을 커널이라고 하며 이를 운영체제라고 한다. 그리고 커널을 제외한 프로그램을 시스템 프로그램 또는 어플리케이션 프로그램이라고 한다.
커널은 가장 핵심이 되는 객체.
▶ Computer Startup - 컴퓨터 파워를 눌렀을 때 부팅되는 과정이라고 생각하면 된다.
- 이를 bootstrap program이라고 하며 이는 firmware이라고 알려져있는 ROM 또는 EEPROM에 저장되어 있다.
- 컴퓨터 시스템의 모든 요소들을 초기화한다.
- Operating System 커널을 Loads하고 실행시킨다.
컴퓨터 시스템의 구성
- 하나 또는 그 이상의 CPU 존재
- Bus를 통해 다른 기기에 접근할 수 있고 CPU가 주소값을 이용하여 접근할 수 있는 것은 memory이다.
- 하지만 초기 memory는 비어있는 상태인데 이곳을 채우는 것들은 disk의 데이터로부터 채워진다. (Bus를 이용)
- I/O devices와 CPU는 동시에 같이 작업된다.
- 컨트롤러는 local buffer를 가지고 있다. 예를 들어 읽기 작업이면 disk에서 시작되어 그 내용을 disk controller local buffer에 쓰기 작업을 한다. (= I/O 작업)
- 데이터 전송 작업이 끝나면 컨트롤러에서 interrupt를 발생시켜 CPU에게 알려준다.
▶ Interrupt의 기능
- Interrupt vector : 시스템이 부팅된 후 메모리 맨 앞 쪽에 있으며 테이블처럼 되어있다. 그 테이블 안에는 발생할 수 있는 interrupt 유형들이 나열되어있고 그 옆에는 interrupt를 처리해주는 정보가 존재
- Save : Interrupt가 발생한 그 순간에 그 Instruction의 주소를 저장. 왜 저장하냐? Interrupt발생과 동시에 처리를 진행해준 후 다시 interrupt가 발생한 시점(위치)로 되돌아와야 하기 때문
- Interrupt가 발생하여 처리하는 도중 다른 Interrupt가 발생하게 되면 우선순위를 비교하여 우선시 되는 작업을 먼저 수행해준다. 동시에 2가지 이상의 interrupt 처리를 하지 않고 우선순위에 따라 순차적으로 수행한다.
- Trap : Software적으로 발생한 Interrupt를 칭함. 에러가 발생하였을 때 또는 사용자 요청이 들어왔을 때 발생
- 운영체제는 interrupt driven이라고도 한다.
1. 위 사진을 통해 이해해보면 가운데 동그라미가 interrupt가 발생한 시점이다. 이 때 운영체제는 interrupt가 발생한 주소값, CPU가 사용하고 있는 레지스터와 Program Counter값(=다음에 실행시킬 instruction의 주소값)들을 모두 어느 한 곳에 저장한다.
2. 그 다음 interrupt를 처리하기 위한 Interrupt Service Routine으로 넘어가 작업을 수행한다. interrupt가 어떤 방식으로 발생하였는지 결정하여야한다.
- Polling : interrupt를 발생시킬 수 있는 device에게 직접 확인하여 알아보는 방식
- 위에서 이야기한 vector Table에 저장된 정보를 이용하여 알아내는 방식
3. 작업이 모두 끝나게 되면 저장해두었던 PC값을 이용하여 다음 작업을 수행해준다.
Interrupt Timeline
◈ I/O Structure
입출력 구조는 크게 2가지로 나눌 수 있다.
1) 동기식 I/O : I/O 동작이 시작하면 CPU도 기다렸다가 동작이 끝났을 때 같이 동작 가능한 구조]
- 다음 interrupt 발생 전까지 CPU는 기다리는 구조
- Wait loop 방식 : 다음 interuppt가 발생할 때 까지 메모리에 계속 접근
- 동기식 방식이기 때문에 최대 하나의 I/O 처리 가능
2) 비동기식 I/O : I/O 동작이 시작되어도 CPU는 컨트롤러를 통해 다른 작업을 수행할 수 있도록 전달 받을 수 있다.
- 다른 I/O 기기가 동작하고 있는지 확인하기 위한 Device status table가 포함되어있다.
Device-Status Table
→ device의 status 정보를 가지고 있는 Table이다.
- 이름 그대로 직접 메모리에 접근하는 구조
- DMA는 디바이스 컨트롤러 안에 local buffer도 있지만 DMA 컨트롤러도 존재한다. 그 DMA 컨트롤러가 byte단위보다 큰 block 단위로 데이터를 전송하고 block 단위의 interrupt를 발생시킨다.
- block 단위로 데이터를 전송하게 되면 여러 byte 크기를 하나의 block interrupt를 발생시켜 효율적일 수 있다.
- DMA transfer를 할 경우 CPU 관여 없이 하게 된다. DMA Controller 내부 DMA chip들이 block 단위로 메모리에 옮기게 된다.
'CS > OS' 카테고리의 다른 글
[OS] Process (2) : 프로세스 (0) | 2023.04.04 |
---|---|
[OS] Process (1) : 프로세스 (0) | 2023.03.28 |
[OS] - OS Structure(2) : System Program, Virtual Machine (0) | 2023.03.21 |
[OS] - OS Structure(1) : System Call (4) | 2023.03.18 |
[OS] - OS 소개(2) : OS 구조 및 기능 (0) | 2023.03.12 |