[컴퓨터시스템개론] 운영체제
운영체제의 발전
초기 운영체제
- 프로그램 준비 작업 및 작업 간 전환을 단순화하기 위해 등장
- 사용자와 하드웨어 장비를 분리하는 역할 수행
- 사용자는 프로그램을 운영자에게 제출하고 나중에 결과 확인
일괄 처리 (Batch Processing)
- 작업(Job)들을 모아 하나의 묶음으로 만들어 사용자의 개입 없이 순차적으로 실행
- 작업 큐 (Job Queue): 실행 대기 중인 작업 목록 (주로 FIFO 방식이나 우선순위 고려)
- 단점:
- 작업 제출 후 사용자 개입 불가 (대화형 작업 어려움)
- CPU 및 입출력 자원 낭비 발생 가능
대화식 처리 (Interactive Processing)
- 실행 중인 프로그램이 원격 단말기 등을 통해 사용자와 상호작용 가능
- 사용자의 입력에 즉각적으로 반응
실시간 처리 (Real-time Processing)
- 작업의 마감 시간(Deadline)을 준수하며 컴퓨터 서비스 제공
- 외부 환경의 변화에 충분히 빠르게 대응하는 것이 목표
시분할 (Time-Sharing)
- 하나의 컴퓨터 자원을 여러 사용자가 동시에 사용할 수 있도록 하는 처리 방식
- CPU 시간을 짧은 구간(Time slice)으로 나누어 여러 작업에 번갈아 할당
- 멀티프로그래밍 기법을 기반으로 구현됨
멀티프로그래밍 (Multiprogramming)
- 하나의 CPU에서 주기억장치 내 여러 프로그램을 동시에(concurrently) 적재하여 실행
- CPU가 특정 프로그램의 I/O 작업을 기다리는 동안 다른 프로그램을 실행하여 CPU 활용률 극대화
- OS는 주기억장치를 분할하고 각 영역을 보호해야 함
멀티태스킹 (Multitasking)
- 단일 사용자가 동시에 여러 작업을 수행하는 환경
- 시분할과 유사하나, 주로 단일 사용자 환경을 지칭
멀티프로세싱 (Multiprocessing)
- 하나의 컴퓨터 시스템에 여러 개의 프로세서(코어)를 장착하여 동시에 여러 작업 또는 단일 작업의 여러 부분을 병렬로 처리
- 고려 사항:
- 부하 균형 (Load Balancing): 여러 프로세서에 작업을 효과적으로 분배하여 효율성 증대
- 스케일링 (Scaling): 가용 프로세서 수에 맞게 작업을 작은 단위로 분할
운영체제 발전의 주요 진전
- 운영체제 발전 과정에서 다음 4가지 이론적 주요 진전이 이루어짐
- 프로세스 관리
- 메모리 관리
- 스케줄링 및 자원 관리
- 정보 보호 및 보안 관리
운영체제의 구조
소프트웨어 분류
- 응용 소프트웨어 (Application Software): 사용자의 특정 작업을 수행하기 위한 프로그램 (워드 프로세서, 웹 브라우저 등)
- 시스템 소프트웨어 (System Software): 컴퓨터 시스템 운영 및 응용 소프트웨어 실행 환경 제공
- 운영체제 (Operating System; OS): 시스템의 핵심 관리자
- 유틸리티 소프트웨어 (Utility Software): OS 기능 보조 및 확장 (디스크 관리 도구, 압축 프로그램 등)
응용 SW와 유틸리티, 유틸리티와 OS 간의 경계는 모호할 수 있음
운영체제(OS) 개념 및 목적
- 컴퓨터 하드웨어를 관리하고 응용 프로그램 및 사용자에게 인터페이스를 제공하는 핵심 시스템 소프트웨어
- 주요 목적:
- 편리성 (Convenience): 사용자가 컴퓨터를 쉽고 편리하게 사용하도록 지원
- 효율성 (Efficiency): 컴퓨터 시스템 자원(CPU, 메모리, I/O 장치 등)을 효율적으로 관리하고 활용
운영체제의 역할
- 프로그래머/하드웨어 인터페이스:
- 복잡한 하드웨어 제어를 숨기고 단순화된 인터페이스(API, 시스템 호출) 제공 (추상화)
- 응용 프로그램과 하드웨어 간의 중재자 역할
- 자원 관리자:
- CPU 스케줄링, 메모리 할당 및 회수, 파일 시스템 관리, 입출력 장치 제어 등 시스템 자원 관리
- 응용 프로그램이 자원을 요청하고 사용할 수 있도록 조정
운영체제 구성요소

- 사용자 인터페이스 (UI - User Interface): 사용자와 운영체제 간의 상호작용 통로
- 셸 (Shell): 명령어 기반 인터페이스 (CLI - Command Line Interface)
- GUI (Graphical User Interface): 아이콘, 메뉴, 윈도우 등을 이용한 그래픽 기반 인터페이스
- 윈도우 관리자 (Window Manager): GUI 환경에서 화면의 윈도우 관리
- 커널 (Kernel):
- 운영체제의 핵심 부분으로, 부팅 후 메모리에 상주하며 가장 기본적인 기능 수행 (좁은 의미의 OS)
- 주요 기능: 프로세스 관리, 메모리 관리, 장치 관리, 파일 시스템 관리, 시스템 호출 처리 등
- 구성 요소 예시:
- 파일 관리자: 파일 생성, 삭제, 접근 제어, 저장 공간 관리
- 장치 관리자: 하드웨어 장치 제어 및 입출력 관리 (디바이스 드라이버 포함)
- 메모리 관리자: 주기억장치 할당 및 회수, 가상 메모리 관리 (페이징 등)
- 유틸리티 (Utility): 운영체제의 기본 기능을 보조하거나 확장하는 프로그램 (탐색기, 제어판, 작업 관리자 등)
- 라이브러리 (Library): 특정 기능을 수행하도록 미리 작성된 프로그램 모음
- 표준 라이브러리 (Standard Library): 응용 프로그램에서 자주 사용하는 일반적인 기능 제공 (ANSI C 라이브러리, POSIX 라이브러리 등)
- 시스템 호출 라이브러리 (System Call Library): 응용 프로그램이 커널 기능을 사용할 수 있도록 인터페이스 제공 (시스템 호출 함수 래핑)
- 시스템 호출 (System Call): 응용 프로그램이 운영체제 커널에게 서비스를 요청하는 통로 (커널 기능을 이용하려면 반드시 시스템 호출을 사용해야 함)
- 디바이스 드라이버 (Device Driver): 특정 하드웨어 장치를 제어하기 위한 프로그램 (커널의 일부 또는 모듈 형태)
운영체제의 시동 (부팅, Bootstrapping)

- 컴퓨터 전원을 켰을 때 운영체제를 주기억장치에 로드하여 실행 준비를 마치는 과정
- 부팅 절차:
- 전원 ON: CPU는 ROM에 저장된 BIOS/UEFI 펌웨어 실행
- POST (Power-On Self-Test): 하드웨어 자가 진단 수행 (CMOS 설정 확인)
- 부트 로더 (Boot Loader) 실행: BIOS/UEFI가 부팅 매체(HDD, SSD 등)의 MBR/GPT에서 부트 로더를 찾아 주기억장치에 적재 및 실행
- OS 커널 로드: 부트 로더가 저장장치에 있는 OS 커널을 찾아 주기억장치에 적재
- OS 초기화 및 제어권 이양: 커널이 시스템 초기화 작업을 수행하고 사용자 인터페이스(셸) 등을 실행하며 시스템 제어권을 넘겨받음
- 부트로더 (Bootloader): 운영체제 커널을 메모리에 로드하는 역할을 하는 작은 프로그램 (주로 ROM이나 부팅 파티션에 저장됨)
컴퓨터 활동의 조정
프로그램 vs 프로세스
- 프로그램 (Program): 디스크 등에 저장된 정적인 코드와 데이터의 집합
- 프로세스 (Process):
- 실행 중인 프로그램 (메모리에 로드되어 CPU에 의해 실행되는 동적인 활동 단위)
- 운영체제가 관리하는 작업의 단위
- 프로세스 상태 (Process State): 현재 프로세스의 활동 상태 (생성, 준비, 수행, 대기(블록), 종료 등)
프로세스 관리
- 프로세스 제어 블록 (PCB - Process Control Block):
- 운영체제가 각 프로세스를 관리하기 위해 유지하는 정보 구조체
- 포함 정보: 프로세스 ID, 프로세스 상태, 프로그램 카운터(PC), CPU 레지스터 값, 스케줄링 정보, 메모리 관리 정보, 입출력 상태 정보 등
- 프로세스 테이블 (Process Table):
- 시스템 내의 모든 프로세스에 대한 PCB들을 모아 놓은 테이블 (커널 공간에 존재)
- 프로세스 이미지 (Process Image):
- 프로세스가 실행되기 위해 메모리에 적재된 모습
- 구성: 사용자 공간(코드 영역, 데이터 영역, 힙 영역, 스택 영역), 커널 공간(PCB 등)
스케줄링 및 디스패칭
- 스케줄링 (Scheduling):
- 준비(Ready) 상태에 있는 프로세스들 중에서 다음에 CPU를 할당할 프로세스를 선택하는 정책 및 행위
- 스케줄러 (Scheduler): 스케줄링 정책을 구현하는 OS 커널의 일부
- 스케줄링 정책 종류: FIFO, SPN(SJF), Round-Robin, SRT(SRTF), 우선순위 스케줄링 등
- 디스패칭 (Dispatching):
- 스케줄러가 선택한 프로세스에게 실제로 CPU 제어권을 넘겨주는 과정
- 디스패처 (Dispatcher): 문맥 전환을 수행하고 프로세스를 실행시키는 OS 커널의 일부
- 문맥 전환 (Context Switching):
- 현재 실행 중인 프로세스의 상태(문맥: 레지스터 값 등)를 PCB에 저장하고, 새로 실행될 프로세스의 상태를 PCB에서 복원하여 CPU 제어권을 넘기는 과정
- 시분할, 멀티태스킹 환경에서 필수적이며 오버헤드 발생
- 프로그램 실행 조정 방식:
- 운영체제는 스케줄링 알고리즘(예: Round-Robin, 우선순위 기반 등)을 사용하여 어떤 프로세스에게 CPU를 할당할지 결정하고, 디스패처를 통해 문맥 전환을 수행하며 CPU 제어권을 넘겨준다
- 이는 한정된 CPU 자원을 여러 프로세스가 공평하거나 효율적으로 나누어 사용하도록 조정하는 핵심 과정
인터럽트 (Interrupt)
- 프로그램 실행 중 예기치 않은 사건이나 외부 장치의 요청이 발생했을 때 CPU에게 알리는 신호
- 종류:
- 하드웨어 인터럽트: 외부 장치(타이머, 키보드, 디스크 등)로부터 발생하는 비동기적 인터럽트
- 소프트웨어 인터럽트 (트랩 Trap): 프로그램 내부 오류(0으로 나누기, 잘못된 메모리 접근)나 예외 상황, 또는 의도적인 시스템 호출에 의해 발생하는 동기적 인터럽트
- 인터럽트 처리:
- 현재 명령어 완료 후 인터럽트 감지
- 현재 프로세스 상태(PC, 레지스터 등) 저장
- 인터럽트 종류를 식별하고 해당 인터럽트 처리기(Interrupt Handler) 실행 (주로 커널 코드)
- 처리 완료 후 저장된 프로세스 상태 복원
- 중단되었던 프로세스 실행 재개
- 인터럽트의 역할:
- 인터럽트는 현재 실행 중인 프로세스를 잠시 멈추고 운영체제 커널 코드가 실행되도록 하여, I/O 완료 처리, 오류 처리, 또는 시분할 시스템에서의 프로세스 전환(타이머 인터럽트) 등 시스템 전체의 실행 흐름을 조정
자원 관리 및 동기화
- 자원 할당: 한정된 시스템 자원(CPU 시간, 메모리, 파일, 장치 등)을 여러 프로세스에게 효율적으로 배분
- 동기화 (Synchronization): 여러 프로세스가 공유 자원에 동시에 접근할 때 발생할 수 있는 문제(경쟁 상태 Race Condition)를 막고 실행 순서를 제어하는 메커니즘
- 세마포어 (Semaphore): 공유 자원의 가용 개수를 나타내는 정수 변수(플래그)를 통해 접근 제어
- 뮤텍스 (Mutex): 임계 구역(Critical Section)에 오직 하나의 프로세스만 진입하도록 하는 이진 세마포어 (Locking 메커니즘)
- 교착 상태 (Deadlock):
- 둘 이상의 프로세스가 서로 상대방이 점유하고 있는 자원을 무한정 기다리며 진행하지 못하는 상태
- 발생 조건 (교재 기준):
- 공유 불가능한 자원에 대한 경쟁 (상호 배제)
- 프로세스가 자원을 보유한 상태에서 추가 자원 요청 (점유 대기)
- 할당된 자원을 강제로 회수할 수 없음 (비선점)
- (일반적으로 순환 대기(Circular Wait) 조건도 포함됨)
- 해결 방안: 발생 조건 중 하나 이상을 제거 (예방, 회피, 탐지 및 복구)
운영체제 보안
보안의 기본 개념
- 특권 (Privilege): 프로세스가 시스템 자원(메모리 영역, 파일 등)에 접근하거나 특정 작업을 수행할 수 있는 권한
- 운영체제는 각 프로세스에게 필요한 최소한의 특권 집합을 연관시킴
- 사용자 프로세스: 실행 시간에 특권 할당
- 시스템 프로세스: 구성 시간에 특권 할당
- 루트 접근 (관리자 특권): OS의 모든 기능과 서비스에 접근 가능
- 보안 목표: 비인가된 사용자나 악성 소프트웨어의 불법적인 접근 및 특권 획득 시도 방어 및 탐지
CPU 수행 모드 (Mode of Execution)
- CPU 하드웨어 수준에서 지원하는 보안 메커니즘
- 사용자 모드 (User Mode):
- 응용 프로그램 코드가 실행되는 모드
- 제한된 명령어만 사용 가능 (자원 직접 제어 불가)
- 커널 모드 (Kernel Mode) / 특권 모드 (Privileged Mode):
- 운영체제 커널 코드가 실행되는 모드
- 모든 명령어(특권 명령 포함) 사용 가능, 모든 자원 접근 가능
- 모드 전환 (Mode Switching):
- 사용자 모드 → 커널 모드: 시스템 호출, 인터럽트, 예외 발생 시
- 커널 모드 → 사용자 모드: 시스템 호출/인터럽트 처리 완료 후 복귀 시
- 특권 명령 (Privileged Instruction): 커널 모드에서만 실행 가능한 중요한 명령 (예: 메모리 관리 레지스터 변경, I/O 장치 직접 제어, CPU 모드 변경 명령)
- 사용자 모드에서 특권 명령 실행 시도 시 하드웨어 예외 발생함
시스템 접근 위협
- 침입자 (Intruder): 시스템에 비인가된 접근을 시도하거나 권한을 넘어서려는 자
- 공격 방법: 시스템/SW 취약점 이용 (백도어 실행 유도, 버퍼 오버플로우 공격 등)
- 침입자 유형:
- 기만자 (Masquerader): 인가받지 않은 외부 사용자 (다른 사용자 사칭)
- 권리 침해자 (Misfeasor): 인가받았지만 권한 범위를 넘어서는 내부 사용자 (불법 행위)
- 은밀한 사용자 (Clandestine User): 루트 권한(관리자 권한)을 장악하려는 내부 또는 외부 사용자 (불법 사용자)
- 악성 소프트웨어 (Malicious Software; Malware): 시스템에 해를 끼치거나 정보를 유출하는 악의적인 프로그램
- 목적: 데이터 파괴, 제어 우회, 특권 획득, 추가 침입 수단 제공 등
- 종류: 바이러스, 웜, 논리 폭탄, 백도어, 봇 등
- 분류:
- 기생형 코드 (다른 프로그램 필요): 바이러스, 논리 폭탄, 백도어
- 독립형 코드 (자체 실행 가능): 웜, 봇
- 비복제 코드: 논리 폭탄, 백도어
- 복제 코드: 바이러스, 웜
주요 보안 기법
- 인증 (Authentication):
- 시스템에 접근하려는 사용자 또는 프로세스의 신원을 확인하는 절차. 이는 시스템에 접근하는 주체의 정당성을 확인하는 가장 기본적인 보안 기법
- 주요 방어선이자 접근 제어의 기본
- 인증 과정:
- 식별 (Identification): 사용자 이름(ID) 등 식별자 제출
- 검증 (Verification): 제출된 식별자와 사용자 본인을 연결하는 인증 정보(암호, 생체 정보 등) 제출/생성하여 일치 여부 확인
- 인증 수단 (Factors):
- 아는 것 (Something you know): 패스워드, PIN, 비밀 질문 답변
- 소유한 것 (Something you have): 스마트 카드, OTP 토큰, 물리적 키
- 개인의 특징 (Something you are): 생체 정보 (지문, 홍채, 얼굴, 음성 패턴, 필적 등 - 정적/동적)
- 접근 제어 (Access Control):
- 인증된 사용자/프로세스가 특정 시스템 자원(파일, 메모리 등)에 대해 허용된 작업(읽기, 쓰기, 실행 등)만 수행하도록 제한하는 보안 정책 및 구현. 이는 인가된 사용자만 허용된 방식으로 자원에 접근하도록 통제
- 인가 (Authorization): 특정 주체(사용자/프로세스)에게 특정 객체(자원)에 대한 접근 권한을 부여하는 과정
- 접근 행렬 모델 (Access Matrix Model):
- 주체 (Subject): 자원에 접근하는 능동적 개체 (사용자, 프로세스)
- 객체 (Object): 접근 제어의 대상이 되는 수동적 개체 (파일, 프로그램, 메모리 영역)
- 접근 권한 (Access Right): 주체가 객체에 대해 수행할 수 있는 동작 (읽기, 쓰기, 실행 등)
- 감사 (Auditing):
- 시스템 자원에 대한 사용자 접근 및 활동 기록을 추적하고 로그를 유지하는 활동. 이는 사후 추적 및 보안 정책 준수 여부 확인
- 보안 사고 발생 시 원인 분석 및 책임 추적에 활용
레퍼런스
“이 글은 『컴퓨터 과학 총론』(Brookshear & Brylow, 2019)의 내용을 토대로 재구성된 자료입니다.”
Windows 구성 요소 개요 - Windows drivers
Windows 구성 요소 개요

💻 이 글은 컴퓨터시스템개론 시리즈의 일부입니다.
← 이전글: 데이터의 조작 | 다음글: 네트워킹 →