Skip to content

운영체제란 (Operating System) ​

운영체제(OS, Operating System)는 하드웨어와 컴퓨터 자원을 관리하면서, 사용자와 응용 프로그램이 컴퓨터를 편리하고 효율적으로 쓸 수 있게 환경을 만들어 주는 시스템 소프트웨어입니다. Windows, macOS, Linux, UNIX, 예전의 MS-DOS, 스마트폰의 Android와 iOS가 모두 운영체제입니다.

한눈에 보기 ​

  • 운영체제는 응용 프로그램과 하드웨어 사이의 중간 관리자(인터페이스) 입니다. 응용 프로그램은 CPU나 디스크를 직접 만지지 않고, 운영체제에게 "이것 좀 해 줘" 하고 부탁합니다.
  • 비유: 운영체제는 건물 관리사무소와 같습니다.
    • 입주한 가게들(응용 프로그램)은 전기, 수도, 엘리베이터(CPU, 메모리, 디스크)를 직접 고치거나 나눠 쓰지 않습니다.
    • 관리사무소가 누가 언제 얼마나 쓸지 정하고, 한 가게가 다른 가게 공간을 침범하지 못하게 막고, 출입 카드(계정과 권한)도 관리합니다.
    • 덕분에 가게들은 자기 장사(유용한 작업)에만 집중할 수 있습니다.
  • 운영체제마다 쓰임새에 따라 장점이 다릅니다. 예를 들어 Windows는 개인용 PC, Linux는 서버, 임베디드 OS는 작은 기기에 잘 맞습니다.

아래 그림처럼 사용자의 요청은 응용 프로그램과 운영체제를 차례로 거쳐 하드웨어에 닿고, 결과도 같은 길을 거꾸로 돌아옵니다.

사용자, 응용 프로그램, 운영체제, 하드웨어가 위에서 아래로 쌓인 계층 구조

그림 출처: Wikimedia Commons (Golftheman, CC BY-SA 3.0)

text
┌──────────────────────────────────────┐
│   사용자                              │
├──────────────────────────────────────┤
│   응용 프로그램 (브라우저, 메모장 ...) │
├──────────────────────────────────────┤
│   운영체제 (커널 + 디바이스 드라이버)   │ ← 자원 관리, 보호, 중간 다리
├──────────────────────────────────────┤
│   하드웨어 (CPU, 메모리, 디스크, 장치)  │
└──────────────────────────────────────┘

운영체제의 핵심 부분을 커널(kernel) 이라고 합니다. 커널은 늘 메모리에 올라가 있으면서 다른 모든 부분에 기본 서비스를 제공합니다. 응용 프로그램이 커널에게 일을 부탁하는 창구가 시스템 콜입니다.

운영체제가 맡는 일 ​

역할하는 일
프로세스 관리프로세스와 스레드, CPU 스케줄링, 동기화, IPC(프로세스 간 통신)
저장장치 관리메모리 관리, 가상 메모리, 파일 시스템
네트워킹TCP/IP와 그 밖의 네트워크 프로토콜 지원
사용자 관리계정 관리, 접근 권한 관리
디바이스 드라이버순차 접근 장치, 임의 접근 장치, 네트워크 장치 관리

아래에서 하나씩 자세히 살펴보겠습니다.

1. 프로세스 관리 ​

운영체제 위에서 돌아가는 응용 프로그램(프로세스)을 관리하는 기능입니다. 어떤 의미로는 CPU를 관리하는 일이라고 볼 수도 있습니다.

  • 지금 CPU를 쓸 프로세스를 고르고(스케줄링), 실제로 CPU를 그 프로세스에 넘겨줍니다.
  • 여러 프로세스가 공유 자원에 동시에 접근하지 않도록 조율하고(동기화), 프로세스끼리 데이터를 주고받게 해 줍니다(IPC).

관련 글:

2. 저장장치 관리 ​

1차 저장장치인 메인 메모리(RAM) 와, 2차 저장장치인 하드디스크(HDD), SSD 같은 NAND 플래시 메모리를 관리하는 기능입니다.

1차 저장장치 (메인 메모리) ​

  • 프로세스에게 메모리 영역을 나눠 주고(할당), 다 쓰면 돌려받습니다(해제).
  • 한 프로세스가 다른 프로세스의 메모리 영역을 침범하지 못하게 막습니다.
  • 실제 메모리보다 큰 프로그램도 돌릴 수 있도록 가상 메모리 기능을 제공해 메인 메모리를 효율적으로 씁니다.

관련 글: 메모리 구조, 메모리 관리, 페이지 교체 알고리즘

2차 저장장치 (HDD, SSD 등) ​

  • 데이터를 파일 형식으로 저장합니다.
  • 이 파일들을 정리하고 찾는 방법인 파일 시스템을 운영체제가 관리합니다.
  • FAT, NTFS, EXT2(지금은 EXT4가 흔함), JFS, XFS, APFS(macOS) 등 많은 파일 시스템이 쓰이고 있습니다.

관련 글: 파일 시스템

3. 네트워킹 ​

요즘 컴퓨터는 네트워크 없이는 쓰기 어렵습니다. TCP/IP 기반의 인터넷에 연결하거나 응용 프로그램이 네트워크를 쓰려면, 운영체제가 네트워크 프로토콜을 지원해야 합니다. 지금의 상용 운영체제는 아주 다양한 네트워크 프로토콜을 지원합니다.

응용 프로그램은 네트워크 카드를 직접 다루지 않고, 운영체제가 제공하는 소켓 같은 기능을 통해 통신합니다. 이처럼 운영체제는 사용자와 하드웨어 사이에서 하드웨어를 운영·관리하고, 응용 프로그램과 하드웨어를 소프트웨어적으로 제어합니다.

4. 사용자 관리 ​

PC 한 대를 꼭 한 사람만 쓰는 것은 아닙니다. 가족이 각자 계정을 만들어 같은 컴퓨터를 쓰는 것처럼, 하나의 컴퓨터를 여러 사람이 함께 쓰는 경우가 많습니다.

  • 그래서 운영체제는 계정을 관리하는 기능이 필요합니다.
  • 프라이버시와 보안을 위해, 내 개인 파일에는 다른 사용자가 접근하지 못하게 막아야 합니다.
  • 파일이나 시스템 자원마다 누가 무엇을 할 수 있는지(접근 권한) 를 지정할 수 있게 해 줍니다.

관련 글: 사용자와 그룹, 파일 시스템과 권한

5. 디바이스 드라이버 ​

컴퓨터에는 키보드, 디스크, 그래픽카드, 네트워크 카드처럼 여러 하드웨어가 붙어 있습니다. 운영체제는 이 장치들을 인식하고 관리해서, 응용 프로그램이 하드웨어를 쓸 수 있게 해야 합니다.

  • 그래서 운영체제 안에는 하드웨어를 추상화해 주는 계층이 필요합니다. 이 계층을 디바이스 드라이버라고 부릅니다.
  • 비유: 디바이스 드라이버는 장치마다 따로 있는 통역사입니다. 프린터 회사마다 말투(제어 방식)가 달라도, 운영체제는 "인쇄해"라는 같은 말만 하면 통역사가 각 프린터의 말로 바꿔 전달합니다.
  • 하드웨어 종류가 많은 만큼 디바이스 드라이버도 많고, 이 드라이버들을 관리하는 일도 운영체제가 맡습니다.
장치 종류특징예
순차 접근 장치데이터를 앞에서부터 차례대로 읽고 씀키보드, 직렬 포트, 테이프
임의 접근 장치원하는 위치로 바로 가서 읽고 씀HDD, SSD
네트워크 장치네트워크로 데이터를 주고받음이더넷, Wi-Fi 카드

장치가 "일이 끝났어요"라고 CPU에 알리는 방법은 인터럽트 글에서 다룹니다.

정리 ​

개념비전공자 버전 요약
운영체제하드웨어와 프로그램 사이에서 자원을 나눠 주고 지켜 주는 관리사무소
커널운영체제의 핵심. 늘 메모리에 상주하며 기본 서비스를 제공
프로세스 관리누가 언제 CPU를 쓸지 정하고, 프로세스끼리 충돌 없이 협력하게 함
저장장치 관리메모리를 나눠 주고 보호하며, 디스크의 파일을 정리
네트워킹프로그램이 인터넷을 쓸 수 있게 프로토콜을 지원
사용자 관리계정과 권한으로 내 파일을 남이 못 보게 보호
디바이스 드라이버장치마다 다른 말투를 운영체제의 공통 언어로 바꿔 주는 통역사

참고: 이만우, 『도전 임베디드 OS 만들기』(인사이트) · 운영체제란 무엇인가?