운영체제(OS)란 무엇인가 (커널, 프로세스, 파일시스템)
솔직히 저는 컴퓨터를 10년 넘게 쓰면서도 운영체제가 정확히 무엇인지 몰랐습니다. 그냥 '윈도우'가 컴퓨터 그 자체인 줄 알았으니까요. 운영체제(OS, Operating System)란 하드웨어와 사용자 사이를 연결해주는 핵심 소프트웨어입니다. 쉽게 말해 컴퓨터라는 기계가 사람의 명령을 이해하고 실행할 수 있도록 중간에서 통역해주는 존재입니다. 이걸 제대로 이해하고 나서야 왜 맥북에서 윈도우 프로그램이 안 돌아가는지, 왜 스마트폰에는 안드로이드가 따로 있는지 비로소 납득이 됐습니다.
커널: 운영체제의 심장부
2019년 가을, 저는 처음으로 리눅스(Linux)를 노트북에 설치해보려다 완전히 멘붕에 빠진 적이 있습니다. 설치 도중 "커널 패닉(Kernel Panic)"이라는 오류 메시지가 화면을 가득 채웠고, 저는 그게 무슨 말인지 몰라 한 시간 넘게 검색만 했습니다. 그때 처음으로 커널이라는 개념을 제대로 들여다보게 됐습니다.
커널(Kernel)이란 운영체제의 핵심 구성 요소로, 하드웨어 자원을 직접 제어하고 관리하는 프로그램입니다. 컴퓨터를 켰을 때 가장 먼저 메모리에 올라오는 코드이기도 합니다. CPU, 메모리, 저장 장치 같은 물리적 자원을 어떤 프로그램이 얼마나 사용할지 결정하는 것이 바로 커널의 역할입니다. 집에 비유하자면 커널은 전기, 수도, 가스를 관리하는 관리사무소 같은 존재입니다.
커널의 방식은 크게 두 가지로 나뉩니다. 모놀리식 커널(Monolithic Kernel)은 모든 기능을 하나의 큰 덩어리로 처리하는 방식으로, 속도가 빠르지만 한 부분에서 오류가 나면 전체에 영향을 줍니다. 반면 마이크로 커널(Micro Kernel)은 핵심 기능만 남기고 나머지를 분리해 안정성을 높입니다. 리눅스는 모놀리식 커널을, macOS는 하이브리드 방식을 채택하고 있습니다. 직접 겪어보니, 커널 구조를 이해하고 나서야 왜 운영체제마다 성격이 다른지 실감할 수 있었습니다.
프로세스: 컴퓨터가 일을 처리하는 방식
직장 다니던 시절, 오래된 회사 컴퓨터가 자꾸 멈추는 바람에 IT 담당자를 불렀습니다. 그분이 작업 관리자를 열어 프로세스 탭을 보여주며 "이 프로세스들이 메모리를 다 잡아먹고 있어요"라고 했을 때, 저는 프로세스가 뭔지도 모른 채 그냥 고개만 끄덕였습니다. 그게 부끄러워서 그날 저녁 혼자 공부했던 기억이 납니다.
프로세스(Process)란 현재 실행 중인 프로그램의 인스턴스를 뜻합니다. 즉, 저장 장치에 저장된 프로그램 파일이 메모리에 올라와 실제로 작동하고 있는 상태를 말합니다. 크롬 브라우저를 두 개 열면 프로세스도 두 개가 생기는 이유가 여기 있습니다. 운영체제는 이 수많은 프로세스가 서로 충돌하지 않도록 시간을 쪼개어 CPU를 번갈아 사용하게 합니다. 이를 멀티태스킹(Multi-tasking)이라고 합니다.
운영체제가 프로세스를 관리할 때 핵심적으로 다루는 요소들이 있습니다.
- CPU 스케줄링(CPU Scheduling): 어떤 프로세스에게 CPU 사용 순서를 줄지 결정합니다. 이 순서를 잘못 정하면 특정 프로그램만 느려지거나 시스템 전체가 멈춥니다.
- 메모리 할당(Memory Allocation): 각 프로세스가 사용할 수 있는 메모리 공간을 지정하고, 다른 프로세스의 영역을 침범하지 못하도록 보호합니다.
- 프로세스 간 통신(IPC, Inter-Process Communication): 서로 다른 프로세스가 데이터를 주고받을 수 있도록 통로를 제공합니다. 예를 들어 메모장에서 복사한 내용을 엑셀에 붙여넣을 때 이 기능이 작동합니다.
- 프로세스 종료 및 정리: 프로그램이 비정상 종료되었을 때 사용하던 자원을 회수하여 시스템이 낭비 없이 운영되도록 합니다.
저는 이 구조를 이해하고 나서 "왜 프로그램 하나가 다운됐는데 컴퓨터 전체가 느려지는가"라는 오랜 의문이 해소됐습니다. 운영체제가 자원을 제대로 회수하지 못하면, 그 여파가 다른 프로세스에까지 미치기 때문입니다. StatCounter의 2024년 운영체제 점유율 조사에 따르면(출처: StatCounter), 데스크톱 기준 윈도우가 약 72%, macOS가 약 15%, 리눅스가 약 4%를 차지하고 있습니다. 각 운영체제가 프로세스를 관리하는 방식의 차이가 이 점유율에도 일정 부분 영향을 미친다고 저는 생각합니다.
파일시스템: 데이터를 정리하는 규칙
몇 년 전, USB 드라이브를 포맷하다가 "FAT32로 포맷할까요, exFAT로 포맷할까요?"라는 창을 보고 아무 생각 없이 FAT32를 눌렀습니다. 결과는 4GB가 넘는 영상 파일이 저장이 안 되는 낭패였습니다. 그때 느낀 건, 파일시스템이 단순한 '정리 방법'이 아니라 실제 사용에 직접적인 영향을 준다는 것이었습니다.
파일시스템(File System)이란 저장 장치에 데이터를 어떤 방식으로 기록하고 읽을지 정해놓은 규칙 체계를 뜻합니다. 도서관에 비유하면, 책을 어떤 기준으로 분류하고 어느 서가에 꽂을지 정해놓은 규정집과 같습니다. 운영체제마다 기본으로 사용하는 파일시스템이 다릅니다. 윈도우는 NTFS(NT File System), macOS는 APFS(Apple File System), 리눅스는 ext4를 주로 씁니다.
파일시스템이 다르면 같은 저장 장치도 다른 운영체제에서 제대로 인식되지 않을 수 있습니다. 제가 겪었던 USB 문제가 바로 이 경우였습니다. FAT32는 단일 파일의 최대 크기가 4GB로 제한되는 오래된 규격입니다. 반면 exFAT는 이 제한을 없애면서 윈도우와 macOS 모두에서 읽고 쓸 수 있도록 설계된 파일시스템입니다. 이런 차이를 미리 알았더라면 한 시간을 헛되이 낭비하지 않았을 텐데, 하는 아쉬움이 지금도 남습니다.
파일시스템에는 또 하나 중요한 개념이 있습니다. 저널링(Journaling)이란 파일을 쓰거나 수정하기 전에 먼저 '기록 예고'를 남겨두는 방식입니다. 전원이 갑자기 꺼지거나 오류가 발생했을 때, 이 기록을 바탕으로 데이터를 복구할 수 있습니다. NTFS와 ext4 모두 저널링을 지원하기 때문에 현대 운영체제에서 어느 정도의 데이터 보호가 기본적으로 작동하고 있습니다. 컴퓨터가 갑자기 꺼졌는데도 작업 파일이 살아있었던 경험이 한 번쯤 있다면, 바로 저널링 덕분일 가능성이 높습니다.
운영체제를 이해하고 나서 저는 컴퓨터를 대하는 태도가 달라졌습니다. 그냥 아이콘을 클릭하는 사용자에서, 지금 이 화면 뒤에서 무슨 일이 벌어지고 있는지 조금은 아는 사람이 된 것 같아서 기분이 좋았습니다. 커널이 자원을 중재하고, 프로세스가 순서에 따라 실행되고, 파일시스템이 데이터를 체계적으로 보관하는 이 구조는 어떤 기기든 공통적으로 작동합니다. 스마트폰을 쓸 때도, 새 노트북을 살 때도 이 기본 개념을 알고 있으면 선택과 판단이 훨씬 쉬워집니다. 운영체제는 어렵고 먼 이야기가 아니라, 우리가 매일 손으로 만지는 기계의 언어입니다.
--- 참고: - https://gs.statcounter.com (StatCounter 운영체제 점유율 통계) - https://www.kernel.org (Linux Kernel 공식 사이트)
댓글
댓글 쓰기