lhywk 님의 블로그

[운영체제 OS] Operating System Overview 본문

Operating System

[운영체제 OS] Operating System Overview

lhywk 2026. 2. 1. 12:53

이 글에선 운영체제(OS)의 전반적인 개요를 다룬다.

1. 컴퓨터 구성 요소 (하드웨어)

운영체제는 물리적인 하드웨어 장치들을 효율적으로 관리하여 사용자가 편리하게 사용할 수 있도록 돕는다.

1.1 주요 하드웨어 구성

  • 중앙 처리 장치 (CPU): 컴퓨터의 두뇌로, 명령어를 해석하고 실행한다.
    • ALU (산술/논리 연산 장치): 실제적인 산술 및 논리 연산을 수행한다.
    • 제어 장치 (Control Unit): 데이터 흐름을 통제하는 지휘자 역할을 한다.
    • 레지스터 (Register): CPU 내부의 초고속 임시 저장 공간이다.
  • 주기억장치 (RAM): 휘발성 메모리로, 현재 실행 중인 프로그램과 데이터를 저장한다.
  • 저장 장치 (Storage): 비휘발성 장치(SSD, HDD)로, 데이터를 영구적으로 보관한다.
  • 입출력 및 통신 장치: 외부 세계와 소통(키보드, 모니터)하거나 네트워크(모뎀, LAN 카드)에 연결한다.

2. 명령어 실행 및 인터럽트

2.1 명령어 주기 (Instruction Cycle) 2단계

  • 반입 단계 (Fetch Stage): CPU가 메모리에서 명령어를 가져와 레지스터(IR)에 저장하고, 프로그램 카운터(PC)를 증가시킨다.
  • 수행 단계 (Execution Stage): 제어 장치가 명령어를 해독(Decode)하고 실제 연산을 수행한다.

2.2 인터럽트 (Interrupt)

  • 개념: CPU의 정상적인 실행 흐름을 잠시 멈추고 긴급한 작업을 처리하게 하는 신호
  • 필요성: CPU에 비해 매우 느린 입출력(I/O) 장치를 기다리는 동안 CPU가 다른 일을 할 수 있게 하여 효율성을 높인다. (비동기식 입출력).
  • 종류:
    • 프로그램 인터럽트 (Program Interrupt)
      • 현재 실행 중인 프로그램 내부의 문제로 인해 발생하는 인터럽트.
    • 타이머 인터럽트 (Timer Interrupt)
      • CPU 외부에 있는 하드웨어 타이머에 의해 발생하는 외부 인터럽트(External Interrupt)다.
      • 시분할 시스템에 사용.
    • 입출력 인터럽트 (I/O Interrupt)
      • 키보드, 디스크 컨트롤러 등 입출력(I/O) 장치에 의해 발생하는 외부 인터럽트.
    • 하드웨어 실패 인터럽트 (Hardware Failure Interrupt)
      • 메모리 패리티 오류(데이터 손상), 정전 등 하드웨어 문제로 인해 발생하는 외부 인터럽트.

2.3 다중 인터럽트 처리

  • 순차적 처리: 하나를 처리하는 동안 다른 인터럽트를 무시한다.
  • 중첩된 처리: 우선순위(Priority)에 따라 더 중요한 인터럽트가 발생하면 현재 처리 중인 인터럽트를 멈추고 새 인터럽트를 먼저 처리한다.

3. 메모리 계층 구조 (Memory Hierarchy)

속도, 용량, 비용의 상충 관계를 해결하기 위해 계층적으로 구성한다.

 

계층 위치 속도 용량 비용(비트당) 휘발성
레지스터 CPU 내부 최고속 최소 최고가 휘발성
캐시 (L1, L2, L3) CPU/근처 매우 빠름 작음 비쌈 휘발성
주기억장치 (RAM) 메인보드 빠름 보통 보통 휘발성
보조기억장치 (SSD/HDD) 내부/외부 느림 저렴 비휘발성

3.1 캐시 메모리 (Cache Memory)

  • 목적: CPU와 RAM 사이의 속도 차이 극복.
  • 원리: 참조 지역성의 원리(Locality of Reference)를 이용하여 자주 사용될 데이터를 미리 복사해 둔다.
  • 캐시 히트(Hit): 원하는 데이터가 캐시에 있음. 
  • 캐시 미스(Miss): 데이터가 없어 RAM에서 가져와야 함.

  • (a) 단일 캐시 (Single Cache): 가장 기본적인 구조. CPU와 주기억장치 사이에 하나의 캐시가 존재하여 둘 사이의 속도 차이를 완충한다.
    • Word Transfer: CPU와 캐시 사이에는 CPU가 당장 처리할 작은 데이터 단위(Word)가 오고 간다.
    • Block Transfer: 캐시와 주기억장치 사이에는 미래의 사용을 대비해 더 큰 데이터 덩어리(Block)가 오고 간다.
  • (b) 3-레벨 캐시 (Three-level Cache): 현대의 고성능 CPU에서 보편적으로 사용하는 다단계 구조다. 속도와 크기가 다른 여러 개의 캐시를 계층적으로 구성한다.
    • Level 1 (L1) 캐시: CPU 코어에 가장 가깝고, 가장 빠르며, 용량이 가장 작다.
    • Level 2 (L2) 캐시: L1 캐시보다 느리고 용량은 더 크다.
    • Level 3 (L3) 캐시: L2 보다 더 느리고 용량도 더 크다. 여러 CPU 코어가 공유하기도 한다.
    • 동작: CPU는 L1 캐시부터 순서대로 확인한다. L1에 없으면 L2, L2에도 없으면 L3, L3에도 없으면 비로소 주기억장치에 접근한다. 이 구조는 캐시 히트율을 극대 화하여 성능을 더욱 향상한다.

4. 입출력 통신 기술

  • 프로그램된 입출력 (Programmed l/O)
    • 처리기는 1/O 연산이 끝날 때까지 I/O 모듈의 상태를 주기적으로 체크한다.
  • 인터럽트 구동 입출력(Interrupt-driven l/O)
    • I/O 모듈이 데이터를 교환할 준비가 되면 처리기에게 인터럽트를 보낸다.
  • 직접 메모리 접근(DMA: Direct Memory Access)
    • 디바이스 제어기는 처리기의 간섭 없이 주기억장치와 I/O 모듈 의 버퍼 사이에 데이터 블록을 직접 전송한다.

5. 운영체제의 발전과 주요 기능

5.1 발전 과정

  • 순차 처리 (Serial Processing): 운영체제 없음. 사용자가 기계를 독점 사용.
  • 단순 일괄 처리 (Simple Batch): '모니터'라는 초기 OS 등장. 비슷한 작업을 묶어 자동 처리.

  • 멀티 프로그래밍 (Multiprogramming): 메모리에 여러 프로그램을 올려, 하나가 I/O를 기다릴 때 다른 프로그램을 실행하여 CPU 이용률 극대화.

  • 시분할 시스템 (Time-Sharing): CPU 시간을 타임 슬라이스(Time Slice) 단위로 쪼개어 여러 사용자에게 빠르게 배분. 대화형 작업 가능.

5.2 주요 보호 및 제어 기능

  • 메모리 보호: 프로그램이 다른 영역이나 OS 영역을 침범하지 못하게 방지.
  • 타이머: 특정 프로그램이 CPU를 독점하지 못하도록 강제 중단.
  • 특권 명령어 및 모드: 하드웨어 제어 등 위험한 명령은 커널 모드에서만 실행 가능하며, 사용자 모드의 응용 프로그램은 시스템 콜(System Call)을 통해 OS에 요청해야 함.

6. 프로세스 관리와 문맥 (Context)

  • 프로세스: 단순히 코드 덩어리가 아니라, 실행 중인 프로그램의 모든 상태를 포함하는 동적인 개념.
  • 문맥 (Context): 프로세스가 멈췄다가 다시 시작할 때 필요한 정보의 총합 (PC, 레지스터 값, 메모리 범위 등).
  • PCB (Process Control Block): 운영체제가 각 프로세스의 문맥 정보를 저장하는 데이터 구조.
  • 문맥 교환 (Context Switching): CPU가 실행하는 프로세스를 바꿀 때, 기존 프로세스의 상태를 PCB에 저장하고 새 프로세스의 상태를 복구하는 과정.

CPU가 하나의 프로세스(A)를 실행하다가 다른 프로세스(B)로 전환해야 할 때(문맥 교환)

1. 현재 CPU의 모든 레지스터 값을 프로세스A의 문맥(PCB)에 저장한다.

2. 프로세스B 의 문맥(PCB)에 저장되어 있던 레지스터 값들을 CPU로 다시 불러온다.

3. 이제 CPU는 B가 이전에 멈췄던 바로 그 지점부터 실행을 이어간다.

 

7. 운영체제 오류의 주요 원인

1. 부적절한 동기화

여러 프로세스가 협력하며 작업을 할 때, 실행 순서나 타이밍이 맞지 않아 문제가 발생하는 경우

2. 비결정적 프로그램 실행

프로그램의 최종 실행 결과가 실행할 때마다 달라지는 현상으로, 주로 경쟁 상태 때문에 발생

3. 상호배제 실패

공유 자원에는 한 번에 하나의 프로세스만 접근해야 한다는 원칙을 상호배제. 이 원칙이 깨질 때 문제가 발생

4. 교착상태

두 개 이상의 프로세스가 서로 상대방의 작업이 끝나기만을 기다리며, 결국 아무것도 진행하지 못하고 무한 대기에 빠지는 상황

출처

  • William Stallings, 운영체제 내부구조 및 설계원리

'Operating System' 카테고리의 다른 글

[운영체제 OS] Memory Management  (1) 2026.02.01
[운영체제 OS] Deadlock  (1) 2026.02.01
[운영체제 OS] Concurrency  (0) 2026.02.01
[운영체제 OS] Thread  (0) 2026.02.01
[운영체제 OS] Process  (0) 2026.02.01