유저와 컴퓨터 간의 중계 역할을 한다.
1. 편리한 인터페이스를 제공하고
2. 자원을 관리한다.

하드웨어 - 운영체제 - 응용 프로그램 - 유저
-> 중간 역할을 한다.
유저 입장에서의 운영체제가 하는 일
컴퓨터 입장에서 운영체제가 하는 일
자원 할당 resource allocator
프로그램 제어, 원할히 동작하도록 control program
- 운영체제는 종류마다 모두 달라 한마디로 정의하기 어려움
kernel:* 컴퓨터에서 항상 실행되는 프로그램, 하드웨어와 소프트웨어 사이에서 인터페이스 역할을 하며 운영체제의 다양한 기능 제공
middle ware: 응용 프로그램 개발자가 운영체제로부터 제공받는 서비스 외의 추가적인 서비스를 제공하는 소프트웨어 프래임워크
system programs: kerenl이외의, 시스템을 관리하는 프로그램
CPU <- system bus -> device controllers

local buffer와 main memory가 데이터를 주고 받는다.
CPU에는 interrupt를 감지하는 센서가 있다.
interrupt-request line에 신호를 보낸다.
cpu는 모든 동작마다 interrupt-request line을 확인한다.
cpu가 interrupt를 감지하면, interrupt를 처리하는 루틴의 주솟값이 저장돼 있는interrupt vector를 통해 interrupt-handler routine으로 건너뛴다(우선 실행한다).
상태와 P.C 저장 -> interrupt 처리 -> 저장한 곳으로 복원
Nonmaskable interrupt - 중요한 인터럽트
ex) 전원 공급 장애, 기계 오작동, 메모리 손실
Maskable interrupt - 덜 중요한 인터럽트
ex) DMA(Direct memory access)인터럽트, 외부 인터럽트...
이 인터럽트는 우선순위가 높은 작업중이라면 지연될 수 있음

RAM(Random access Memory): 휘발성 메인 메모리로 DRAM 과 SRAM이 있음
Bootstrap program: OS를 메인 메모리에 올리기 위한 시스템 , 비휘발성
- Controller의 buffer에 들어갈 정도의 작은 I/O 입출력(마우스, 키보드 등의 입출력)은 상관 없지만 NVS I/O와 같은 용량이 큰 크기의 I/O 입출력이라면 한번의 interrupt로 처리할 수 없어 비효율적인 작업이 일어나게 된다.
이를 해결하기 위해서 DMA(Direct Memory Access)가 필요하다.
DMA: 빠른 I/O 입출력을 위해 Interrupt없이 buffer의 정보를 메모리에 올리는 것(block 단위), 이때 interrupt는 하나의 block당 일어난다
=> interrupt를 (buffer size)/(block size)만큼 줄임




