1 운영체제를 알아야 하는 이유
2 운영체제의 큰 그림
운영체제의 심장, 커널
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다.
커널 (Kernel)
![]()
커널은 운영체제의 핵심 부분이다.
응용 프로그램과 하드웨어 사이에서 중재자 역할을 수행한다.
커널은 마치 사람의 심장, 자동차의 엔진과 같은 역할을 한다.
어떤 커널을 사용하는지에 따라 운영체제의 성능과 기능이 크게 달라진다.
| 역할 | 설명 |
|---|---|
| 자원 관리 | CPU, 메모리, 저장장치 등의 자원을 효율적으로 분배 |
| 프로세스 제어 | 여러 프로그램을 동시에 실행하며 CPU 시간을 나눠줌 |
| 보호 기능 | 프로그램이 다른 프로그램의 메모리를 침범하지 못하게 보호 |
| 시스템 호출 처리 | 응용 프로그램의 요청(system call)을 받아 처리 |
커널이 없다면 응용 프로그램은 하드웨어에 직접 접근해야 하며, 이는 보안과 안정성 문제를 야기할 수 있다.
작은 실수 하나로 데이터 손실, 시스템 오류 등을 초래할 수 있다.
이중 모드와 시스템 호출
![]()
운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어에 직접 접근하지 못하도록 보호한다.
응용 프로그램이 하드웨어에 마음대로 접근하고 조작할 수 있다면 시스템이 불안정해질 수 있기 때문이다.![]()
이중 모드 (Dual Mode)
CPU가 명령어를 실행하는 모드를 크게 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 나눈다.
명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있다.
CPU는 이 두 모드 중 하나로 동작하며, 현재 실행 중인 프로그램의 권한 수준에 따라 다르게 동작한다.
사용자 모드 (User Mode)
운영체제 서비스를 제공받을 수 없는 실행 모드이다.
일반적인 응용 프로그램은 사용자 모드에서 실행된다.
ex) 게임, 웹 브라우저, 채팅앱 등
커널 모드 (Kernel Mode)
운영체제 서비스를 제공받을 수 있는 실행 모드이다.
CPU가 커널 모드로 멸령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.
ex) 파일 시스템, 프로세스 관리, 메모리 관리 등
시스템 호출 (System Call)
![]()
사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제에 서비스를 제고받으려면 운영체제 요청을 보내 커널 모드로 전환 되어야 한다.
이러한 요청을 **시스템 호출(System Call)**이라고 한다. 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환되어 운영체제의 서비스를 제공 받을 수 있다.
소프트웨어 인터럽트 (Software Interrupt)
시스템 호출은 일종의 인터럽트이다.
인터럽트는 입출력장치에 의해 발생하기도 하지만 특정 명령어에 의해 발생하기도 한다.
이를 **소프트웨어 인터럽트(Software Interrupt)**라고 한다.
![]()
- 응용 프로그램이 시스템 호출 실행
- 운영체제 내의 코드를 통해 커널 모드로 전환
- 커널 모드에서 운영체제가 요청 작업 수행
- 완료되면 다시 사용자 모드로 전환
![]()
일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용한다.
그 과정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행한다.
운영체제의 핵심 서비스
프로세스 관리 (Process Management)
![]()
실행중인 프로그램을 **프로세스(Process)**라고 한다.
프로세스는 실행 중인 프로그램의 상태, 메모리, CPU 레지스터 등의 정보를 포함한다.
일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있다.
그렇기 때문에, CPU는 여러 프로세스를 번갈아 가며 실행한다.
![]()
운영체제는 이러한 프로세스들을 관리하는 역할을 한다.
여러 프로세스를 동시에 실행되도록 스케줄링 한다.
실행 준비된 프로세스들에 대한 스케줄링도 한다.
필요 없는 프로세스는 종료 시키고, 새로운 프로세스를 생성하기도 한다.
지원 접근 및 할당
모든 프로세스는 실행을 위해 자원을 필요로 한다.
그리고 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 준다.
| 항목 | 설명 | 운영체제 역할 |
|---|---|---|
| CPU | 한 번에 하나만 실행 | CPU 스케줄링 (공정한 시간 분배) |
| 메모리 | 프로세스가 올라와야 실행 가능 | 주소 결정, 공간 할당, 단편화 해결 |
| 입출력 장치 | 사용자와 시스템 간 상호작용 | 인터럽트 감지 및 서비스 루틴 실행 |
파일 시스템 관리
파일 시스템이란 우리가 매일 사용하는 폴더를 효율적으로 저장하고 관리할 수 있도록 운영체제가 제공하는 기능이다.