
개요
운영체제(OS, Operating System)는 컴퓨터 시스템을 관리하고, 사용자와 하드웨어 간의 인터페이스 역할을 수행하는 소프트웨어입니다.
대표적으로 Windows, macOS, Linux, Android, iOS 등이 있습니다.
이처럼 운영체제의 종류는 다양하지만, 모든 운영체제가 제공하는 핵심 기능은 유사합니다.
이러한 핵심 기능을 수행하는 운영체제의 핵심 부분을 커널(Kernel)이라고 합니다.
운영체제의 역할
운영체제는 크게 두 가지 핵심 역할을 담당합니다.
- 프로세스 및 스레드 관리
- 자원 할당 및 관리
프로세스 및 스레드 관리
운영체제는 프로그램(프로세스)의 실행을 제어하고, 여러 개의 프로세스가 동시에 실행될 수 있도록 스케줄링합니다.
또한, 프로세스 내부에서 실행되는 스레드를 관리하여 효율적인 멀티태스킹 환경을 제공합니다.
자원 할당 및 관리
운영체제는 프로그램이 실행될 때 필요한 자원(resource)을 적절히 할당하고 관리합니다.
여기서 자원은 프로그램 실행에 필요한 요소를 의미하며, 데이터가 될 수도 있고, 하드웨어 부품이 될 수도 있습니다. 하드웨어 부품에는 CPU, 메모리, 보조기억장치 등이 있습니다.
시스템 콜과 이중 모드
운영체제 역시 하나의 프로그램이므로 실행되기 위해서는 반드시 메모리에 적재되어야 합니다.
하지만 운영체제는 일반적인 응용 프로그램과 달리 커널 영역(Kernel Space)에 적재되어 실행되며, 사용자 응용 프로그램은 사용자 영역(User Space)에 적재되어 실행됩니다.
크롬 브라우저나 발로란트 게임과 같은 응용 프로그램은 CPU나 메모리와 같은 하드웨어 자원에 직접 접근하거나 조작할 수 없습니다.
대신, 운영체제가 이러한 자원 접근을 대행합니다.
응용 프로그램이 특정 자원을 사용하려면 운영체제의 도움을 받아야 하며, 이를 위해 시스템 콜(System Call)을 호출합니다.
시스템 콜(System Call)
시스템 콜은 응용 프로그램이 운영체제의 서비스를 제공받기 위한 수단으로, 호출 가능한 함수의 형태를 가집니다.
응용 프로그램이 운영체제로부터 어떤 기능을 제공받고자 한다면 그 기능에 해당하는 시스템 콜을 호출해야 합니다.
운영체제는 프로세스 생성, 메모리 할당 등 다양한 기능을 제공하며, 응용 프로그램은 이 기능을 사용하기 위해 fork()
, sbrk(increment)
같은 시스템 콜을 호출합니다.
시스템 콜이 실행되는 과정
자원에 접근하는 입출력 명령어를 실행하면 소프트웨어 인터럽트(Software Interrupt)가 발생합니다.
시스템 콜이 이러한 소프트웨어 인터럽트의 일종입니다.
따라서, 시스템 콜이 실행되는 과정은 다음과 같습니다.
- 사용자 영역에서 실행되던 프로그램이 시스템 콜을 호출하면, 소프트웨어 인터럽트가 발생해 CPU는 현재 수행 중인 작업을 백업
- 커널 영역 내의 인터럽트를 처리하기 위한 코드(시스템 콜을 구성하는 코드)를 실행
- 다시 사용자 영역의 코드 실행을 재개
CPU는 명령어를 실행하는 과정에서 사용자 영역을 실행할 때의 모드와 커널 영역을 실행할 때의 모드를 구분하여 실행합니다.
이중 모드(Dual mode)
컴퓨터의 실행 모드는 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 나뉩니다.
사용자 모드는 사용자 영역(User Space)에 적재된 코드를 실행할 때 사용되며, 커널 모드는 커널 영역(Kernel Space)에 적재된 코드를 실행할 때 사용됩니다.
이렇게 두 가지 모드로 실행을 구분하는 것을 이중 모드(Dual Mode)라고 합니다.
사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드로, 커널 영역의 코드 실행이 불가능합니다.
따라서 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 자원에 접근하는 명령어를 만나도 이를 실행하지 않습니다.
이를 통해 응용 프로그램이 실수로라도 자원에 접근하는 것을 방지할 수 있습니다.
반면, 커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드로, CPU가 커널 모드로 명령어를 실행하면 자원 접근을 비롯한 모든 명령어를 실행할 수 있다.
참고
강민철. 『 이것이 취업을 위한 컴퓨터 과학이다 』
'운영체제' 카테고리의 다른 글
운영체제 파헤치기6 - 파일 시스템 (0) | 2025.02.25 |
---|---|
운영체제 파헤치기5 - 메모리 관리 (0) | 2025.02.23 |
운영체제 파헤치기4 - CPU 스케줄링 (0) | 2025.02.13 |
운영체제 파헤치기3 - 동기화와 교착 상태 (0) | 2025.02.11 |
운영체제 파헤치기2 - 프로세스와 스레드 (0) | 2025.02.08 |
느리더라도 단단하게 성장하고자 합니다!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!