> For the complete documentation index, see [llms.txt](https://real-dev.gitbook.io/real-library/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://real-dev.gitbook.io/real-library/os_with_joonion/2-.-2.md).

# 2강. 운영체제 개론 (2)

* 운영체제의 일반적인 정의는 항상 동작하는 프로그램 1개. kernel을 통해 시스템과 엔터프라이즈에 대한 접근을 제어한다. 즉, 커널이 OS의 핵심이 된다.
* 모던 컴퓨터 시스템은 폰 노이만 모델을 따르지 않는 구조. 전통적인 컴퓨터 구조는 CPU들과 컨트롤러가 bus로 연결된 형태.
* 부트스트랩 프로그램은 부팅을 위해 사용한다. 얘는 메모리에 운영체제를 로딩하는 역할을 수행한다.
* 인터럽트는 CPU와 주변 기기가 통신하는 과정을 의미한다. 하드웨어는 언제나 인터럽트를 신청할 수 있다. CPU는 인터럽트로 들어온 요청을 수행한다.
* 저장 공간은 저장 용량과 속도에 따라 여러개의 개수로 분류되어있다. CPU register - cache - RAM - SSD - HDD - Optical Disk - magnetic tapes…

IO 구조. 디바이스가 CPU에 요청하고 쓰레드를 실행하며, CPU가 메모리와 상호작용한다. 디바이스가 메모리에 직접 접근하는 경우도 있다.

* 커널 개발은 거의 안정화되었고 디바이스 컨트롤러를 만드는 것이 대부분이다.
* 멀티 프로그래밍이란, 프로그램을 메모리에 여러개를 올려놓고 동시에 실행하는 방식
* 멀티 태스킹, 멀티 프로세싱을 사용할 수 있다는 것은 동시에 여러개의 프로그램이 동작할 수 있다는 얘기. 이 때 하나의 CPU가 여러 작업을 번갈아 가면서 동시에 실행하는 것을 동시성, N개의 CPU가 N개의 동작을 병렬로 처리하는 것을 병렬성이라고 한다,
* CPU 스케줄링이란, 어떤 프로세스를 다음에 실행시켜야 가장 효율좋게 CPU를 사용할 것인지를 결정하는 행위다. 5장에 나올 예정
* OS에는 유저 모드와 커널 모드가 나뉜다. 커널 모드만 하드웨어를 접근할 수 있고, 유저 모드에서는 하드웨어에 접근할 수 없다.
* 가상화 기술이란, 하나의 컴퓨터에서 여러개의 운영체제를 실행하기 위해 사용한다. VMM (Virtual Machine Manager)를 통해 동시에 여러개의 OS를 사용하는 기술
* 시스템 CAll은 CLI를 통하는 방법, GUI를 통하는 방법, Touch 등 사용자 인터페이스이며, 프로그램과 OS의 통신은 시스템 Call을 통해 동작한다. 이를 OS API라고 한다.
*

<br>
