1. 운영체제의 목적 및 기능
-
운영체제
- 응용 프로그램의 실행을 제어하고, 응용과 하드웨어 사이의 인터페이스 역할을 하는 프로그램
- 사용자 관점: 컴퓨팅 환경을 제공하는 인터페이스
- 시스템 관점: 시스템 자원을 효율적으로 관리하는 자원 관리자(Resource Manager)
-
운영체제의 3가지 목적
- 편리성(Convenience): 컴퓨터를 쉽게 사용할 수 있게 함
- 효율성(Efficiency): 시스템 자원을 효율적으로 활용
- 발전성(Ability to Evolve): 새로운 기능 도입 시 기존 서비스를 방해하지 않고 수용
-
컴퓨터 시스템의 계층 구조
- 하드웨어
- → 운영체제 (ISA 인터페이스)
- → 유틸리티 (ABI 인터페이스)
- → 응용 프로그램 (API 인터페이스)
- → 사용자
-
컴퓨터 시스템의 계층 구조와 관점
- 응용 프로그램 - 일반 사용자
- 유틸리티(라이브러리) - 프로그래머 (유저 모드)
- 운영체제(시스템 콜) - 프로그래머 (커널 모드)
- 컴퓨터 하드웨어 - 운영체제 설계자
-
소프트웨어로서의 운영체제
- 일반적인 컴퓨터 소프트웨어와 동일하게 기능
- 처리기에 의해 실행되는 프로그램 (또는 일련의 프로그램들)
- 수시로 응용에게 제어를 양도해가며 실행되고, 특정 CPU 기능을 통해 응용으로부터 제어를 넘겨 받는다.
-
커널 (Kernel; Nucleus)
- 주 메모리에 상주하는 운영체제의 핵심 부분
- 자주 사용되는 기능을 포함
2. 운영체제의 발전
운영체제는 순차처리 → 단순 일괄처리 → 멀티프로그래밍 일괄처리 → 시분할 시스템 순으로 발전했다.
| 구분 | 내용 | 장점 | 단점 |
|---|---|---|---|
| 단순 일괄처리 시스템 (Simple Batch Systems) | 모니터 SW로 일괄처리 작업 실행 | - | - |
| 멀티프로그래밍 (Multiprogramming) | 여러 프로그램을 메모리에 올려 CPU를 번갈아 사용 | CPU 이용률 극대화 | 상호작용 X |
| 시분할 시스템 (Time Sharing Systems) | CPU 시간을 퀀텀 단위로 쪼개어 다중 사용자가 터미널로 접근 | 상호작용 O 응답 시간 최소화 | - |
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)으로 쫓아낸 구조