운영체제, 자원 관리와 커널 동작 원리
컴퓨터를 켜면 가장 먼저 실행되는 소프트웨어가 운영체제(Operating System)이며, 우리가 일상적으로 사용하는 모든 응용 프로그램은 사실 운영체제가 만들어준 환경 위에서만 동작할 수 있다. 워드 프로세서가 파일을 저장할 때, 웹 브라우저가 네트워크에 접속할 때, 게임이 그래픽을 렌더링할 때, 그 모든 행위의 실제 실행 주체는 응용 프로그램이 아니라 운영체제이다. 운영체제는 단순히 컴퓨터를 부팅시키는 프로그램이 아니라, 하드웨어와 사용자 프로그램 사이의 중개자로서 시스템 전체의 자원을 관리하고 보호하는 가장 근본적인 소프트웨어이다. 정보처리기사 시험에서도 매회 출제되는 핵심 영역으로, 그 중심에는 자원 관리와 커널의 동작 원리라는 두 가지 주제가 자리 잡고 있다.

운영체제의 정의와 역할
운영체제는 사용자가 실행하는 응용 프로그램이 올바르게 동작하도록 돕고, 한정된 시스템 자원을 효율적으로 분배하는 시스템 소프트웨어이다. 사용자를 위한 프로그램이 아니라 사용자가 실행하는 프로그램을 위한 프로그램이라는 점이 가장 중요한 정의이다. 사용자는 운영체제와 직접 상호작용하는 일이 거의 없지만, 운영체제는 사용자 프로그램이 실행되는 모든 순간 배후에서 끊임없이 작동하면서 메모리를 할당하고, CPU 시간을 분배하며, 파일을 읽고 쓰고, 네트워크 패킷을 주고받는다. 이러한 역할 덕분에 응용 프로그램 개발자는 하드웨어의 복잡한 세부 사항을 일일이 알 필요 없이, 운영체제가 제공하는 추상화된 인터페이스만 사용해 프로그램을 개발할 수 있다.
운영체제의 가장 큰 가치는 추상화(Abstraction)와 자원 분배(Resource Allocation)에 있다. 추상화는 복잡한 하드웨어를 단순한 인터페이스로 감싸 사용자에게 제공하는 작업을 의미한다. 예를 들어 프로그래머는 디스크의 트랙과 섹터를 직접 조작할 필요 없이 파일이라는 추상적 개념을 통해 데이터를 다루며, CPU의 레지스터와 캐시를 직접 관리할 필요 없이 프로세스라는 단위로 작업을 표현할 수 있다. 자원 분배는 한정된 CPU·메모리·디스크·네트워크 같은 자원을 여러 프로그램이 공정하고 효율적으로 나누어 쓸 수 있도록 조율하는 작업이다. 이 두 가지 역할이 잘 작동하기 때문에 한 대의 컴퓨터에서 수십 개의 프로그램이 동시에 매끄럽게 실행될 수 있다.
운영체제는 그 사용 방식에 따라 다양한 종류로 분류된다. 시분할 시스템(Time-sharing System)은 여러 사용자가 한 컴퓨터를 동시에 사용할 수 있도록 CPU 시간을 잘게 쪼개어 분배하는 방식이며, 일반적인 데스크톱과 서버 운영체제가 여기에 속한다. 실시간 시스템(Real-time System)은 정해진 시간 안에 반드시 응답해야 하는 환경에 사용되며, 항공기 제어 시스템이나 의료기기 운영체제가 대표적이다. 분산 시스템(Distributed System)은 여러 대의 컴퓨터를 네트워크로 연결해 하나의 시스템처럼 동작시키는 방식으로, 클라우드 컴퓨팅과 분산 데이터베이스의 기반이 된다. 어떤 분류에 속하든 운영체제는 자원 관리라는 본질적 역할을 공통적으로 수행한다.
운영체제의 5대 자원 관리 기능
운영체제가 관리하는 시스템 자원은 일반적으로 다섯 가지로 정리된다. 프로세스 관리, 메모리 관리, 파일 관리, 입출력 관리, 그리고 보호 및 보안이 그것이다. 이 다섯 영역은 모두 한정된 자원을 여러 프로그램과 사용자에게 어떻게 효율적이고 공정하게 분배할 것인가에 대한 답이며, 정보처리기사 시험에서도 가장 자주 묻는 영역이다.
프로세스 관리는 실행 중인 프로그램의 단위인 프로세스를 생성·실행·종료시키고, CPU 시간을 할당하는 작업이다. 한 컴퓨터에서 수십 개의 프로세스가 동시에 실행되는 것처럼 보이는 이유는, 운영체제가 매우 짧은 시간 단위로 CPU를 여러 프로세스에 번갈아 할당하기 때문이다. 어떤 프로세스에 얼마만큼의 시간을 줄 것인가를 결정하는 알고리즘을 CPU 스케줄링이라고 부르며, FCFS·SJF·라운드 로빈 같은 다양한 전략이 존재한다. 프로세스 사이의 통신과 동기화 또한 이 영역에서 다루어진다. 메모리 관리는 한정된 RAM 공간을 여러 프로세스가 안전하게 공유할 수 있도록 분배하는 작업이다. 가상 메모리(Virtual Memory)와 페이징(Paging) 기법을 통해 각 프로세스에 독립적인 주소 공간을 제공하며, 실제 물리 메모리보다 큰 가상 공간을 사용할 수 있게 만든다.
파일 관리는 디스크에 저장되는 데이터를 파일과 디렉터리라는 추상적 단위로 조직화하는 작업이다. 사용자는 디스크의 물리적 구조를 알 필요 없이 파일 이름과 경로만으로 데이터를 다룰 수 있으며, 운영체제는 그 뒤에서 블록 할당, 디렉터리 관리, 접근 권한 검사 같은 작업을 수행한다. 입출력 관리는 키보드·마우스·디스크·네트워크 카드 같은 다양한 입출력 장치와의 데이터 전송을 관리하는 작업이다. 디바이스 드라이버를 통해 하드웨어 차이를 추상화하고, 인터럽트와 DMA(Direct Memory Access) 같은 기법을 통해 CPU의 부담을 줄인다. 마지막으로 보호 및 보안은 한 프로세스가 다른 프로세스의 영역을 침범하지 못하게 하고, 인증되지 않은 사용자가 시스템에 접근하지 못하도록 막는 작업이다. 이 다섯 영역이 유기적으로 결합되어야 비로소 안정적이고 신뢰할 수 있는 컴퓨팅 환경이 만들어진다.
커널과 사용자 모드, 시스템 콜의 동작
운영체제의 핵심부, 즉 자원 관리의 실제 작업을 수행하는 부분을 커널(Kernel)이라고 부른다. 커널은 컴퓨터가 부팅되는 순간 메모리에 적재되어 종료될 때까지 끊임없이 동작하는 가장 특권적인 소프트웨어로, 모든 하드웨어 자원에 직접 접근할 수 있는 유일한 주체이다. 커널의 설계 방식은 크게 세 가지로 나뉜다. 모놀리식 커널(Monolithic Kernel)은 입출력·파일 시스템·네트워크·장치 드라이버 같은 모든 운영체제 기능을 하나의 거대한 커널 공간에 통합해 적재하는 방식으로, 리눅스와 유닉스 계열이 대표적이다. 성능이 우수하지만 한 부분의 결함이 시스템 전체에 영향을 미칠 수 있다는 단점이 있다.
마이크로커널(Microkernel)은 커널의 기능을 최소한으로 제한하고, 파일 시스템·드라이버·네트워크 같은 추가 기능을 사용자 공간의 별도 프로세스로 분리하는 방식이다. 안정성과 보안성이 뛰어나며 한 모듈에 결함이 생겨도 시스템 전체에 영향이 가지 않는다는 장점이 있지만, 모듈 간 통신 비용으로 인해 성능이 다소 떨어진다. QNX와 마하(Mach) 커널이 대표적이다. 하이브리드 커널(Hybrid Kernel)은 두 방식의 장점을 결합한 형태로, 성능이 중요한 부분은 커널 공간에 두고 나머지는 사용자 공간에 배치한다. 윈도우 NT 계열과 macOS의 XNU 커널이 이 방식을 채택하고 있으며, 현대 데스크톱 운영체제의 주류로 자리 잡고 있다.
커널과 사용자 프로그램을 안전하게 분리하기 위해 운영체제는 이중 모드(Dual Mode)라는 보호 메커니즘을 사용한다. CPU는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)라는 두 가지 실행 모드를 지원하며, 두 모드 사이에는 권한의 명백한 차이가 존재한다. 커널 모드는 모든 메모리에 접근할 수 있고 모든 CPU 명령을 실행할 수 있는 최고 권한 상태로, 운영체제 코드만 이 모드에서 실행된다. 반면 사용자 모드는 일반 응용 프로그램이 실행되는 제한된 권한 상태로, 하드웨어에 직접 접근하거나 다른 프로세스의 메모리를 침범할 수 없다. 이러한 분리 덕분에 잘못 작성된 응용 프로그램이 시스템 전체를 망가뜨리는 일이 원천적으로 차단된다.
응용 프로그램이 파일을 읽거나 화면에 출력하는 것 같은 운영체제의 기능을 사용해야 할 때 사용하는 인터페이스가 시스템 콜(System Call)이다. 시스템 콜이 호출되면 CPU는 사용자 모드에서 커널 모드로 전환되어 운영체제가 요청을 수행하고, 작업이 끝나면 다시 사용자 모드로 복귀한다. 이러한 모드 전환은 문맥 교환(Context Switch)에 비용이 들기 때문에, 성능에 민감한 프로그램은 시스템 콜의 호출 횟수를 줄이기 위한 다양한 최적화 기법을 활용한다. 우리가 작성하는 모든 프로그램은 결국 어떤 형태로든 시스템 콜을 호출하면서 운영체제의 도움을 받고 있으며, 이중 모드와 시스템 콜은 현대 컴퓨팅 환경의 안전성과 효율성을 동시에 보장하는 가장 핵심적인 설계 원칙이라 할 수 있다.
메타 디스크립션: 운영체제의 정의와 5대 자원 관리(프로세스·메모리·파일·입출력·보호), 그리고 커널 종류와 이중 모드·시스템 콜의 동작 원리를 정보처리기사 출제 기준에 맞춰 정리합니다.