1. 운영체제의 목적 및 기능
-
운영체제
- 응용 프로그램의 실행을 제어하고, 응용과 하드웨어 사이의 인터페이스 역할을 하는 프로그램
- 사용자 관점: 컴퓨팅 환경을 제공하는 인터페이스
- 시스템 관점: 시스템 자원을 효율적으로 관리하는 자원 관리자(Resource Manager)
-
운영체제의 3가지 목적
- 편리성(Convenience): 컴퓨터를 쉽게 사용할 수 있게 함
- 효율성(Efficiency): 시스템 자원을 효율적으로 활용
- 발전성(Ability to Evolve): 새로운 기능 도입 시 기존 서비스를 방해하지 않고 수용
-
컴퓨터 시스템의 계층 구조
- 하드웨어
- → 운영체제 (ISA 인터페이스)
- → 유틸리티 (ABI 인터페이스)
- → 응용 프로그램 (API 인터페이스)
- → 사용자
-
컴퓨터 시스템의 계층 구조와 관점
- 응용 프로그램 - 일반 사용자
- 유틸리티(라이브러리) - 프로그래머 (유저 모드)
- 운영체제(시스템 콜) - 프로그래머 (커널 모드)
- 컴퓨터 하드웨어 - 운영체제 설계자
-
소프트웨어로서의 운영체제
- 일반적인 컴퓨터 소프트웨어와 동일하게 기능
- 처리기에 의해 실행되는 프로그램 (또는 일련의 프로그램들)
- 수시로 응용에게 제어를 양도해가며 실행되고, 특정 CPU 기능을 통해 응용으로부터 제어를 넘겨 받는다.
-
커널 (Kernel; Nucleus)
- 주 메모리에 상주하는 운영체제의 핵심 부분
- 자주 사용되는 기능을 포함
2. 운영체제의 발전
운영체제는 순차처리 → 단순 일괄처리 → 멀티프로그래밍 일괄처리 → 시분할 시스템 순으로 발전했다.
cf. 직렬 프로그래밍 vs. 동시적 프로그래밍
-
직렬(Serial) 프로그래밍
- (단일 프로그래밍으로써 I/O때 CPU가 논다.)
-
동시적(Concurrent) 프로그래밍
- 1개의 CPU에서

- 1개의 CPU에서
-
병렬(Parallel) 프로그래밍
- 각각의 CPU에서 동시에
- 동시적 프로그래밍도 가능

2.1. 순차 처리 (Sequential Processing)
운영체제가 없던 시대로, 콘솔(디스플레이, 토글 스위치, 프린터 등)을 통해 컴퓨터를 직접 운영했다. 스케줄링 시간과 준비 시간(컴파일, 적재, 링킹) 낭비가 주요 문제였다.
2.2. 단순 일괄처리 시스템 (Simple Batch Systems)
-
모니터(monitor) 소프트웨어
- 같은 종류의 Job을 모아 실행
- 일괄처리 작업을 자동으로 순서대로 실행하고,
- 완료 시 자동으로 다음 작업을 읽어 들인다.
- JCL (Job Control Language): 사용할 컴파일러와 데이터를 모니터에 지시
-
이를 지원하기 위한 하드웨어 기능
- 메모리 보호, 타이머, 특권 명령어, 인터럽트
2.3. 멀티프로그래밍 (Multiprogramming)
Multi-programmed Batch 여러 프로그램을 메모리에 올려 CPU를 번갈아 사용하는 방식 (메모리 관리 및 스케줄링 필요) 한 작업이 I/O를 대기하는 동안 다른 작업이 CPU를 사용
-
목적은 CPU 이용률(Utilization) 극대화이다.
-
단점은 실행 중인 작업과 상호작용이 불가능하다는 점이다.
-
예시
- 단일 프로그래밍 시 CPU 이용률 3.2%에 불과하지만,
- 멀티프로그래밍으로 처리기 사용률이 20% → 40%, 산출량이 6 → 12 jobs/h로 향상된다.
2.4. 시분할 시스템 (Time Sharing Systems)
CPU 시간을 quantum 단위로 쪼개어(slicing) 다수의 사용자가 터미널을 통해 동시에 시스템에 접근할 수 있는 방식 (대화형 작업)
- 목적은 응답 시간 최소화이다.
| 구분 | 주요 목적 | 명령어 소스 |
|---|---|---|
| 일괄처리 멀티프로그래밍 | 처리기 이용률 최대화 | 작업 제어 언어 명령어 |
| 시분할 | 응답 시간 최소화 | 터미널에서 입력되는 명령어 |
3. 운영체제의 주요 기능
운영체제가 수행하는 핵심 기능은 다음과 같다.
-
프로세스 관리
- 멀티프로그래밍, 시분할, 실시간 트랜잭션 처리 등 다양한 환경에서 타이밍과 동기화를 담당하며 프로세스 개념이 탄생
-
메모리 관리
- 프로세스 분리, 자동 할당 및 관리, 모듈식 프로그래밍 지원, 보호 및 접근 제어, 영구적 저장 지원의 5가지 핵심 기능 제공
-
가상 메모리
- 실제 물리 메모리 용량에 관계없이 논리적 주소 지정을 가능하게 하며,
- MMU(Memory Management Unit)가 가상 주소를 실주소로 변환
-
파일 관리 / 입출력 관리 / 보조기억장치 관리
-
네트워킹 / 정보 보호 및 보안
-
스케줄링 및 자원 관리 / 명령어 해석기
4. 최근 운영체제로의 발전 (Modern OS)
현대 OS는 하드웨어 업그레이드 지원, 새로운 서비스 도입, 버그 수정 등의 이유로 지속적으로 발전하며, 다음과 같은 구조적 접근 방식이 활용된다.
| 기법 | 설명 |
|---|---|
| 마이크로커널 구조 | 주소 공간, IPC, 기본 스케줄링 등 핵심 기능만 커널에 포함 구현 단순화, 유연성 제공, 분산 환경에 적합 |
| 멀티쓰레딩 | 하나의 프로세스를 여러 스레드로 나누어 병행 실행 스레드는 CPU 디스패칭 단위 프로세스는 스레드들의 컨테이너 역할 |
| 대칭적 멀티프로세싱(SMP) | 여러 프로세서가 대칭적으로 협력하여 작업 처리 |
| 분산 운영체제 | 네트워크로 연결된 여러 컴퓨터를 하나의 시스템처럼 운영 |
| 객체 지향 설계 | OS 구성 요소를 객체 단위로 설계하여 모듈성과 확장성 향상 |
cf. 모놀리식 커널 vs. 마이크로커널(Microkernel)
-
모놀리식 커널 (Monolithic Kernel)
- 모놀리식(Monolithic)은 ‘거대한, 단일의’라는 뜻
- 커널의 모든 핵심 기능(프로세스 관리, 메모리 관리, 파일 시스템, 장치 드라이버 등)이 하나의 커다란 실행 파일로 묶여 동작하는 방식
-
마이크로커널 (Microkernel)
- 모놀리식의 단점을 보완하기 위해 등장
- 커널의 핵심 기능(최소한의 필수 기능)만을 남기고, 나머지 기능(파일 시스템, 드라이버 등)은 사용자 영역(User Space)으로 쫓아낸 구조