본문 바로가기

운영체제(OS)가 하는 일: 부팅부터 프로그램 관리까지 전체 흐름 정리

📑 목차

    운영체제(OS)는 왜 꼭 필요한가

    컴퓨터를 켜면 전원 버튼만 눌렀을 뿐인데, 어느새 바탕화면이 나타나고 마우스를 움직여 프로그램을 실행할 수 있게 된다. 스마트폰도 마찬가지로, 전원을 켜면 잠금 화면이 나오고, 곧바로 앱을 실행할 수 있다. 이 모든 과정의 중심에는 운영체제(OS)가 있다.

    겉으로 보기에는 윈도우, macOS, 안드로이드, iOS 같은 이름만 보이지만, 실제로 운영체제는 부팅 과정에서부터 프로그램 관리, 메모리 관리, 파일 관리, 장치 제어, 보안까지 거의 모든 일을 맡고 있다. 하드웨어만 있고 운영체제가 없다면, 사용자는 컴퓨터와 거의 소통할 수 없다.

    이 글의 목적은 컴퓨터를 잘 모르는 일반 성인도 운영체제(OS)가 하는 일을 전체 흐름으로 이해할 수 있도록 돕는 것이다. 특히 다음과 같은 핵심 키워드를 중심으로 설명한다.

    • 운영체제(OS)
    • 부팅 과정
    • 프로세스 관리
    • 메모리 관리
    • 파일과 장치 관리

    먼저 운영체제가 무엇인지와 기본 구조를 살펴보고, 이어서 실제로 전원을 켰을 때부터 프로그램을 실행하고 종료하기까지 운영체제가 어떤 순서로 일을 처리하는지를 정리한다. 이 흐름을 이해하면 컴퓨터가 느려질 때 원인을 짐작하고, 불필요한 오해 없이 문제를 해결하는 데에도 도움이 된다.


    운영체제(OS)의 개념과 기본 구조

    1. 운영체제(OS)의 역할: 사람과 하드웨어 사이의 통역자

    운영체제(OS, Operating System)는 한 문장으로 정리하면 “사용자와 하드웨어 사이에서 모든 자원을 관리하고, 프로그램이 실행되도록 중개하는 기본 소프트웨어”이다.

    컴퓨터 안에는 CPU, 메인 메모리(RAM), SSD나 HDD, 그래픽 카드, 키보드, 마우스, 모니터, 네트워크 카드처럼 다양한 부품이 있다. 각 부품은 전기 신호와 매우 복잡한 규격으로 동작한다. 사용자가 직접 이 신호를 제어하는 것은 거의 불가능하다.

    운영체제는 이 복잡한 하드웨어를 다음과 같이 정리한다.

    • “파일”, “폴더” 같은 개념으로 저장장치를 정리해 보여준다.
    • “프로세스”라는 단위로 실행 중인 프로그램을 관리한다.
    • “메모리 관리” 기능으로 각 프로그램에 사용할 RAM 공간을 나누어 배정한다.
    • “장치 드라이버”를 이용해 키보드, 마우스, 프린터, 네트워크 같은 입출력 장치를 통합된 방식으로 제어한다.

    사용자 입장에서 보면,

    • 아이콘을 클릭해 프로그램을 실행하고,
    • 파일 탐색기로 문서를 열어보고,
    • 인터넷 브라우저로 웹 페이지를 보는 일들이
      모두 자연스럽게 이루어지지만, 그 뒤에서 운영체제가 모든 자원을 적절히 배분하고 순서를 조정하고 있다.

    2. 커널(Kernel)과 사용자 환경

    운영체제 내부는 크게 커널(Kernel)과 사용자 환경(User Interface)으로 나눌 수 있다.

    1. 커널(Kernel)
      • 운영체제의 핵심 부분이다.
      • CPU, 메모리, 디스크, 장치 같은 하드웨어 자원을 직접 관리한다.
      • 프로세스 생성과 종료, 프로세스 간 전환, 메모리 할당과 해제, 파일 시스템 접근 등을 담당한다.
      • 일반 프로그램은 커널에 직접 손대지 않고, 운영체제에서 제공하는 함수(시스템 콜)를 통해 요청을 보낸다.
    2. 사용자 환경(User Interface)
      • 사용자가 직접 접하는 부분이다.
      • 윈도우 바탕화면, 아이콘, 시작 메뉴, 작업 표시줄, 설정 창 등이 여기에 해당한다.
      • 명령 프롬프트나 터미널 같은 명령줄 인터페이스(CLI)도 사용자 환경의 한 종류이다.

    사용자는 마우스를 클릭하거나 키보드로 입력할 뿐이지만,

    • 사용자 환경이 그 입력을 받아 적절한 요청으로 바꾸고,
    • 커널이 실제 하드웨어 동작을 수행한 뒤,
    • 다시 그 결과를 사용자 환경을 통해 화면에 보여준다.

    즉, 커널은 내부에서 조용히 일하는 관리자, 사용자 환경은 사람과 직접 마주하는 안내 창구라고 볼 수 있다.

     

    운영체제(OS)가 하는 일: 부팅부터 프로그램 관리까지 전체 흐름 정리
    사용자–운영체제–하드웨어 구조를 보여주는 운영체제 계층도

    3. 운영체제의 핵심 기능: 자원 관리의 네 가지 축

    운영체제는 다양한 기능을 제공하지만, 전산학에서 기본적으로 다음 네 가지 축으로 설명하는 경우가 많다.

    1. 프로세스 관리(Process Management)
      • 실행 중인 프로그램을 프로세스(Process)라는 단위로 관리한다.
      • 각 프로세스가 CPU를 얼마나 사용할지, 언제 전환할지 결정한다.
      • 여러 프로그램이 동시에 실행되는 것처럼 보이는 멀티태스킹은 운영체제의 프로세스 관리 덕분이다.
    2. 메모리 관리(Memory Management)
      • 각 프로세스가 사용할 메모리 영역을 나누어 배정하고, 서로 침범하지 않도록 보호한다.
      • 사용이 끝난 메모리를 회수해 다른 프로세스가 사용할 수 있게 한다.
      • 필요에 따라 가상 메모리, 페이지 교체 같은 기법을 사용해 실제 RAM 용량 이상의 메모리를 사용하는 것처럼 보이게 한다.
    3. 파일 시스템 관리(File System Management)
      • 저장장치(SSD, HDD)를 파일폴더(디렉터리) 구조로 조직한다.
      • 파일 생성, 삭제, 읽기, 쓰기, 권한 설정을 담당한다.
      • 사용자는 “C드라이브”, “내 문서”처럼 친숙한 이름으로 접근하지만, 실제로는 운영체제가 복잡한 주소를 대신 관리해 준다.
    4. 장치 관리(Device Management)
      • 키보드, 마우스, 모니터, 프린터, 네트워크 카드 등 각종 장치를 장치 드라이버(Device Driver)를 통해 관리한다.
      • 프로그램이 “프린터로 출력해 달라”고 요청하면, 운영체제가 그 요청을 적절한 형식으로 변환하여 프린터 장치에 전달한다.

    이 네 가지 축을 중심으로 운영체제가 하드웨어 자원을 관리하기 때문에, 사용자는 복잡한 내부 구조를 몰라도 컴퓨터를 비교적 직관적으로 사용할 수 있다.


    부팅부터 프로그램 관리까지 운영체제 전체 흐름

    1. 전원을 켜는 순간: 부팅 과정의 큰 흐름

    운영체제(OS)가 실제로 어떤 순서로 일을 시작하는지 이해하려면, 부팅 과정을 살펴보는 것이 좋다. 전원 버튼을 눌렀을 때의 흐름을 단순화하면 다음과 같다.

    1. 하드웨어 초기화
      • 메인보드에 있는 펌웨어(BIOS나 UEFI)가 CPU, 메모리, 그래픽 카드, 저장장치 등 기본 하드웨어를 점검한다.
      • 이 과정을 전통적으로 POST(Power-On Self Test)라고 부른다.
    2. 부트 로더(boot loader) 실행
      • 펌웨어는 운영체제가 설치된 저장장치의 특정 위치에서 부트 로더라는 작은 프로그램을 찾아 실행한다.
      • 부트 로더는 “어떤 운영체제를 어떤 옵션으로 시작할지”를 결정하고, 운영체제 커널을 메모리로 불러온다.
    3. 운영체제 커널 로드
      • 부트 로더가 운영체제의 핵심 부분인 커널을 메모리(RAM)에 올린다.
      • 커널이 실행되기 시작하면, 이제부터 시스템 전체를 운영체제가 통제한다.
    4. 기본 서비스와 드라이버 초기화
      • 커널은 CPU, 메모리, 파일 시스템, 장치 드라이버를 초기화한다.
      • 네트워크 서비스, 보안 서비스, 시스템 서비스 같은 기본 프로세스들을 실행한다.
    5. 사용자 환경 준비
      • 마지막으로 로그인 화면이나 바탕화면 같은 그래픽 사용자 인터페이스(GUI)가 실행된다.
      • 사용자가 계정을 선택하고 암호를 입력하면, 개인 설정이 적용된 작업 환경이 완성된다.

    이 과정 전체를 통틀어 부팅(booting)이라고 부른다. 사용자는 전원 버튼만 눌렀지만, 내부에서는 운영체제가 하드웨어 초기화 → 커널 로드 → 서비스 실행 → 사용자 환경 준비라는 순서를 밟고 있는 것이다.

     

    전원 버튼 클릭 후 하드웨어 초기화, 부트 로더 실행, 커널 로드, 서비스 초기화, 사용자 로그인, 프로그램 실행까지 운영체제가 처리하는 과정을 단계별로 정리한 다이어그램
    부팅부터 프로그램 실행까지 운영체제 작업 흐름 단계도

    2. 프로그램 실행: 프로세스와 메모리 관점에서의 흐름

    이제 부팅이 끝나고 바탕화면이 나타났다고 가정한다. 사용자가 웹 브라우저 아이콘을 클릭했을 때, 운영체제는 다음과 같은 순서로 일을 처리한다.

    1. 실행 파일 로드
      • 운영체제는 해당 프로그램의 실행 파일(.exe 등)을 저장장치에서 찾아 메모리(RAM)로 일부 가져온다.
    2. 프로세스 생성
      • 운영체제는 이 프로그램을 하나의 프로세스(Process)로 등록한다.
      • 프로세스마다 고유한 식별자(ID)와, 독립된 메모리 공간, 열려 있는 파일 목록, 사용 중인 자원 정보 등을 관리한다.
    3. 메모리 할당
      • 프로세스가 실행에 필요한 코드, 데이터, 스택, 힙 영역을 메모리 상에서 배정한다.
      • 다른 프로세스와 영역이 섞이지 않도록 보호 장치를 설정한다.
    4. CPU 스케줄링
      • 운영체제의 스케줄러(Scheduler)는 여러 프로세스 사이에서 CPU 사용 시간을 잘게 나누어 배정한다.
      • 매우 짧은 시간 단위로 번갈아 가며 실행되기 때문에, 사용자는 여러 프로그램이 동시에 돌아가는 것처럼 느낀다.
    5. 입출력과 이벤트 처리
      • 사용자가 마우스를 움직이거나 키보드를 입력하면, 운영체제가 해당 이벤트를 관련 프로세스에 전달한다.
      • 프로세스가 파일을 읽거나 네트워크에 접속해야 할 때는, 운영체제를 통해 요청을 보내고 결과를 되돌려 받는다.

    이처럼 운영체제는 “프로그램을 실행한다”는 단순한 요청을, 프로세스 생성·메모리 관리·CPU 스케줄링·입출력 관리로 세분화해 처리하고 있다.

    3. 멀티태스킹과 창 전환의 원리

    현대 운영체제는 대부분 멀티태스킹 운영체제이다. 사용자는 웹 브라우저, 음악 재생 프로그램, 메신저, 문서 편집기를 동시에 실행하고 창을 자유롭게 전환할 수 있다.

    운영체제는 이를 위해 다음과 같은 방식을 사용한다.

    • 각 실행 중인 프로그램을 개별 프로세스로 관리한다.
    • CPU 시간은 매우 짧은 단위(밀리초 수준)로 나누어 순서대로 프로세스에 배정한다.
    • 한 프로세스의 실행을 잠시 멈추고 다른 프로세스로 전환할 때, CPU 레지스터와 상태를 저장했다가 나중에 다시 복원한다.

    이 과정을 문맥 교환(Context Switch)이라고 부른다. 문맥 교환이 충분히 빠르게 일어나기 때문에, 사람의 눈에는 여러 프로그램이 동시에 실행되는 것처럼 보인다. 창을 전환할 때마다 운영체제가 어느 프로세스의 화면을 앞으로 보여줄지, 어느 프로세스에 입력을 전달할지를 조정한다.

    4. 운영체제 관점에서 보는 성능 문제와 간단한 해결 방법

    운영체제의 역할을 알고 나면, 컴퓨터가 느려졌을 때 어떤 관점에서 확인해야 하는지도 보인다. 대표적인 원인과 대응은 다음과 같다.

    1. 프로세스 과부하
      • 너무 많은 프로그램이 동시에 실행되고 있으면 CPU와 메모리가 부족해진다.
      • 작업 관리자(윈도우 기준)나 활동 모니터(macOS 기준)를 열어, CPU와 메모리를 많이 사용하는 프로세스를 찾고 불필요한 것은 종료하는 것이 도움이 된다.
    2. 메모리 부족과 가상 메모리 사용 증가
      • 실제 RAM이 부족하면, 운영체제는 디스크 공간 일부를 가상 메모리(페이지 파일)로 사용한다.
      • 이 경우 디스크 접근이 크게 늘어나 성능이 떨어질 수 있다.
      • 자주 쓰지 않는 프로그램을 닫거나, 물리 메모리(RAM)를 늘리는 것이 근본적인 해결책이다.
    3. 디스크 사용률 100%에 가까운 상태
      • 백그라운드에서 대용량 파일 복사, 백업, 업데이트 작업이 동시에 이루어지면 디스크가 병목이 될 수 있다.
      • 잠시 작업을 멈추거나, 자동 업데이트 시간을 조정하는 것으로 어느 정도 조절할 수 있다.
    4. 장치 드라이버 문제
      • 운영체제가 장치를 제대로 제어하지 못하면, 블루스크린, 강제 재부팅, 특정 장치 오작동 등이 발생할 수 있다.
      • 이 경우 관련 드라이버를 업데이트하거나 재설치하는 것이 일반적인 해결 방법이다.

    운영체제가 프로세스, 메모리, 파일, 장치를 관리한다는 점을 알고 있으면, 성능 문제를 만났을 때 “어느 자원에서 병목이 생겼는지”를 추적하는 데 큰 도움이 된다.


    운영체제를 이해하면 컴퓨터가 논리적으로 보인다

    이 글에서는 운영체제(OS)가 하는 일을 전반적인 흐름 속에서 살펴보았다. 핵심 내용을 정리하면 다음과 같다.

    1. 운영체제(OS)는 사용자와 하드웨어 사이에서 모든 자원을 관리하는 기본 소프트웨어이다.
      • 프로세스, 메모리, 파일, 장치를 관리하며,
      • 사람에게는 아이콘, 파일, 창, 앱 같은 친숙한 형태로 시스템을 보여준다.
    2. 운영체제는 커널과 사용자 환경으로 나뉜다.
      • 커널은 자원 관리와 보호를 담당하는 핵심 부분이고,
      • 사용자 환경은 바탕화면, 아이콘, 창 같은 인터페이스 역할을 한다.
    3. 부팅 과정에서 운영체제는 하드웨어 초기화부터 커널 로드, 서비스 실행, 사용자 환경 준비까지 전체 흐름을 통제한다.
      • 전원 버튼을 누른 뒤 바탕화면이 나타나기까지의 모든 단계가 운영체제의 준비 작업이다.
    4. 프로그램 실행과 멀티태스킹은 프로세스 관리와 메모리 관리, CPU 스케줄링을 통해 이루어진다.
      • 각 프로그램은 프로세스 단위로 관리되고,
      • 운영체제가 CPU 시간을 잘게 나누어 배정하기 때문에 여러 프로그램이 동시에 실행되는 것처럼 보인다.
    5. 성능 문제와 오류를 이해하는 데에도 운영체제 지식이 도움이 된다.
      • CPU 과부하, 메모리 부족, 디스크 병목, 드라이버 문제 등을 운영체제 관점에서 바라보면,
      • 단순히 “컴퓨터가 느리다”가 아니라 “어느 자원이 부족한지”를 더 구체적으로 파악할 수 있다.

    운영체제는 겉으로 잘 드러나지 않지만, 부팅부터 프로그램 관리까지 컴퓨터의 모든 흐름을 조율하는 보이지 않는 관리자이다. 이 구조를 이해하면, 컴퓨터를 단순히 “느리다/빠르다”로만 보지 않고, 논리적인 시스템으로 바라볼 수 있게 된다.

    다음 단계에서 자연스럽게 이어질 수 있는 주제로는 예를 들어 다음과 같은 것들이 있다.

    • “프로세스와 스레드의 차이: 하나의 프로그램이 여러 일을 동시에 처리하는 방법”
    • “가상 메모리와 페이지 교체: 실제 메모리보다 더 큰 공간을 쓰는 운영체제의 기술”

    이런 주제를 차례로 살펴보면, 운영체제 내부에서 벌어지는 일을 더 깊이 이해하게 되고, 전산학 입문 지식의 중요한 축을 탄탄히 쌓을 수 있다.