운영체제란?
운영체제(Operating System, OS)는 컴퓨터를 실행하고 관리하는 핵심 소프트웨어로, 사용자가 컴퓨터를 효율적으로 사용할 수 있도록 돕습니다. 우리가 일반적으로 사용하는 프로그램들은 모두 운영체제의 제어 아래에서 실행되며, 운영체제는 이들 프로그램이 원활하게 동작할 수 있도록 관리합니다.
대표적인 운영체제로는 데스크탑 환경에서 사용되는 윈도우, macOS, 리눅스가 있으며, 모바일 환경에서는 안드로이드와 iOS가 있습니다. 운영체제는 다양한 기능을 제공하지만, 모든 운영체제가 공통적으로 수행하는 핵심 기능이 존재합니다. 이 핵심 기능을 담당하는 부분이 바로 커널입니다.
커널: 운영체제의 핵심
커널은 운영체제의 중심부로, 컴퓨터의 모든 주요 자원을 관리하고 제어하는 역할을 합니다. 커널은 운영체제의 심장과도 같아서, 사용자가 요청한 작업이 시스템의 하드웨어 자원과 어떻게 상호작용할지를 결정합니다.
운영체제의 2가지 핵심 기능
운영체제는 주로 두 가지 핵심 기능을 담당합니다:
- 자원 할당 및 관리
- 프로세스 및 스레드 관리
1. 자원 할당 및 관리
운영체제의 가장 중요한 기능 중 하나는 컴퓨터의 자원을 효율적으로 관리하고 할당하는 것입니다. 여기서 말하는 자원은 CPU, 메모리, 보조기억장치와 같은 하드웨어 부품들과 실행에 필요한 데이터와 같은 소프트웨어 입니다.. 운영체제는 이러한 자원들을 프로그램이 필요로 할 때 적절히 분배하고, 사용이 끝난 자원을 다시 회수합니다.
- CPU 스케줄링: 컴퓨터에는 여러 프로그램이 동시에 실행되지만, CPU는 한 번에 하나의 작업만 처리할 수 있습니다. 운영체제는 각 프로그램이 공정하게 CPU를 사용할 수 있도록 순서를 정하고, 각 작업의 실행 시간을 조절합니다.
- 가상 메모리: 운영체제는 실제 메모리보다 더 많은 메모리를 사용할 수 있게 하는 가상 메모리 기술을 사용합니다. 이를 통해 프로그램이 필요한 메모리를 제공받아 실행되며, 메모리 사용을 최적화해 낭비를 최소화합니다.
- 파일 시스템: 보조기억장치(예: 하드 디스크, SSD)에는 많은 양의 데이터가 저장됩니다. 운영체제는 이 데이터를 효율적으로 관리하기 위해 파일 시스템을 사용합니다. 파일 시스템은 데이터를 파일과 폴더 형태로 조직화하여, 사용자가 쉽게 접근하고 관리할 수 있게 합니다.
2. 프로세스 및 스레드 관리
프로세스는 실행 중인 프로그램을 의미하며, 스레드는 프로세스 내에서 실제 작업을 수행하는 최소 단위입니다. 운영체제는 메모리에 적재된 여러 프로세스를 관리하며, 각 프로세스가 필요한 자원을 적절하게 배분합니다.
멀티스레드 환경에서는 하나의 프로세스가 여러 스레드를 통해 동시에 여러 작업을 처리할 수 있습니다. 운영체제는 이러한 프로세스와 스레드가 충돌하지 않고 효율적으로 실행되도록 관리합니다.
시스템 콜과 이중 모드
운영체제도 하나의 프로그램으로, 메모리에 적재되어 실행됩니다. 그러나 일반 프로그램과는 달리, 운영체제는 커널 영역이라는 특별한 메모리 공간에 적재됩니다. 반면, 사용자 응용 프로그램은 사용자 영역에 적재됩니다.
운영체제의 기능을 사용하려면, 응용 프로그램이 커널 영역에 있는 운영체제 코드를 실행해야 합니다. 그러나 응용 프로그램은 CPU나 메모리와 같은 하드웨어 자원에 직접 접근할 수 없습니다. 이를 위해 응용 프로그램은 시스템 콜을 호출하여 운영체제에 필요한 작업을 요청합니다. 시스템 콜은 운영체제의 특정 기능을 호출하는 함수로, 이를 통해 응용 프로그램은 자원을 안전하게 사용할 수 있습니다.
소프트웨어 인터럽트와 이중 모드
시스템 콜은 소프트웨어 인터럽트의 일종입니다. 예를 들어, 입출력 작업과 같은 자원 접근 명령어가 실행될 때 소프트웨어 인터럽트가 발생합니다. CPU는 이때 커널 모드로 전환하여 운영체제 코드를 실행한 후, 다시 사용자 모드로 전환해 응용 프로그램의 실행을 재개합니다.
CPU는 두 가지 실행 모드, 즉 사용자 모드와 커널 모드를 구분해 작업을 처리합니다.
- 사용자 모드: 응용 프로그램이 실행되는 모드로, 이 모드에서는 운영체제의 자원에 직접 접근할 수 없습니다. 자원에 접근하려는 명령어가 실행되면, CPU는 이를 무시합니다.
- 커널 모드: 운영체제의 코드를 실행하는 모드로, CPU가 모든 자원에 접근할 수 있습니다. 이 모드에서는 운영체제가 시스템의 모든 자원과 명령어를 제어할 수 있습니다.
이 두 모드를 구분해 실행하는 방식을 이중 모드라 부릅니다. 이중 모드는 시스템의 안전성과 안정성을 보장하는 핵심 메커니즘입니다.
마무리
응용 프로그램은 실행 중에 자주 시스템 콜을 호출합니다. 이러한 시스템 콜 호출이 있을 때마다 CPU는 사용자 모드에서 커널 모드로 전환되어 운영체제의 기능을 수행하고, 다시 사용자 모드로 돌아옵니다. 이러한 과정은 시스템의 안전한 자원 관리와 사용자 응용 프로그램의 효율적인 실행을 보장합니다. 운영체제는 이와 같이 자원과 프로세스 관리를 통해 컴퓨터 시스템의 안정성과 성능을 유지하는 중요한 역할을 합니다.
'CS > 운영체제' 카테고리의 다른 글
[OS] 동기화 기법 뮤텍스 락, 세마포 (0) | 2024.10.12 |
---|---|
[OS] PCB, 문맥 교환(Context Switching) (0) | 2024.10.01 |
[OS] 프로그램의 메모리 구조: 코드, 데이터, 힙, 스택, BSS 영역 (1) | 2024.09.27 |
[OS] 시스템 콜, 이중 모드 (0) | 2024.09.26 |