OS(Operating System)이란 컴퓨터 하드웨어와 컴퓨터 사용자 사이에서 서로를 중재하는 프로그램이다.
컴퓨터의 모든 자원을 관리하고, 효율적이고 공정하게 자원을 할당하는 역할을 한다.
컴퓨터를 더 적절하게 사용할 수 있도록 하고, 에러를 막는다.
OS는 다양한 정의가 있다.
컴퓨터를 사용하는 User가 컴퓨터를 사용하기 더 쉽도록 한다.
하드웨어(HW)를 더 효율적으로 다룰 수 있도록 한다.
컴퓨터는 네가지 시스템으로 구분될 수 있다.
Kernel = OS이다 ( 맞는지는 잘 모르겠다)
Kernel은 항상 실행중이고, Kernel을 제외한 프로그램을 System Program 혹은 Application이라고 부른다.
Bootstrap Program은 ROM, EEPROM에 저장되어 있는 FirmWare로 컴퓨터가 시작시 자동으로 Bootstrap Program이 실행된다.
Bootstrap Program이 실행되면 Bootstrap Program은 System을 초기화하고 OS Kernel을 불러온다.
각각의 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 란 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
*Service Routine : 각 Interrupt에 대한 Actions
동기식 입출력에는 두가지 방법이 있다.
동기식 입출력 방식은 메모리와 버스의 이용률이 증가한다 🆙
비동기식 입출력은 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가 발생하여 효율적이 되었다.