Chapter09 운영체제 시작하기

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


2 운영체제의 큰 그림


운영체제의 심장, 커널

운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다.


커널 (Kernel)

커널

커널은 운영체제의 핵심 부분이다.
응용 프로그램과 하드웨어 사이에서 중재자 역할을 수행한다.
커널은 마치 사람의 심장, 자동차의 엔진과 같은 역할을 한다.
어떤 커널을 사용하는지에 따라 운영체제의 성능과 기능이 크게 달라진다.

역할 설명
자원 관리 CPU, 메모리, 저장장치 등의 자원을 효율적으로 분배
프로세스 제어 여러 프로그램을 동시에 실행하며 CPU 시간을 나눠줌
보호 기능 프로그램이 다른 프로그램의 메모리를 침범하지 못하게 보호
시스템 호출 처리 응용 프로그램의 요청(system call)을 받아 처리

커널이 없다면 응용 프로그램은 하드웨어에 직접 접근해야 하며, 이는 보안과 안정성 문제를 야기할 수 있다.
작은 실수 하나로 데이터 손실, 시스템 오류 등을 초래할 수 있다.


이중 모드와 시스템 호출

이중모드1

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 보호한다.
응용 프로그램이 하드웨어에 마음대로 접근하고 조작할 수 있다면 시스템이 불안정해질 수 있기 때문이다.

이중모드2


이중 모드 (Dual Mode)

CPU가 명령어를 실행하는 모드를 크게 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 나눈다.
명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있다.
CPU는 이 두 모드 중 하나로 동작하며, 현재 실행 중인 프로그램의 권한 수준에 따라 다르게 동작한다.


사용자 모드 (User Mode)

운영체제 서비스를 제공받을 수 없는 실행 모드이다.
일반적인 응용 프로그램은 사용자 모드에서 실행된다.
ex) 게임, 웹 브라우저, 채팅앱 등


커널 모드 (Kernel Mode)

운영체제 서비스를 제공받을 수 있는 실행 모드이다.
CPU가 커널 모드로 멸령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.
ex) 파일 시스템, 프로세스 관리, 메모리 관리 등


시스템 호출 (System Call)

시스템 호출

사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제에 서비스를 제고받으려면 운영체제 요청을 보내 커널 모드로 전환 되어야 한다.
이러한 요청을 시스템 호출(System Call)이라고 한다. 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환되어 운영체제의 서비스를 제공 받을 수 있다.


소프트웨어 인터럽트 (Software Interrupt)

시스템 호출은 일종의 인터럽트이다.
인터럽트는 입출력장치에 의해 발생하기도 하지만 특정 명령어에 의해 발생하기도 한다.
이를 소프트웨어 인터럽트(Software Interrupt)라고 한다.


시스템 호출 작동 예

  1. 응용 프로그램이 시스템 호출 실행
  2. 운영체제 내의 코드를 통해 커널 모드로 전환
  3. 커널 모드에서 운영체제가 요청 작업 수행
  4. 완료되면 다시 사용자 모드로 전환

시스템 호출 작동 예2

일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용한다.
그 과정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행한다.


운영체제의 핵심 서비스


프로세스 관리 (Process Management)

프로세스

실행중인 프로그램을 프로세스(Process)라고 한다.
프로세스는 실행 중인 프로그램의 상태, 메모리, CPU 레지스터 등의 정보를 포함한다.
일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있다.
그렇기 때문에, CPU는 여러 프로세스를 번갈아 가며 실행한다.


프로세스 관리

운영체제는 이러한 프로세스들을 관리하는 역할을 한다.
여러 프로세스를 동시에 실행되도록 스케줄링 한다.
실행 준비된 프로세스들에 대한 스케줄링도 한다.
필요 없는 프로세스는 종료 시키고, 새로운 프로세스를 생성하기도 한다.


지원 접근 및 할당

모든 프로세스는 실행을 위해 자원을 필요로 한다.
그리고 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 준다.

항목 설명 운영체제 역할
CPU 한 번에 하나만 실행 CPU 스케줄링 (공정한 시간 분배)
메모리 프로세스가 올라와야 실행 가능 주소 결정, 공간 할당, 단편화 해결
입출력 장치 사용자와 시스템 간 상호작용 인터럽트 감지 및 서비스 루틴 실행

파일 시스템 관리

파일 시스템이란 우리가 매일 사용하는 폴더를 효율적으로 저장하고 관리할 수 있도록 운영체제가 제공하는 기능이다.


Leave a comment