Introduction

Kamator0·2026년 4월 12일

현대 운영체제 (Modern Operating Systems)

1. 서버 및 데스크톱용 운영체제 (Operating systems for servers and desktops)

  • Windows 10, Mac OS, Linux(펭귄 마스코트 Tux), Sun Microsystems의 Solaris 등
  • 일반 사용자의 PC나 기업 서버에서 이용된다 .

2. 모바일 운영체제 및 임베디드 시스템 (Mobile OS & Embedded systems)

  • 스마트폰(iPhone 등), 웨어러블 기기, 화성 탐사 로봇 같은 임베디드 시스템
  • iOS, Android 등이 대표적이다.
  • 임베디드 시스템(embedded system)이란 특정 목적을 위해 설계된 컴퓨터 시스템으로,
    가전제품, 자동차, 의료기기 등에 내장된다.

3. 웹 서버 및 멀티미디어 시스템용 운영체제 (Operating systems for web servers and multimedia systems)

  • 대규모 서버 랙(rack)에서 동작하는 OS
  • 웹 서비스, 스트리밍, 데이터 센터 등에 사용된다.

컴퓨터 시스템의 4가지 구성 요소 (Four Components of a Computer System)

1. 하드웨어 (Hardware) — 최하위 계층

  • 하드웨어는 기본적인 컴퓨팅 자원을 제공한다. CPU(중앙처리장치), 메모리(RAM), I/O 장치(키보드, 마우스, 디스크, 모니터 등)가 포함된다.
    CPU는 실제 연산을 수행하고, 메모리는 데이터를 임시 저장하며, I/O 장치는 외부와의 입출력을 담당한다.

2. 운영체제 (Operating System) — 하드웨어 바로 위

  • 다양한 응용 프로그램과 사용자 사이에서 하드웨어의 사용을 제어하고 조율한다.
    ex : 두 프로그램이 동시에 프린터를 사용하려 할 때, OS가 순서를 정해준다.

3. 시스템 및 응용 프로그램 (System and Application Programs)

  • 시스템 자원을 사용하여 사용자의 컴퓨팅 문제를 해결하는 방법을 정의한다.
    ex : 워드프로세서(Word processors), 컴파일러(compilers), 웹 브라우저(web browsers), 데이터베이스 시스템(database systems), 비디오 게임(video games)
    이 프로그램들은 OS가 제공하는 서비스(시스템 콜)를 사용하여 하드웨어에 접근한다.

4. 사용자 (Users) — 최상위 계층

  • 사람뿐 아니라 기계나 다른 컴퓨터도 사용자가 될 수 있다.
    ex : 사람이 키보드로 입력하는 것, 다른 서버가 네트워크로 요청을 보내는 것 모두 "사용자"에 해당한다.

운영체제가 없다면? (What if we didn't have an Operating System?)

운영체제 없이 프로그램을 실행하는 과정을 생각해보자.

  1. 소스 코드(Source Code)를 작성한다.
  2. 컴파일러(Compiler)로 소스 코드를 컴파일하여 오브젝트 코드(Object Code, 기계어)를 만든다. 이 오브젝트 코드를 하드웨어에서 실행해야 한다.

그런데 문제가 생긴다:

  1. 오브젝트 코드를 하드웨어에 어떻게 올리나? — 파일 시스템이 없으니 디스크에서 메모리로 코드를 로드하는 것 자체가 불가능하다.
  2. 결과를 어떻게 출력하나? — 프린터나 모니터를 제어하는 드라이버가 없으니 출력할 수 없다.

운영체제란? (What is Operating System?)

운영체제의 목표

  1. 사용자 프로그램을 실행한다
  2. 표준 서비스 라이브러리를 제공하여 사용자 문제 해결을 쉽게 한다
  3. 컴퓨터 시스템을 편리하게 사용할 수 있도록 한다
  4. 컴퓨터 하드웨어를 효율적으로 사용한다

운영체제의 정의

  1. 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중재자(intermediary) 역할을 하는 프로그램이다.
  2. 자원을 제어하고 할당하는 공통 기능이 하나의 소프트웨어로 통합된 것이다.
  3. 컴퓨터에서 항상 실행 중인 하나의 프로그램으로, 보통 커널(kernel)이라고 부른다.
    • 커널은 OS의 핵심 부분으로, 컴퓨터가 켜져 있는 동안 메모리에 항상 상주하면서 프로세스 관리, 메모리 관리 등 핵심 기능을 수행한다.
    • 커널 위에 셸(shell), GUI 등 다른 OS 구성 요소들이 올라간다.
  • 보편적으로 합의된 정의는 없다.
    "운영체제를 주문할 때 판매자가 제공하는 모든 것"이 좋은 근사치이지만, 실제로는 천차만별이다.

운영체제의 역할 (Operating System Roles)

사용자 관점 (User View)

사용자가 수행하는 작업(또는 놀이)을 극대화한다. 이 경우, 운영체제는 주로 사용 편의성(ease of use)을 위해 설계된다.
사용자는 OS의 내부 동작을 알 필요 없이, 마우스 클릭이나 키보드 입력으로 프로그램을 실행하고 파일을 관리할 수 있어야 한다.

시스템 관점 (System View)

  1. OS는 자원 할당자 (Resource Allocator)
    • 모든 자원을 관리한다
    • 충돌하는 요청들 사이에서 효율적이고 공정한 자원 사용을 결정한다
    • 프로세스 관리, 메모리 관리 등
    • ex : 프로세스 A와 프로세스 B가 동시에 CPU를 원할 때, OS가 누구에게 먼저 CPU를 줄지 결정한다.
  2. OS는 제어 프로그램 (Control Program)
    • 프로그램의 실행을 제어하여 오류(errors)와 컴퓨터의 부적절한 사용(improper use)을 방지한다.
    • ex : 어떤 프로그램이 다른 프로그램의 메모리 영역에 접근하려 하면 OS가 이를 차단한다.

운영체제 구조 (Operating System Structure)

하드웨어 계층 (최하위)

  • Keyboard(키보드), Disk(디스크), Monitor(모니터), Network card(네트워크 카드)
    물리적 장치들이 위치한다.

I/O Management (I/O 관리)

  • 하드웨어 바로 위에서 장치들과의 입출력을 관리한다.
커널 핵심 서브시스템들 (Operating System / Kernel)
  • Process Management (프로세스 관리 서브시스템): 프로세스의 생성, 삭제, 스케줄링 등을 담당
  • Memory Management (메모리 관리): RAM의 할당/해제, 가상 메모리 등을 관리
  • File Management (파일 관리): 파일의 생성, 삭제, 읽기, 쓰기 등을 관리
  • Network Management (네트워크 관리): 네트워크 통신을 관리
  • Security System Mgmt (보안/시스템 관리): 시스템 보안과 접근 제어를 담당
  • Storage Core (저장소 코어): 저장소의 핵심 기능

System Call Interface (시스템 콜 인터페이스)

  • 커널과 응용 프로그램 사이의 경계이다.
    응용 프로그램은 시스템 콜을 통해 커널 서비스를 요청한다.

응용 프로그램 (최상위)

  • Shell(셸): 명령어 해석기. 사용자가 입력한 명령을 OS에 전달한다.
  • Word(워드): 워드프로세서 응용 프로그램
  • Internet Explorer(인터넷 익스플로러): 웹 브라우저

핵심 포인트: 응용 프로그램은 직접 하드웨어에 접근하지 않고, 반드시 시스템 콜 인터페이스를 통해 커널에 요청한다. 커널 내부에는 프로세스, 메모리, 파일, 네트워크, I/O 등의 서브시스템이 있다.

다중 프로그래밍/다중 작업 (Multiprogramming/Multitasking)

  1. 단일 사용자나 단일 작업은 CPU와 I/O 장치를 항상 바쁘게 유지할 수 없다.

    • ex : 프로그램이 디스크에서 파일을 읽는 동안(I/O 대기), CPU는 아무것도 하지 않고 놀고 있다. 이것은 CPU 자원의 낭비이다.
  2. 시스템 내 전체 작업의 일부를 메모리에 유지한다.

  3. 한 작업이 대기해야 할 때(예: I/O를 기다릴 때), OS가 다른 작업으로 전환한다.
    다중 프로그래밍을 지원하기 위해 필요한 서브시스템

다중 프로그래밍을 지원하기 위해 필요한 서브시스템

  1. 메모리에서 실행 중인 프로그램 → 프로세스
    • 프로그램이 메모리에 올라가면 프로세스가 된다
  2. 여러 작업이 동시에 실행 준비되면 → CPU 스케줄링
    • 누가 먼저 CPU를 사용할지 결정
  3. 프로세스가 메모리에 다 안 들어가면, 스와핑으로 넣었다 뺐다 한다
    • 메모리 관리의 일부
  4. 가상 메모리로 메모리에 완전히 올라가지 않은 프로세스도 실행 가능
    • 프로세스의 일부만 메모리에 있어도 실행 가능

(Process Management)

What is process ?

  • 프로세스란 실행 중인 프로그램이다.
    - (program)은 디스크에 저장된 정적인 코드이고, (process)는 그 코드가 메모리에 올라가서 실행되고 있는 동적인 상태이다.
  • 프로세스는 여러 자원을 가진다: CPU 시간, 메모리 공간, I/O 장치, 파일, 데이터

시스템에는 많은 프로세스가 있으며, 일부는 사용자 프로세스, 일부는 운영체제 프로세스이다. 이들이 하나 이상의 CPU에서 동시에(concurrently) 실행된다.

  • CPU를 프로세스/스레드 사이에서 다중화(multiplexing)하여 동시성을 달성한다.
    - 즉, CPU 하나가 매우 빠르게 여러 프로세스를 번갈아 실행하여 동시에 실행되는 것처럼 보이게 한다.

프로세스 관리의 주요 활동

  • 사용자 프로세스와 시스템 프로세스의 생성과 삭제
  • 프로세스의 일시 중단(suspend)과 재개(resume)
  • 프로세스 동기화(synchronization) 메커니즘 제공
  • 프로세스 통신(communication) 메커니즘 제공

프로세스 = 실행 중인 프로그램. OS는 프로세스의 생성부터 삭제까지 전체 생명주기를 관리한다.

Memory Management

메인 메모리의 용도 — CPU와 I/O 장치가 공유하는 빠르게 접근 가능한 데이터 저장소이다.

  • 메인 메모리(RAM)는 디스크보다 훨씬 빠르지만, 용량이 제한적이고 전원이 꺼지면 데이터가 사라진다(휘발성).
  • CPU는 직접 디스크에 접근하지 못하고, 반드시 메인 메모리를 거쳐야 한다.

메모리 관리는 CPU 활용률과 사용자에 대한 컴퓨터 응답 속도에 중요한 영향을 미친다.

  • 메모리 관리가 비효율적이면 → 프로세스가 메모리에 올라가지 못하고 대기 → CPU가 놀게 됨 → 전체 성능 저하

핵심 포인트: 메모리는 CPU와 I/O 장치 사이의 다리 역할을 하며, 효율적인 메모리 관리가 시스템 전체 성능을 좌우한다.

파일 및 저장소 관리 (File and Storage Management)

파일 시스템 관리 (File-System Management)

  • 물리적 속성을 논리적 저장 단위인 파일(file)로 추상화한다
  • 파일은 보통 디렉토리(directory, 폴더)로 조직화된다
  • 파일과 디렉토리의 생성 및 삭제
  • 파일과 디렉토리를 조작하기 위한 기본 연산(primitives) 제공

"추상화"란 복잡한 하드웨어(디스크의 실린더, 트랙, 섹터)를 사용자가 이해하기 쉬운 개념(파일, 폴더)으로 바꾸는 것이다.

저장소 관리 (Storage Management)

  • 디스크와 SSD는 메인 메모리에 맞지 않는 데이터나 장기간 보관해야 하는 데이터를 저장하는 데 사용된다.
  • Free-space management (빈 공간 관리): 디스크에서 사용 가능한 빈 공간을 추적한다.
  • Storage allocation (저장 공간 할당): 파일에 디스크 공간을 할당한다.
  • Disk scheduling (디스크 스케줄링): 디스크 접근 요청의 순서를 최적화한다.

I/O 서브시스템 (I/O Subsystem)

OS의 목적 중 하나는 하드웨어 장치의 특이한 점(peculiarities)을 사용자에게 숨기는 것이다.

  • ex : 사용자는 "파일을 저장한다"라고만 하면 되지, 디스크 헤드가 어느 실린더에 있고 어느 섹터에 기록해야 하는지 알 필요가 없다. 이것이 OS의 추상화이다.

I/O 서브시스템의 역할

  • 캐싱 (Caching)
    - 자주 접근하는 데이터를 더 빠른 저장소에 저장하여 성능을 향상시킨다
  • 일반적인 장치 드라이버 인터페이스 (General device-driver interface)
    - 모든 장치에 대해 통일된 인터페이스를 제공한다
  • 특정 하드웨어 장치를 위한 드라이버(Drivers for specific hardware devices)
    - 각 장치에 맞는 전용 드라이버가 실제 장치를 제어한다

핵심 포인트: OS의 I/O 서브시스템은 다양한 하드웨어 장치의 차이를 숨기고, 응용 프로그램에게 통일된 인터페이스를 제공한다.

이중 모드 동작 (Dual-mode Operation)

왜 이중 모드가 필요한가?

  • 이중 모드 동작은 OS가 자기 자신과 다른 시스템 구성 요소를 보호할 수 있게 한다.
    - ex : 만약 모든 프로그램이 하드웨어에 직접 접근할 수 있다면, 악성 프로그램이나 버그가 있는 프로그램이 시스템 전체를 망가뜨릴 수 있다.

두 가지 모드

  1. 커널 모드 (Kernel Mode) — "supervisor" 또는 "protected" 모드라고도 한다.
  • OS 커널이 실행되는 모드
  • 모든 명령어를 실행할 수 있고, 하드웨어에 직접 접근할 수 있다.
  1. 사용자 모드 (User Mode)
  • 일반 프로그램이 실행되는 모드
  • 일부 명령어/연산이 금지(prohibited)된다.

구체적 예시

  • 사용자 모드에서는 페이지 테이블(page table)을 수정할 수 없다. 수정을 시도하면 → 예외(Exception)가 발생한다.
  • 페이지 테이블은 가상 메모리와 물리 메모리의 매핑 정보를 담고 있다. 만약 일반 프로그램이 이것을 마음대로 수정할 수 있다면, 다른 프로세스의 메모리에 접근하거나 시스템을 파괴할 수 있다.

핵심 포인트: 사용자 모드에서는 제한된 명령만 실행 가능하고, 위험한 명령(특권 명령)은 커널 모드에서만 실행된다. 이것이 OS의 보호 메커니즘의 기초이다.

예외와 인터럽트 (Exceptions/Interrupts)

  • 정의
    - 프로세서의 정상적인 실행을 방해하고, 프로세서가 특수 명령(special instructions)을 실행하도록 하는 모든 이벤트이다.

  • 예외 (Exceptions) — 내부 이벤트
    - 프로세서 명령어의 실행에 의해 발생하는 내부 이벤트이다.

    • 예외 종류
      • 정렬 예외 (Alignment exception)
        프로세서가 홀수 메모리 주소에서 읽기/쓰기를 시도할 때 발생
      • 산술 연산 예외 (Arithmetic operation)
        Division by zero0으로 나누기를 시도할 때 발생
      • TRAP
        1. TRAP 소프트웨어 인터럽트. 시스템 콜을 호출할 때 의도적으로 발생시킨다
        2. TRAP은 특별한 예외로, 프로그램이 의도적으로 발생시킨다. 시스템 콜을 호출할 때 TRAP 명령을 사용하여 커널 모드로 전환한다.
  • 인터럽트 (Interrupts) — 외부 이벤트
    - 프로세서 명령어의 실행과 관련 없는 외부 이벤트에 의해 발생하는 전기 신호이다.
    외부 이벤트의 출처는 일반적으로 외부 하드웨어 장치이다.

  • 인터럽트 예시
    - 임베디드 보드의 리셋 버튼을 누를 때장치에서 생성되는 전기 신호 (예: 키보드 키를 누를 때, 디스크 읽기가 완료될 때)

핵심 포인트: 예외(Exception)는 CPU 내부에서 발생하고(소프트웨어 원인), 인터럽트(Interrupt)는 외부 하드웨어에서 발생한다. 둘 다 프로세서의 정상 흐름을 중단시키고 특수 처리 루틴으로 이동시킨다.

사용자에서 커널 모드로의 전환 (Transition from User to Kernel Mode)

그림에는 시간축(Time)을 따라 다음과 같은 흐름이 나타난다:

  1. Process 1 (사용자 모드에서 실행) → System call 발생 → 커널 모드의 System call handler가 처리 → 다시 사용자 모드로 돌아옴
  2. Process 1 (사용자 모드에서 실행) → Timer interrupt 발생 → 커널 모드의 Scheduler(스케줄러)가 다음 프로세스를 선택 → Process 2가 사용자 모드에서 실행
  3. Process 2 (사용자 모드에서 실행) → Device interrupt 발생 → 커널 모드의 Interrupt handler가 처리 → 다시 사용자 모드로 돌아옴

그리고 오른쪽에 Exception(예외) 화살표가 아래로 향하고 있어, 예외 발생 시에도 커널 모드로 전환됨을 보여준다.

사용자 모드에서 커널 모드로 전환되는 3가지 경우:

  1. 시스템 콜(System call): 프로그램이 OS 서비스를 요청할 때
  2. 타이머 인터럽트(Timer interrupt): 타임 슬라이스(time slice)가 만료되어 스케줄러가 개입할 때
  3. 장치 인터럽트(Device interrupt): 하드웨어 장치가 작업 완료를 알릴 때

implementation

  • 모드 비트(Mode bit)가 하드웨어에 의해 제공된다.
    1. 모드 비트 = 0 → 커널 모드 (kernel mode)
    2. 모드 비트 = 1 → 사용자 모드 (user mode)
  • 시스템이 사용자 코드를 실행 중인지 커널 코드를 실행 중인지 구분하는 능력을 제공한다.
  • 일부 명령어는 특권 명령(privileged instruction)으로 지정되어, 커널 모드에서만 실행 가능하다.
    특권 명령의 예: I/O 장치 직접 제어, 인터럽트 비활성화, 메모리 관리 테이블 수정, 시스템 정지 명령 등
  1. 사용자 프로세스가 실행 중이다 (mode bit = 1, 사용자 모드).
    시스템 콜을 호출한다.
  2. TRAP 발생 → mode bit가 0으로 변경 → 커널 모드 진입
  3. 커널에서 시스템 콜을 실행한다.
  4. 실행 완료 후 return → mode bit가 1로 변경 → 사용자 모드 복귀
    사용자 프로세스가 계속 실행된다.

핵심 포인트: 모드 전환의 핵심은 하드웨어가 제공하는 모드 비트(mode bit)이다. 시스템 콜 시 TRAP으로 커널 모드(mode bit=0)에 진입하고, 처리 후 반환하면 사용자 모드(mode bit=1)로 돌아온다. 이 메커니즘이 OS 보호의 기초이며, 사용자 프로그램이 하드웨어를 직접 조작하지 못하도록 막는다.

0개의 댓글