운영체제(OS)
오퍼레이팅 시스템(operating system) 은 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다.
OS는 컴퓨터 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공한다.
최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저(가상 머신) 위에서 실행되기도 한다.
입출력과 메모리 할당과 같은 하드웨어 기능의 경우, 운영체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 인터페이스(중재) 역할을 한다.
즉, 운영체제는 사용자의 명령과 프로그램이 하드웨어를 직접 제어하지 않고, OS를 통해 자원을 효율적이고 안전하게 사용할 수 있게 해준다.
운영체제의 주요 역할
- 프로세스 관리
- CPU에서 실행되는 여러 프로그램(프로세스)을 관리하고 스케줄링
- 메모리 관리
- 프로그램이 사용할 메모리를 할당하고, 필요 시 회수
- 파일 시스템 관리
- 하드디스크 같은 저장장치에 데이터를 파일 형태로 저장 및 접근
- 입출력 관리
- 키보드, 마우스, 프린터, 네트워크 등 주변 장치와의 통신 관리
- 사용자 인터페이스
- CLI또는 GUI 방식으로 사용자와 상호작용
- 보안 및 권한 관리
- 사용자 인증, 접근 권한 설정 등 시스템 보안 유지
운영체제의 핵심 개념
커널(Kernel) : 운영체제의 핵심, 하드웨어 자원과 직접 소통
유저 스페이스(User Space) : 일반 애플리케이션이 실행되는 공간
시스템 콜(System Call) : 애플리케이션이 OS의 기능을 요청할 때 사용하는 인터페이스
멀티태스킹 : 여러 작업을 빠르게 전환하며 동시에 실행되는 것 처럼 보이게 함
운영체제 일반적인 작동 원리
운영체제는 컴퓨터 전원이 켜진 직후부터 하드웨어 자원을 초기화하고 사용자와 프로그램의 중재자 역할을 수행한다.
작동 과정
[ 부팅과정 ]
전원 ON
↓
BIOS/UEFI
메인보드에 내장된 펌웨어로, CPU, RAM, 키보드, 디스크 등 기본 하드웨어를 점검한다. (POST: Power-On Self Test)
↓
운영체제가 저장된 디스크의 위치를 찾아
부트로더(LILO, GRUB 등)를 로드
↓
부트로더 실행
저장장치(HDD/SSD 등)에 설치된 운영체제 중 어떤 커널을 실행할지 결정
부트로더는 커널 이미지(OS 핵심)를 메모리에 로드하고 실행
↓
[ 커널 로딩 및 초기화 ]
커널은 시스템 자원을 최초로 제어하는 핵심 코드이다.
커널 로딩
- 메모리 구조 설정 (메모리 맵 구성)
- 장치 드라이버 로딩 (입출력 장치 인식)
커널 초기화
- 파일 시스템 마운트 (예: /, C:\ 등)
- 시스템 호출(System Call) 인터페이스 초기화
↓
사용자 공간(User Space) 준비
운영체제는 사용자와 직접 상호작용할 수 있는 CLI 또는 GUI 환경을 구성
사용자 로그인 후 쉘(Shell) 또는 데스크탑 환경 실행
↓
[ 프로세스 및 자원 스케줄링 ]
프로세스 및 자원 스케줄링
사용자가 애플리케이션을 실행하면,
운영체제가 프로세스를 생성하고 메모리, CPU 시간, 파일 접근 권한 등 자원을 할당
스케줄러가 프로세스를 번갈아가며 실행하여 멀티태스킹을 구현
↓
[ 시스템 자원 관리 ]
시스템 콜을 통한 하드웨어 접근
- 일반 프로그램은 하드웨어에 직접 접근하지 않고 OS에게 시스템 콜로 요청
- ex: `read()`, `write()`, `open()`, `malloc()` 등
- 커널 모드에서 OS가 안전하게 하드웨어 접근
↓
[ 예외 및 인터럽트 처리 ]
예외 및 인터럽트 처리
- 예외 상황(예: 키보드 입력, 오류 등)이 발생하면 커널이 감지
- 인터럽트 핸들러가 작동하여 해당 상황을 처리
↓
[ 사용자와 상호작용 및 종료 ]
사용자가 종료를 요청
- 실행 중인 프로세스를 종료
- 메모리 정리
- 파일 시스템 언마운트
- 하드웨어를 안전하게 종료