CS/OS

[OS] - OS 소개(1) : 컴퓨터 구성, I/O Structure

JWonK 2023. 3. 9. 19:11
728x90
반응형

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이라고도 한다.

 

Intrrupt Handling

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가 포함되어있다.

Two I/O Methods

 

 

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 단위로 메모리에 옮기게 된다.

728x90
반응형