computer hardware를 관리하는 소프트웨어
App과 hardware 사이에 중간매개의 역할을 수행한다.
hardware
os
app
user

kernel에서 system programs, application 관리를 해준다.

컴퓨터 부팅시, 맨 처음에 실행되는 프로그램.
(OS를 로딩하는 역할을 수행한다.)
interrupt을 통해서 cpu는 interrupt 명령어를 먼저 처리한다.

cpu가 peek를 한 것은 I/O device에서 interrupt가 발생했기 때문임.
Hardware는 interrupt을 trigger를 하는데, 이때 CPU에 signal을 전송한다.(system bus 사용)
memory에서 명령어를 fetch한 후, cpu에서 실행하는 fetch-execute 구조를 가진다.
이때 instruction register에 명령어를 저장한다.

구분 기준
storage capacity
access time

CPU를 안거치고 Device가 Memory에 직접 접근.
CPU : 명령어를 처리하는 H/W
Processor : 1개 이상의 CPU를 포함하는 물리적인 칩
Core : CPU의 백그라운드 연산 장치
Multicore : Cores
Multiprocessor : 여러 프로세서.

1개의 메모리에 여러개의 CPU가 연결되어 있음

1개의 CPU에 여러개의 core만 추가를 한다.
단일 프로세스 문제를 해결하기 위해 여러개의 프로그램을 메모리에 올려놓고 하나의 CPU에서 번갈아 가며 동시에 실행시키는 방안을 첨가 하였다.
멀티 프로그래밍은 여러개의 프로그램이 동시에 실행된다는 의미로서, CPU 사용률을 극대화 시키는게 목적을 두었다.

그러나 어느 한 프로그램이 CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기를 해야 한다는 문제점이 존재 하였다. 위의 그림에서 P #1 작업 시간이 엄청 길어질 경우 P #2 는 실행될 기회조차 못 얻게 된다.
https://inpa.tistory.com/entry/👩💻-multi-programming-tasking-processing [Inpa Dev 👨💻:티스토리]
멀티 프로그래밍의 취지는 좋았지만 어느한 프로세스가 모두 실행되야 다음 프로세스가 실행될 수 있는 한계점이 있었다. 따라서 이것을 해결하기 위해 프로세스는 한번 CPU를 사용할때 아주 짧은 시간(quantum)만 실행되도록 하여 각 프로그램의 작업을 아주 작은 단위로 번갈아 가며 처리하면서, 작업 응답 시간을 최소화 시키는 멀티 태스킹 원리가 탄생하였다.
이때 잘게 나뉘어진 프로세스 끼리 작업이 스위칭 되는 것을 문맥 교환(Context Switching) 이라고 한다.

이렇게 프로세스 작업이 잘게 나뉘어져 교대로 실행함으로써 얻게 되면 이점은 다음과 같다.
출처: https://inpa.tistory.com/entry/👩💻-multi-programming-tasking-processing [Inpa Dev 👨💻:티스토리]
( 동시에 실행하는 것처럼 보임 )
user mode
kernel mode

user process는 system call을 통해서 kernel에 요청을 보낸다.(간접적으로 요청)
kernel만 하드웨어 제어
운영체제를 여러개 가동을 하는 것을 의미.
가상화와 OS 사이에 VMM(Virtual Machine Manager)를 주입한다.
VMM을 통해서 여러개의 OS 구동이 가능하다.

Traditional Computing
Mobile Computing
Client-Server
Peer-to-Peer
Cloud Computing
나는 UI(terminal)만 있고, 실제 리소스는 Cloud에 있다.
Real-Time Embedded Systems
command line interface
known as bash shell
graphical user interface
System call을 통해서 OS의 기능을 사용한다.(OS Api)