운영체제/운영체제 시작하기

운영체제의 큰 그림

iOS Developer 2025. 1. 4. 15:10

운영체제의 큰 그림

운영체제는 사용자를 위한 프로그램이 아니라, 사용자가 실행하는 프로그램을 위한 프로그램입니다. 즉, 사용자가 실행하는 응용 프로그램에 필요한 자원을 할당해주고, 올바르게 동작할 수 있도록 돕는 핵심 소프트웨어입니다.

 

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

운영체제는 그 규모가 매우 방대합니다. 대표적으로 리눅스 소스 코드는 천만 줄이 넘습니다. 그리고 이러한 방대한 운영체제 가운데서도 가장 핵심이 되는 부분이 있습니다.
바로 커널(Kernel)입니다. 커널은 사람으로 치면 심장, 자동차로 치면 엔진 같은 존재입니다. 어떤 커널을 사용하는지에 따라 프로그램이 하드웨어와 상호작용하는 방식이 달라지고, 이는 곧 시스템 전체의 성능까지 좌우합니다.

image

운영체제 서비스 중 사용자 인터페이스(GUI/CLI 등)와 같이 커널에 속하지 않는 서비스도 있습니다. 하지만 이들은 사용자와 상호작용하기 위한 통로일 뿐, 운영체제의 핵심 기능을 수행하는 커널 그 자체는 아닙니다.

 

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

운영체제는 응용 프로그램이 직접 CPU, 메모리, 하드 디스크 등 하드웨어 자원에 접근하지 못하게 막습니다.
직접 접근을 허용한다면 여러 프로그램이 자원을 무질서하게 다루면서 시스템 전체를 불안정하게 만들 위험이 생기기 때문입니다.

imageimage

 

2.1 이중 모드(Dual Mode)

그래서 CPU는 사용자 모드(user mode)와 커널 모드(kernel mode)라는 두 가지 모드로 구분되어 동작합니다.

  • 사용자 모드: 하드웨어 자원에 직접 접근하는 명령을 실행하지 못함. (일반적인 응용 프로그램이 실행되는 모드)
  • 커널 모드: 자원에 접근하는 모든 명령을 실행할 수 있음. (운영체제가 동작하는 모드)

프로그램이 하드 디스크나 메모리 같은 자원을 활용하려면, CPU를 커널 모드로 전환하여 운영체제 코드를 통해 자원을 사용해야 합니다.

image

.

 

2.2 시스템 호출(System Call)

사용자 모드로 동작 중인 프로그램이 자원을 사용하고 싶을 때는 시스템 호출을 통해 운영체제에게 도움을 요청합니다.
시스템 호출이 일어나면 CPU가 커널 모드로 전환되어 운영체제 코드를 실행하고, 작업이 끝나면 다시 사용자 모드로 돌아옵니다.

image

  1. 프로그램에서 시스템 호출 발생
  2. CPU가 커널 모드로 전환
  3. 운영체제의 커널 코드가 하드웨어 자원에 접근
  4. 사용자 모드로 복귀하여 프로그램 실행 계속

image

시스템 호출은 소프트웨어 인터럽트의 일종입니다. 입출력장치 등의 하드웨어 인터럽트와 달리, 특정 명령어를 통해 직접 발생시키는 인터럽트입니다.

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

image

 

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

운영체제의 대표적인 기능으로 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있습니다.

 

3.1 프로세스 관리

프로세스는 실행 중인 프로그램을 의미합니다. 컴퓨터에서는 동시에 여러 프로세스가 실행되고, CPU는 이 프로세스들을 번갈아 가며 처리합니다.
새로운 프로세스가 생성되고, 사용되지 않는 프로세스는 종료되는 과정에서 운영체제는 다음과 같은 작업을 담당합니다.

  • 프로세스 스케줄링: 어떤 프로세스부터 CPU를 할당할지, 얼마나 할당할지 결정
  • 프로세스 동기화: 여러 프로세스 간에 자원을 동시에 사용하려 할 때 충돌이 일어나지 않도록 제어
  • 교착 상태(Deadlock) 해결: 서로 자원을 주고받지 못해 프로세스들이 모두 멈춰버리는 상황을 방지·해결

imageimage

 

3.2 자원 접근 및 할당

  • CPU 스케줄링: 여러 프로세스가 동시에 실행되면, 운영체제가 누구에게 CPU를 언제, 얼마만큼 할당할지 결정합니다.
  • 메모리 관리: 프로세스마다 크기도 다르고 적재되는 주소도 다릅니다. 실행할 프로세스를 어느 주소에 배치할지 결정하고, 메모리가 가득 찬 경우는 어떻게 처리할지 관리합니다.
  • 입출력장치(I/O) 관리: 입출력장치가 발생시키는 하드웨어 인터럽트를 처리하기 위한 인터럽트 서비스 루틴을 제공하고, 디스크·네트워크·키보드 등에서 발생하는 신호에 적절히 대응합니다.

 

3.3 파일 시스템 관리

운영체제는 사용자가 파일을 생성·삭제·수정·저장할 수 있는 파일 시스템을 제공합니다. 디렉토리를 통해 파일들을 체계적으로 관리하는 기능도 운영체제의 몫입니다.

 


마무리

운영체제는 하드웨어와 응용 프로그램 사이에서 자원을 보호하고 할당하는 역할을 맡습니다. 커널을 중심으로 이중 모드, 시스템 호출, 프로세스·자원·파일 시스템 관리가 유기적으로 돌아가는 구조를 이해하면, 프로그램 개발과 운용이 훨씬 수월해집니다.

참고 도서

  • 혼자 공부하는 컴퓨터 구조 + 운영체제 (한빛미디어, 강민철 지음)