3.1.1 Roles and Structure of Operating Systems
운영체제의 역할과 구조
1. 운영체제의 역할
운영체제의 역할은 크게 네 가지가 있습니다.
1.1 CPU 스케줄링과 프로세스 관리
운영체제는 CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합니다. CPU 스케줄링을 통해 여러 프로세스가 CPU를 효율적으로 사용할 수 있도록 하며, 각 프로세스는 자신에게 할당된 시간 동안 작업을 수행합니다. 주요 CPU 스케줄링 알고리즘으로는 라운드 로빈(Round Robin), 선점형 우선순위(Preemptive Priority), 멀티 레벨 큐(Multi-Level Queue) 등이 있습니다.
라운드 로빈: 프로세스들에 순서대로 CPU 시간을 할당하는 방식으로, 각 프로세스는 할당된 시간 동안 작업을 수행하고, 시간이 끝나면 다음 프로세스로 넘어갑니다. 이는 공평성을 보장하고, 대기 시간을 최소화합니다.
선점형 우선순위: 각 프로세스에 우선순위를 부여하여 높은 우선순위의 프로세스가 먼저 CPU를 사용하도록 하는 방식입니다. 낮은 우선순위의 프로세스는 높은 우선순위의 프로세스가 끝날 때까지 대기해야 합니다.
멀티 레벨 큐: 프로세스들을 여러 개의 큐로 나누고, 각 큐에 우선순위를 부여하여 스케줄링하는 방식입니다. 예를 들어, 실시간 프로세스는 높은 우선순위 큐에, 백그라운드 작업은 낮은 우선순위 큐에 배치될 수 있습니다.
1.2 메모리 관리
운영체제는 한정된 메모리를 어떤 프로세스에 얼마만큼 할당해야 하는지 관리합니다. 메모리 관리는 프로그램이 실행될 때 필요한 데이터를 효율적으로 저장하고, 사용이 끝난 메모리를 회수하여 다른 프로그램이 사용할 수 있도록 합니다. 주요 메모리 관리 기법으로는 페이징(Paging), 세그멘테이션(Segmentation), 가상 메모리(Virtual Memory) 등이 있습니다.
페이징: 메모리를 고정된 크기의 블록으로 나누어 관리하는 기법입니다. 프로그램이 필요로 하는 메모리 공간을 페이지 단위로 나누어 물리적 메모리에 할당합니다. 이는 외부 단편화 문제를 해결할 수 있습니다.
세그멘테이션: 메모리를 가변 크기의 블록으로 나누어 관리하는 기법입니다. 각 세그먼트는 논리적으로 관련된 데이터를 포함하며, 세그먼트 단위로 메모리에 할당됩니다. 이는 내부 단편화 문제를 해결할 수 있습니다.
가상 메모리: 실제 물리적 메모리보다 큰 메모리 공간을 사용하는 것처럼 보이게 하는 기법입니다. 프로그램이 필요로 하는 메모리 페이지를 물리적 메모리와 디스크 사이에서 교환하며, 필요한 페이지만 메모리에 로드합니다. 이는 메모리 사용의 효율성을 높입니다.
1.3 디스크 파일 관리
운영체제는 디스크 파일을 어떤 방법으로 보관할지 관리합니다. 이는 파일 시스템을 통해 데이터를 효율적으로 저장하고 검색할 수 있도록 합니다. 파일 시스템은 데이터의 구조와 접근 방식을 정의하며, 대표적인 파일 시스템으로는 FAT, NTFS, ext4 등이 있습니다. 파일 시스템 관리는 파일의 생성, 삭제, 읽기, 쓰기 등을 포함합니다.
FAT(File Allocation Table): 파일 할당 테이블을 사용하여 파일의 위치를 추적하는 간단한 파일 시스템입니다. FAT16, FAT32, exFAT 등의 변형이 있습니다.
NTFS(New Technology File System): 고급 파일 시스템으로, 파일 압축, 암호화, 접근 제어 목록(ACL) 등의 기능을 제공합니다. 이는 Windows 운영체제에서 주로 사용됩니다.
ext4(Extended File System): Linux 운영체제에서 주로 사용되는 파일 시스템으로, 저널링, 대용량 파일 지원, 빠른 파일 시스템 검사 등의 기능을 제공합니다.
1.4 I/O 디바이스 관리
운영체제는 I/O 디바이스인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리합니다. 이를 통해 사용자가 입력한 데이터를 프로그램이 처리하고, 프로그램의 결과를 출력하는 과정이 원활하게 이루어집니다. I/O 관리에는 인터럽트(Interrupt) 처리, 장치 드라이버(Device Driver) 관리 등이 포함됩니다.
인터럽트 처리: I/O 디바이스가 데이터 전송을 완료하거나 오류가 발생했을 때, CPU에 인터럽트를 발생시켜 처리를 요청합니다. 운영체제는 인터럽트를 받아 해당 디바이스의 요청을 처리합니다.
장치 드라이버: 하드웨어 디바이스와 운영체제 간의 인터페이스를 제공하는 소프트웨어 모듈입니다. 각 디바이스에 맞는 드라이버가 필요하며, 드라이버는 디바이스의 특성에 맞춰 데이터를 송수신합니다.
2. 운영체제의 구조
운영체제의 구조는 다음과 같습니다.
2.1 커널(Kernel)
커널은 운영체제의 핵심 부분으로, 하드웨어 자원을 직접 관리합니다. 커널은 CPU, 메모리, 디스크, 네트워크 등의 자원을 관리하고, 프로세스 간의 통신을 조정합니다. 커널은 시스템 호출 인터페이스(System Call Interface)를 통해 유저 프로그램과 상호작용합니다.
모노리틱 커널(Monolithic Kernel): 모든 운영체제 서비스를 커널 내에서 실행하는 구조입니다. 커널은 큰 단일 블록으로 구성되며, 높은 성능을 제공하지만, 안정성과 유지보수가 어려울 수 있습니다.
마이크로커널(Microkernel): 최소한의 기능만을 커널에 포함시키고, 나머지 서비스는 사용자 모드에서 실행하는 구조입니다. 커널의 크기를 줄여 안정성과 보안성을 높일 수 있지만, 성능 저하가 발생할 수 있습니다.
2.2 시스템 호출 인터페이스(System Call Interface)
시스템 호출 인터페이스는 사용자 프로그램이 운영체제의 서비스를 요청할 수 있는 메커니즘을 제공합니다. 이를 통해 프로그램은 파일 조작, 프로세스 관리, 메모리 할당 등의 작업을 수행할 수 있습니다. 시스템 호출은 운영체제와 사용자 프로그램 간의 인터페이스로, 사용자가 직접 하드웨어를 조작하지 않고도 다양한 기능을 사용할 수 있게 합니다.
파일 조작 시스템 호출: 파일을 열기 위한
open
, 파일을 읽기 위한read
, 파일을 쓰기 위한write
등의 시스템 호출이 있습니다.프로세스 관리 시스템 호출: 프로세스를 생성하기 위한
fork
, 프로세스를 종료하기 위한exit
, 프로세스 간 통신을 위한pipe
등의 시스템 호출이 있습니다.메모리 관리 시스템 호출: 메모리 할당을 위한
malloc
, 메모리 해제를 위한free
, 가상 메모리 페이지를 관리하기 위한mmap
등의 시스템 호출이 있습니다.
2.3 사용자 인터페이스(User Interface)
운영체제는 사용자와 컴퓨터 간의 상호작용을 위한 인터페이스를 제공합니다. 사용자 인터페이스는 GUI(Graphical User Interface)와 CUI(Command Line Interface)로 나뉩니다.
GUI: 사용자가 시각적 장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태로, 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해줍니다. Windows, macOS, GNOME 등이 있습니다.
CUI: 그래픽이 아닌 명령어로 처리하는 인터페이스로, 사용자가 텍스트 명령어를 입력하여 시스템을 제어합니다. Unix, Linux, Windows의 PowerShell 등이 있습니다.
시스템콜
시스템콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며, 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 씁니다. 시스템 호출을 통해 프로그램은 파일 조작, 프로세스 제어, 통신 등의 작업을 수행할 수 있습니다. 예를 들어, 파일을 열기 위한 open
시스템 호출, 파일을 읽기 위한 read
시스템 호출, 프로세스를 생성하기 위한 fork
시스템 호출 등이 있습니다.
모드비트
시스템이 작동할 때 모드비트는 유저 모드와 커널 모드를 구분합니다. 모드비트는 1 또는 0의 값을 가지는 플래그 변수입니다. 커널 모드에서는 모든 컴퓨터 자원에 접근할 수 있지만, 유저 모드에서는 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못합니다.
유저 모드와 커널 모드
유저 모드(User Mode): 사용자가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드입니다. 유저 프로그램이 커널 함수를 호출할 때는 유저 모드에서 커널 모드로 전환됩니다.
커널 모드(Kernel Mode): 모든 컴퓨터 자원에 접근할 수 있는 모드로, 운영체제의 핵심 부분이 이 모드에서 동작합니다. 커널 모드는 하드웨어 자원 관리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, I/O 디바이스 관리 등의 주요 작업을 수행합니다.
결론
운영체제는 컴퓨터 시스템의 핵심 소프트웨어로서, 자원 관리, 사용자 인터페이스 제공, 파일 시스템 관리, 시스템 보안 및 안정성 유지 등 다양한 역할을 수행합니다. 이러한 역할을 통해 컴퓨터 시스템의 효율성과 사용자 경험을 극대화합니다. 또한, 운영체제의 구조는 커널, 시스템 호출 인터페이스, 사용자 인터페이스 등으로 나뉘며, 각 구성 요소가 협력하여 운영체제가 원활하게 동작할 수 있도록 합니다. 운영체제의 역할과 구조를 이해하면 컴퓨터 시스템을 더 효율적이고 안정적으로 사용할 수 있습니다.
Last updated