1강. Operating System Instruction (1)

박정무·2021년 9월 18일
0

Operating System

목록 보기
1/1
post-thumbnail

OS란? 🤔

OS의 정의

OS(Operating System)이란 컴퓨터 하드웨어와 컴퓨터 사용자 사이에서 서로를 중재하는 프로그램이다.

OS is Resource Allocator :

컴퓨터의 모든 자원을 관리하고, 효율적이고 공정하게 자원을 할당하는 역할을 한다.

OS is Control Program :

컴퓨터를 더 적절하게 사용할 수 있도록 하고, 에러를 막는다.

OS는 다양한 정의가 있다.

목적

컴퓨터를 사용하는 User가 컴퓨터를 사용하기 더 쉽도록 한다.

하드웨어(HW)를 더 효율적으로 다룰 수 있도록 한다.

컴퓨터 시스템의 구조

컴퓨터는 네가지 시스템으로 구분될 수 있다.

  1. HardWare( HW ) : CPU, Memory, I/O Device 등...
  2. Operating System( OS ) : 다양한 프로그램,User 와 HW의 사용을 제어한다.
  3. Application Programs
  4. User

Kernel

Kernel = OS이다 ( 맞는지는 잘 모르겠다)

Kernel은 항상 실행중이고, Kernel을 제외한 프로그램을 System Program 혹은 Application이라고 부른다.


*Bootstrap Program

Bootstrap Program은 ROM, EEPROM에 저장되어 있는 FirmWare로 컴퓨터가 시작시 자동으로 Bootstrap Program이 실행된다.

Bootstrap Program이 실행되면 Bootstrap Program은 System을 초기화하고 OS Kernel을 불러온다.


컴퓨터 시스템 구조

Device Controller

각각의 I/O Device🖱️ ⌨️ 🖨️ 🖥️ 에는각각을 담당하는 Device Controller가 있다.

CPU와 Device Controller들은 Shared Memory에 접근을 제공하는 Common Bus를 통해 연결되어 있고 I/O Device와 CPU는 동시에 실행된다.

각각의 Device Controller들은 Buffer를 가지고 있고 CPU는 프로그램의 실행 결과를 Memory에서 Device Controller 의 Local Buffer로, Device Controller는 I/O Device의 실행 결과를 I/O Device에서 Local Buffer로 옮긴다.

Device Controller의 Local Buffer는 CPU와 I/O Device간의 다리 역할을 하게 된다.

Device Controller는 I/O 작업이 완료되면 CPU에게 인터럽트( Interrupt )를 날려 작업이 완료되었음을 알려준다.

Interrupt(인터럽트)

Interrupt 란 Local Controller가 CPU에게 작업이 완료되었음을 알려주는 방식이다.

Interrupt 발생 시 OS는 Register 값, Program Counter( 다음 Instruction의 주소를 저장하는 Register)의 값을 저장하여 CPU의 상태값을 저장한다.

Interrupt는 Interrupt Vector ( Service Routine의 주소를 포함하고 있는 Vector)를 통해서 Interrupt Service Routine의 제어를 전달한다.

OS는 한번에 하나의 Interrupt만 처리가 가능하다.

*Trap : SoftWare적으로 발생하는 Interrupt / ex) Zero Division Error

인터럽트 처리 방법

  1. Polling : 모든 I/O Device를 순차적으로 방문하며 Interrupt 여부를 검사한다. 모든 Device를 검사하므로 비효율적이다.
  2. Vectored Interrupt System : Interrupt Vector( Type of Interrupt, Service Routine Address )의 테이블을 조회하여 발생한 Interrupt를 처리하는 Service Routine Address를 찾는다. Polling에 비해서 효율적이다.

*Service Routine : 각 Interrupt에 대한 Actions


I/O 구조

Synchronous I/O ( 동기식 입출력 )

동기식 입출력에는 두가지 방법이 있다.

  1. Wait Instruction : 다음 Interrupt가 발생할 때 까지 기다리라는 Instruction을 실행한다.
  2. Wait Loop : I/O Device Controller한테 할당된 메모리를 Loop를 돌며 계속 검사하여 입출력이 완료되었는지를 확인한다.

동기식 입출력 방식은 메모리와 버스의 이용률이 증가한다 🆙

Asynchronous I/O ( 비동기식 입출력 )

비동기식 입출력은 CPU가 I/O 작업을 기다리지 않는다.

Process는 기다리고 CPU는 다른 일을 찾아서 하기 때문에 동기식 입출력에 비해 CPU 사용이 효율적이다👍 ⬆️

비동기식 입출력에서는 OS가 Device-Status Table을 관리한다.

*Device-Status Table : 각각 I/O 장치의 정보( Type, Address, Status 등 )를 갖고있는 Table

기술의 발전에 따라 I/O 장치가 Memory의 입출력 속도에 가깝게 입출력이 가능해지면서 I/O 장치가 CPU의 간섭 없이 Local Buffer에서 Main Memory에 직접 Block Data를 전달하는 방식을 DMA (Direct Memory Access) 라고 한다. Buffer → Directly → Main Memory

옛날에는 통신단위(Byte) 마다 Interrupt가 발생하여 비효율적이였지만, DMA가 발전하여 Block 마다 Interrupt가 발생하여 효율적이 되었다.

profile
박붕어입니다.

0개의 댓글