9. 운영체제 시작하기

운영체제를 알아야 하는 이유

<aside> ☝🏻 모든 프로그램은 실행을 위해 (시스템)자원을 필요로 한다. 이때, 운영체제는 1) 실행할 프로그램에 필요한 자원을 할당하고, 2) 프로그램이 올바르게 실행되도록 돕는 3) 특별한 프로그램이다.

</aside>

  1. 운영체제란

    IMG_2252.jpeg

    IMG_2253.jpeg

  2. 운영체제의 필요성

    → 프로그램은 하드웨어가 필요하고, 하드웨어를 조작하는 프로그램이 운영체제이다. 그래서 운영체제를 알면 프로그램이 하드웨어 상에서 어떻게 작동하는지를 알 수 있다.

    → 문제 해결의 실마리

운영체제의 큰 그림

<aside> ☝🏻 10장부터 15장까지는 커널 모드에서 다루는 운영체제의 핵심 서비스를 다룬다.

</aside>

  1. 운영체제의 심장, 커널

    → 운영체제의 핵심 서비스를 담당하는 부분, 핵심 서비스는 3가지가 있다.

    IMG_2254.jpeg

    <aside> ✌🏻 커널에 포함되지 않는 서비스는 대표적으로 사용자 인터페이스(UI)가 있다. UI의 종류에는 그래픽 유저 인터페이스(GUI)와 커맨드 라인 인터페이스(CLI)가 있다. → 커널에 포함되어 있지 않기에, 당연히 같은 커널일지라도 UI는 다를 수 있다.

    </aside>

  2. 이중 모드와 시스템 호출

    <aside> ✌🏻 운영체제에 도움을 요청한다 = 운영체제 코드를 실행하려고 한다.

    </aside>

    IMG_2255.jpeg

  3. 운영체제의 핵심 서비스

    <aside> 👐🏻 운영체제는 가상 머신을 위한 모드인 하이퍼 바이저 모드를 두기도 한다. 가상 머신은 하이퍼 바이저 모드를 통해 운영체제로부터 운영체제 서비스를 받을 수 있다.

    </aside>

10. 프로세스와 스레드

프로세스 개요

<aside> ☝🏻 프로그램 자체가 프로세스인 것이 아니라, 프로그램이 메모리에 적재될 때 프로세스라 한다. 프로그램이 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 메모리에 적재하는 순간 프로세스가 된다. 이를 **‘프로세스를 생성한다’**라고 한다.

</aside>

<aside> 👐🏻 프로세스는 사용자가 보는 앞에서 실행되는 프로세스인 ‘포그라운드 프로세스’와 사용자가 보지 못하는 곳에서 실행되는 프로세스인 ‘백그라운드 프로세스’가 있다. 백그라운드 프로세스에는 사용자와 직접 상호작용할 수 있는 백그라운드 프로세스도 있지만, 정해진 일만 묵묵히 수행하는 백그라운드 프로세스인 ‘데몬(daemon)’, 또는 ‘서비스(service)’가 있다.

</aside>

  1. 프로세스 제어 블록(PCB)

    → 특정 프로세스를 식별하고 해당 프로세스를 처리하는 데 필요한 정보가 담긴 자료 구조

  2. 문맥 교환

    → 기존 프로세스의 PCB에 문맥을 백업하고, 다음 프로세스의 PCB에서 문맥을 복구해 교환하는 것

    Untitled

  3. 프로세스의 메모리 영역

<aside> ✌🏻 C언어를 컴파일할 때 메모리에서는 다음과 같은 과정이 일어난다. [참고]

Untitled

</aside>