운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어다.

운영체제는 하드웨어와 소프트웨어 사이에서 중재자 역할을 하면서 리소스를 관리하고, 사용자 인터페이스를 제공하고, 컴퓨터 시스템의 다양한 구성 요소 간에 원활한 통신이 이루어지도록 돕는다.


대표적인 운영체제: Windows, Linux, macOS

Windows

Microsoft가 만든 Windows는 개인용 컴퓨터에서 가장 많이 쓰이는 운영체제다. 사용자 친화적인 인터페이스와 넓은 소프트웨어 호환성으로 잘 알려져 있고, 가정과 사무실 환경 모두에서 인기가 높다. 데스크톱부터 태블릿까지 다양한 기기에서 돌아간다.

Linux

Linux는 유연성, 보안성, 강력한 성능으로 가치를 인정받는 오픈 소스 운영체제다. 다양한 배포판과 커스텀 기능 덕분에 개발자들과 서버 관리자들 사이에서 특히 인기가 많다.

macOS

Apple이 만든 macOS는 미려한 디자인, 다른 Apple 제품들과의 매끄러운 연동, 그리고 사용자 경험에 대한 강한 집념으로 잘 알려져 있다. 강력한 멀티미디어 도구와 안정적인 성능 덕분에 크리에이티브 분야 전문가들에게 사랑받는다.


컴퓨터의 구조 (단순화)

컴퓨터 구조를 단순화하면 아래 그림과 같다.

컴퓨터의 단순화된 구조

컴퓨터의 단순화된 구조

프로세서(Processor)는 보통 CPU를 말한다. 주메모리를 보면 크게 ROM과 RAM으로 나뉜다.

ROM (Read-Only Memory)

비휘발성 메모리. 전원이 꺼져도 저장된 내용이 유지된다. 메모리에서 아주 작은 영역만 차지한다. (보통 수 KB 수준)

RAM (Random Access Memory)

휘발성 메모리. 전원이 꺼지면 저장된 내용이 다 날아간다. 메모리에서 넓은 영역을 차지한다. (수 MB에서 수 GB 수준)


컴퓨터는 어떻게 켜질까?

부트로더가 컴퓨터를 부팅시킨다

  1. 컴퓨터 전원이 켜지면, 프로세서(CPU)가 ROM에 저장된 내용을 읽어 들인다.
  2. ROM에는 POST(Power-on self-test) 프로그램과 부트로더(bootloader)가 저장되어 있다.
  3. 전원이 켜진 직후, POST가 가장 먼저 실행되어 현재 컴퓨터 상태를 진단한다.
  4. POST가 성공적으로 끝나면, 부트로더가 실행된다.
  5. 부트로더는 하드디스크에 저장된 운영체제를 찾아 주메모리(RAM)로 로드한다.
  6. 이 일련의 과정을 **부팅(booting)**이라고 부른다.

부트로더가 하는 일

부트로더가 하는 일

이 과정이 끝나면 운영체제가 정상 동작할 준비를 마친 것이고, 운영체제는 컴퓨터 전원이 꺼질 때 비로소 종료된다.


커널(kernel)과 명령어 해석기(shell)

운영체제는 크게 **커널(kernel)과 명령어 해석기(shell)**로 나뉜다.

커널은 운영체제의 핵심(core)이다. 운영체제가 하는 모든 핵심 기능이 커널에 구현되어 있다.

명령어 해석기는 사용자가 커널(운영체제)에 요청하는 명령을 해석한다. 커널에 요청을 전달하고, 그 결과를 사용자에게 출력해 주는 역할을 한다.

사용자는 현재 디렉터리의 파일 목록 가져오기, 프로그램 실행, 디스크 용량 확인 같은 명령을 GUI나 CLI를 통해 운영체제에 요청할 수 있다.


운영체제의 위치

애플리케이션(응용 프로그램)은 특정 운영체제에 맞춰 만들어진다.

그래서 하나의 애플리케이션은 서로 다른 운영체제에서 바로 실행되지 않는다. (같은 하드웨어 환경이더라도 마찬가지다.)

예를 들어:

Windows에서 돌아가는 프로그램을 Linux로 그냥 가져가면 실행이 안 된다.

애플리케이션과 OS의 위치 관계

애플리케이션과 OS의 위치 관계

애플리케이션은 위 그림처럼 운영체제 위에서 동작한다.

즉, 애플리케이션은 하드웨어 리소스를 직접 제어하지 않고, 운영체제가 제공하는 자원과 서비스만 이용해서 동작한다.

운영체제는 현실 세계의 ‘정부(Government)‘와 비슷한 역할을 한다.

정부가 하는 일:

  • 토지, 인력, 예산 같은 자원을 효율적으로 분배하고 활용해야 한다.
  • 이를 위해 행정부, 국토교통부, 교육부, 국방부 등 여러 부처로 나눠 업무를 담당한다.
  • 각 부서에서 국민들의 요구를 수렴해 자원을 적절히 배분한다.

운영체제가 하는 일:

  • 프로세스, 메모리, 하드디스크 같은 하드웨어 자원을 효율적으로 관리해야 한다.
  • 프로세스 관리, 메모리 관리, 디스크 관리, 네트워크, 보안 등 기능별 모듈로 나뉜다.
  • 애플리케이션들의 요청에 따라 각 기능을 처리하며 하드웨어 자원을 적절히 배분한다.