Operating System Concepts (공룡책)

·2026년 6월 14일

IT기초

목록 보기
2/6

"운영체제는 사용자와 PC H/W 사이에서 중개자의 역할" 을 한다.
운영체제는 PC H/W를 관리하는 SW이다. OS의 근본적인 책임은 CPU, 메모리, 입출력 장치, 저장 장치를 프로그램에 할당하는 것이다.


목표

  1. PC System의 일반적인 구성, 인터럽트의 역할을 파악
  2. 현대 다중 처리기 PC System의 구성요소를 학습
  3. 사용자 모드, 커널 모드로의 전환을 설명

1.1 OS가 할 일

PC System의 4개 구성요소는 다음과 같다.

구성요소설명
HWCPU, I/O로 구성. 기본 계산용 자원을 제공
OS다양한 응용 프로그램 간의 H/W 사용을 제어, 조정
응용프로그램워드프로세서, 스프레드시트, 컴파일러 등
사용자컴퓨터를 사용하는 주체

운영체제에서의 프로그램 종류

  • Kernel(커널) : 컴퓨터에서 항상 실행되는 프로그램
  • System Program(시스템 프로그램) : OS와 관련됐지만, 반드시 커널의 일부일 필요는 없는 프로그램
  • Application(응용프로그램) : 사용자가 특정 업무를 수행하거나 원하는 기능을 이용할 수 있도록 고안된 소프트웨어
  • Middleware(미들웨어) : 응용 소프트웨어가 OS로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 소프트웨어

1.2 관점

  • 사용자 관점 : 사용자의 작업을 최대화하는 것이 목표 (사용의 용이성)
  • 시스템 관점 : OS는 "자원 할당자", 즉 자원의 관리자

1.3 저장 장치 구조 및 입출력 구조

인터럽트 (OS와 HW 상호작용의 핵심)

컴퓨터가 프로그램을 실행하는 도중, 예기치 않은 상황이나 급하게 처리해야 할 요청이 발생했을 때 현재 하던 작업을 잠시 중단하고 해당 요청을 먼저 처리한 뒤, 다시 원래 작업으로 복귀하는 기능이다.

인터럽트 처리 흐름

인터럽트 발생
  → CPU 실행 중단
  → 현재 상태 저장 (스택)
  → ISR(인터럽트 서비스 루틴) 실행
  → 정상 상태 복귀

세부 처리 단계는 다음과 같다.

  1. CPU는 컨트롤러가 인터럽트 요청 라인(IRQ) 에 신호를 보낸 것을 감지
  2. CPU는 인터럽트 번호를 읽고, 인터럽트 벡터에서 index를 사용해 ISR로 점프
  3. 해당 인덱스와 관련된 주소에서 실행
  4. 인터럽트 처리기는 작업 중에 변경될 상태를 저장
  5. 원인을 확인하고 필요한 처리를 수행
  6. 상태를 복원하고 CPU를 인터럽트 전 실행 상태로 되돌림

Maskable vs NonMaskable 인터럽트

종류설명
Maskable 인터럽트CPU가 필요시 무시할 수 있음
NonMaskable 인터럽트CPU가 무시할 수 없음 (치명적 오류 등)

핵심 개념 정리

  • 인터럽트 벡터 : 인터럽트 서비스 루틴의 주소를 제공하기 위한 배열
  • 인터럽트 서비스 루틴(ISR) : 특정 인터럽트 발생 시 CPU가 실행하는 특별한 프로그램 코드
  • 벡터 방식 인터럽트의 목적 : 모든 인터럽트 소스를 하나의 핸들러가 검색해야 하는 부담을 줄이기 위함

저장 장치 구조

주기억장치(Main Memory)

CPU는 주기억장치에만 직접 접근할 수 있기 때문에, 실행할 프로그램은 반드시 주기억장치에 적재되어야 한다. (ex. DRAM, SRAM)

폰노이만 구조의 실행 흐름은 아래와 같다.

메모리에서 명령 인출 → 명령 레지스터에 저장
  → 주기억장치에서 데이터 읽기
  → 명령어 연산 실행
  → 결과를 주기억장치에 저장

주기억장치의 한계는 세 가지다.
1. 용량이 적음
2. 휘발성이라 재부팅 시 데이터 초기화
3. 보조 저장장치에 비해 고가


보조 저장장치

  • 기억 용량이 크고 비휘발성
  • 대부분의 프로그램이 저장되는 공간
  • ex) SSD, HDD

캐싱

  • 정보를 일시적으로 더 빠른 저장장치로 복사하는 것
  • 상대적으로 느린 HDD에 있는 정보를 빠르게 접근하기 위해 사용


입출력 구조

운영체제 코드의 상당 부분은 시스템의 안정성과 성능, 그리고 장치의 다양한 특성으로 인해 입출력 장치 관리에 할애된다.

  • DMA(Direct Memory Access) : CPU의 개입 없이 메모리와 주변 장치 간에 데이터를 직접 전송할 수 있도록 하는 기술. CPU의 작업 부하를 줄이고 데이터 전송 효율을 높임
  • 인터럽트 구동 I/O : 소량의 데이터를 이동시킬 때 효과적인 방식

1.4 컴퓨터 시스템 아키텍처

1. 단일 처리기 시스템(Single-Processor System)

  • 단일 처리 코어를 가진 하나의 CPU를 사용
  • 코어는 명령을 실행하고, 로컬 데이터를 저장하기 위한 레지스터를 포함하는 구성요소

2. 다중 처리기 시스템(Multi-Processor System)

  • 두 개 이상의 프로세서가 존재
  • 장점: 처리량 증가 (단, 프로세서 수와 속도가 항상 정비례하지는 않음)

다중 처리기 시스템은 여러 처리기를 어떻게 다루느냐에 따라 SMP와 AMP로 나뉜다.


SMP (Symmetric Multiprocessing, 대칭형 다중 처리)

여러 CPU/코어가 동등한 지위를 가지며, 하나의 OS가 전체 CPU를 관리하는 방식이다.

  • 모든 CPU가 메모리와 I/O 장치에 동등하게 접근 가능
  • 어떤 프로세스든 어느 CPU에서든 실행될 수 있음
  • 요즘 일반 PC, 서버 OS는 대부분 SMP 방식
CPU0  CPU1  CPU2  CPU3
  \    |    |    /
     하나의 OS
        |
     공유 메모리

AMP (Asymmetric Multiprocessing, 비대칭형 다중 처리)

여러 CPU가 있지만 각자 역할이 다른 방식이다. 보통 하나의 주 CPU가 전체 시스템을 제어하고, 나머지 CPU는 특정 작업을 담당한다.

Master CPU: OS 제어, 스케줄링
Worker CPU: 특정 작업 수행
Worker CPU: 특정 장치 처리

SMP vs AMP 비교

구분SMPAMP
다중 처리기 시스템인가?OO
CPU 지위모두 동등역할이 다름
OS 관리하나의 OS가 전체 CPU 관리주 CPU가 다른 CPU 제어
일반 PC에서 흔한가?흔함상대적으로 드묾

3. 클러스터형 시스템(Clustered Systems)

  • 여러 대의 독립된 컴퓨터(노드)를 고속 네트워크로 연결하여 하나의 강력한 시스템처럼 구성
  • 각 노드는 자신만의 CPU, 메모리를 가짐
  • 고가용성, 부하 분산, 확장성 등의 이점 제공

MultiCore vs MultiProcessor

먼저 용어부터 정리하고 넘어가야 한다. 이 세 단어가 가장 자주 혼동된다.

용어의미
Core명령어를 실제로 실행하는 계산 단위
Processor메인보드 소켓에 꽂히는 물리적 CPU 칩
CPU문맥에 따라 Core처럼 쓰이기도, Processor처럼 쓰이기도 함 — 가장 모호한 용어

공룡책 기준 계층 구조: Core < Processor < Computer System


[ MultiCore ] — Processor 1개 안에 Core가 여러 개

┌──────────────────┐
│  Processor / CPU칩│
│  ┌────┐ ┌────┐   │
│  │Core│ │Core│   │
│  └────┘ └────┘   │
│  ┌────┐ ┌────┐   │
│  │Core│ │Core│   │
│  └────┘ └────┘   │
└──────────────────┘

[ MultiProcessor ] — Processor 칩이 여러 개, 각 Processor 안에 Core가 존재

┌──────────────┐   ┌──────────────┐
│ Processor 1  │   │ Processor 2  │
│ ┌────┐┌────┐ │   │ ┌────┐┌────┐ │
│ │Core││Core│ │   │ │Core││Core│ │
│ └────┘└────┘ │   │ └────┘└────┘ │
└──────┬───────┘   └──────┬───────┘
       └────────┬──────────┘
              메모리

MultiCore와 MultiProcessor는 배타적인 개념이 아니다.

  • Processor 1개 / Core 4개 → 멀티코어 시스템
  • Processor 2개 / 각 Processor 안에 Core 8개 → 멀티프로세서이면서 멀티코어 시스템

현대 서버 대부분은 두 번째 형태, 즉 여러 Processor에 각각 여러 Core가 존재하는 구조다.


핵심 개념 정리

용어설명
Core명령어를 실제로 실행하는 계산 단위
Processor메인보드 소켓에 꽂히는 물리적 CPU 칩
CPU문맥에 따라 Core 또는 Processor를 가리키는 모호한 용어
MultiCore하나의 Processor 안에 Core가 여러 개
MultiProcessorProcessor 칩 자체가 여러 개 (둘은 배타적이지 않음)

1.5 운영체제의 작동

운영체제는 컴퓨터가 켜지는 순간부터 실행 준비를 시작한다. 처음부터 OS 전체가 메모리에 올라와 있는 것은 아니고, 부트스트랩 프로그램이 먼저 실행된다.

부트스트랩 프로그램

컴퓨터 전원을 켰을 때 가장 먼저 실행되는 프로그램이다.

  • 보통 ROM, EEPROM, Flash Memory 같은 비휘발성 메모리에 저장
  • 하드웨어를 초기화하고, OS 커널을 메모리에 적재하는 역할 수행
전원 ON
  → 부트스트랩 프로그램 실행
  → CPU, 메모리, 장치 초기화
  → 디스크에서 커널을 RAM으로 적재
  → 커널 실행
  → 운영체제 시작

즉, 커널은 평소에는 보조 저장장치에 저장되어 있다가 부팅 과정에서 RAM으로 올라온다.


다중프로그래밍 (Multiprogramming)

OS가 시작되고 나면 여러 프로그램을 동시에 실행해야 한다. 이때 핵심 문제는 CPU 낭비를 줄이는 것이다.

프로그램이 하나뿐이라면, 그 프로그램이 I/O를 기다리는 동안 CPU는 아무 일도 하지 않는다. 다중프로그래밍은 이 유휴 시간을 없애기 위해 여러 프로그램을 메모리에 동시에 올려두는 방식이다.

[ 다중프로그래밍 없을 때 ]

프로그램 A: ████░░░░░░████░░░░░░
            실행  I/O대기 실행  I/O대기
CPU:        ████          ████
                 ← 낭비 →      ← 낭비 →


[ 다중프로그래밍 적용 시 ]

프로그램 A: ████░░░░░░████
프로그램 B:     ████░░░░░░████
CPU:        ████████████████   ← 계속 실행
  • 한 프로세스가 I/O를 기다리는 동안, OS는 다른 프로세스에게 CPU를 넘김
  • CPU 이용률을 최대화하는 것이 목적

다중 태스킹 (Multitasking / Time-sharing)

다중 태스킹은 다중프로그래밍의 논리적 확장으로, 사용자 응답성에 초점을 맞춘다.

CPU가 아주 짧은 시간 단위(수십 ms)로 프로세스 사이를 빠르게 전환하기 때문에, 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 느껴진다.

시간 →  |──A──|──B──|──C──|──A──|──B──|──C──|
CPU:       A    B    C    A    B    C
구분다중프로그래밍다중 태스킹
목적CPU 이용률 극대화사용자 응답성 향상
전환 기준I/O 대기 발생 시일정 시간(타임 슬라이스)마다
사용자 체감상관 없음동시에 실행되는 것처럼 느낌

다중프로그래밍이 "CPU를 쉬게 하지 말자"라면,
다중 태스킹은 "각 사용자에게 CPU를 독점하는 것처럼 느끼게 하자"이다.


사용자 모드와 커널 모드

운영체제는 시스템 보호를 위해 실행 모드를 나눈다.

모드설명
사용자 모드 (User Mode)일반 응용 프로그램이 실행되는 모드. 하드웨어에 직접 접근 불가
커널 모드 (Kernel Mode)(= 시스템 모드)OS 커널이 실행되는 모드. CPU, 메모리, I/O 장치 등 중요 자원에 접근 가능하며 특권 명령어 실행 가능

CPU 내부에는 현재 실행 모드를 나타내는 모드 비트(mode bit) 가 존재한다.

  • mode bit = 0 → 커널 모드
  • mode bit = 1 → 사용자 모드

시스템 콜 (System Call)

사용자 프로그램이 파일 읽기, 입출력, 메모리 요청 등 OS의 도움이 필요한 작업을 수행하려면 직접 하드웨어를 건드리는 것이 아니라 시스템 콜을 사용한다.

응용 프로그램
  → 시스템 콜 요청
  → 사용자 모드에서 커널 모드로 전환
  → 커널이 요청 처리
  → 다시 사용자 모드로 복귀

시스템 콜 예시:

  • 파일 생성, 읽기, 쓰기
  • 프로세스 생성 및 종료
  • 메모리 할당
  • 네트워크 통신
  • 입출력 장치 사용

타이머

운영체제는 CPU를 특정 프로그램이 독점하지 못하도록 타이머(timer) 를 사용한다.

  • 일정 시간이 지나면 타이머 인터럽트 발생
  • CPU 제어권이 운영체제로 넘어감
  • OS는 다른 프로세스에게 CPU를 할당

이 덕분에 무한 루프에 빠진 프로그램이 있더라도 시스템 전체가 멈추지 않도록 제어할 수 있다.


1.6 자원 관리

운영체제는 컴퓨터의 다양한 자원을 관리한다.

프로세스 관리

프로그램은 디스크에 저장된 수동적인 존재이고, 프로세스는 메모리에 올라와 실행 중인 능동적인 존재이다.

구분설명
프로그램디스크에 저장된 실행 파일
프로세스메모리에 올라와 실행 중인 프로그램

운영체제는 다음 작업을 수행한다.

  • 프로세스 생성 및 종료
  • 프로세스 일시 중지 및 재개
  • CPU 스케줄링
  • 프로세스 간 통신(IPC) 제공
  • 교착 상태(Deadlock) 처리

메모리 관리

메인 메모리는 CPU가 직접 접근할 수 있는 중요한 자원이다. 여러 프로그램이 동시에 실행되기 위해서는 각 프로그램이 서로의 메모리 영역을 침범하지 못하도록 OS가 보호해야 한다.

주요 역할:

  • 메모리 공간 할당 및 회수
  • 프로세스 간 메모리 보호
  • 가상 메모리 관리

파일 시스템 관리

사용자는 저장장치의 물리적 구조를 직접 다루지 않고 파일이라는 추상화된 단위로 데이터를 사용한다.

OS는 복잡한 디스크 구조를 사용자가 이해하기 쉬운 파일과 폴더 형태로 제공하며, 다음을 관리한다.

  • 파일 및 디렉터리 생성·삭제
  • 파일 읽기 및 쓰기
  • 파일 접근 권한 관리
  • 저장장치 공간 관리

저장장치 관리

보조 저장장치는 비휘발성이며 대량의 데이터를 저장한다. 운영체제는 저장장치의 빈 공간을 관리하고 데이터를 효율적으로 배치한다.

주요 역할:

  • 빈 공간 관리
  • 저장 공간 할당
  • 디스크 스케줄링
  • 파일과 블록 간 매핑 관리

1.7 보호와 보안

보호 (Protection)

보호는 컴퓨터 시스템 내부 자원에 대한 접근을 제어하는 것이다.

예시:

  • 한 프로세스가 다른 프로세스의 메모리를 침범하지 못하게 함
  • 사용자 권한에 따라 파일 접근 제한
  • 일반 프로그램이 특권 명령어를 실행하지 못하게 함

보안 (Security)

보안은 외부 또는 내부의 악의적인 공격으로부터 시스템을 지키는 것이다.

예시:

  • 사용자 인증
  • 암호화
  • 접근 권한 검사
  • 악성 코드 방지

보호 vs 보안
보호가 시스템 내부의 올바른 자원 사용을 다룬다면, 보안은 외부 공격이나 침입으로부터 시스템을 지키는 개념에 가깝다.


1.8 가상화

가상화는 하나의 물리적 컴퓨터 위에서 여러 개의 실행 환경을 제공하는 기술이다.

  • 하나의 물리적 머신에서 여러 운영체제를 실행 가능
  • 각 가상 머신은 독립된 컴퓨터처럼 동작
  • 하이퍼바이저(Hypervisor) 가 물리 자원을 나누어 관리

대표적인 예시:

  • VMware
  • VirtualBox
  • Hyper-V
  • Docker (전통적인 VM과 다르지만, OS 수준 가상화와 관련 있음)

가상화를 사용하면 서버 자원을 효율적으로 활용할 수 있고, 개발 및 테스트 환경을 쉽게 분리할 수 있다.


1.9 커널 자료구조

운영체제 내부에서도 다양한 자료구조가 사용된다.

자료구조활용 예시
리스트 (List)프로세스 목록, 장치 목록 관리
스택 (Stack)함수 호출, 인터럽트 처리, 문맥 저장
큐 (Queue)CPU를 기다리는 프로세스, 입출력 대기 요청 관리
트리 (Tree)파일 시스템 디렉터리 구조 표현
해시 테이블 (Hash Table)빠른 검색이 필요한 경우
비트맵 (Bitmap)메모리 블록이나 디스크 블록의 사용 여부 표시

운영체제는 단순히 하드웨어를 제어하는 프로그램이 아니라, 내부적으로 복잡한 자료구조와 알고리즘을 사용하여 자원을 효율적으로 관리하는 시스템이다.


정리

핵심 내용
1.1OS의 역할: HW와 사용자 사이의 중개자, 자원 관리자
1.2사용자 관점(편의성) vs 시스템 관점(자원 관리)
1.3인터럽트, 저장 장치 계층, DMA
1.4단일·다중(SMP/AMP)·클러스터 처리기 시스템
1.5부트스트랩, 다중프로그래밍, 다중태스킹, 사용자/커널 모드, 시스템 콜, 타이머
1.6프로세스·메모리·파일·저장장치 관리
1.7보호(내부 제어) vs 보안(외부 공격 방어)
1.8가상화: 하이퍼바이저, VM
1.9커널 내부의 자료구조 (리스트, 스택, 큐, 트리, 해시, 비트맵)
profile
# h

0개의 댓글