01. intro

  • Haram Lee
  • 2026-04-14
  • studies / 26-1 / operating-systems

Introduction to OS

What is OS?

  • Software that converts hardware into a useful form for applications
    • 하드웨어를 응용프로그램이 쓰기 좋은 형태로 바꾸어 주는 소프트웨어. 즉, 앱이 CPU 레지스터나 디스크 섹터를 직접 다루게 하지 않고, 더 쉬운 형태로 바꾸어 제공하는 중간층.
    1. Application view
      • 응용프로그램 입장에서는 운영체제가 실행 환경을 제공하고, 하드웨어를 추상화하여 보여 준다.
      • CPU or Processors → Processes, Threads
      • Memory → Virtual memory (or virtual address spaces)
      • Storage (HDD, SSD) → Volumes, Directories, Files
      • I/O Devices → Files (ioctls)
      • Networks → Files (sockets, pipes, …)
    2. system view
      • 시스템 전체 입장에서는 운영체제가 자원 관리자로서 기능한다. CPU, 메모리, 디스크, I/O 장치 같은 자원들은 누구에게 얼마나 줄지를 관리한다.
      • sharing
      • protection
      • fairness
      • efficiency
    3. implementation view
      • 구현 관점에서는 운영체제가 event-driven 이벤트에 반응하는 소프트웨어로 기능하다. 인터럽트, 트랩, 시스템 콜 같은 사건이 생길 때마다 커널이 개입하여 처리하는 구조다.
      • Highly-concurrent, event-driven software

Main roles of OS

  1. abstraction
    • 하드웨어를 응용 프로그램이 다루기 쉬운 형태로 추상화한다. 실제 하드웨어는 CPU, 메모리, 저장장치, 각종 입출력 장치처럼 복잡한 구성 요소들로 이루어져 있지만 응용 프로그램이 이들을 직접 다루기는 어렵다. 그러므로 운영체제는 그 위에 파일, 프로세스, 가상 메모리 같은 추상적인 개념을 만들고 응용 프로그램은 이러한 인터페이스를 통해 하드웨어를 간접적으로 사용한다.
  2. protection & isolation
    • 응용 프로그램은 언제든지 버그를 가질 수 있고, 경우에 따라 악의적으로 동작할 수 있다. 따라서 운영체제는 잘못된 프로그램의 행동이 시스템을 조작하지 않도록 해야 한다.
    • 한 프로그램이 운영체제 커널의 메모리에 접근하거나, 다른 프로그램의 데이터를 훼손하거나, 시스템 자원을 독점하지 않아야 한다.
    • 이런 점에서 운영체제는 프로그램의 실행을 제한하고, 각 프로그램을 서로 분리된 환경 안에서 실행되도록 만든다.
  3. sharing resources
    • 컴퓨터의 하드웨어 자원은 한정되어 있지만, 실제로는 여러 프로그램이 동시에 실행된다. 운영체제는 이 한정된 CPU, 메모리, 저장장치, 입출력 장치를 여러 프로그램이 효율적으로 나누어 쓸 수 있도록 관리한다.
    • 즉, 하나의 물리적 자원을 여러 작업이 번갈아 사용하도록 조정하는 것이다. 이 과정을 통해 사용자는 여러 프로그램이 동시에 실행되는 것처럼 느끼지만, 실제로는 운영체제가 자원을 매우 빠르게 분배하고 조정한다.

Three Pieces

  1. virtualization
    • 각 응용 프로그램이 마치 자신만의 자원을 독점하고 있도록 느끼개 만든다. 실제로는 여러 프로그램이 하나의 CPU와 메모리를 함께 사용하지만, 운영체제는 각 프로그램에게 독립적인 실행 환경이 존재하는 것처럼 보이게 한다.
    • Processes, CPU scheduling, virtual memory
  2. Concurrency
    • 여러 사건이 동시에, 혹은 겹처 일어나는 환경에서 시스템이 올바르게 동작하도록 한다. 현대의 운영체제는 여러 스레드와 프로세스가 동시에 실행되는 환경을 기본으로 하는데, 실행 순서가 달라지만 결과 또한 달라질 수 있다. ( > 경쟁 상태, 데이터 불일치 등)
    • 운영체제는 이러한 상황을 안전하기 처리하기 위해 스레드와 동기화 기법을 제공하며, 이를 통해 동시에 일어나는 여러 작업을 정확하게 조정한다.
    • Threads, synchronization
  3. Persistence
    • 시스템이 꺼지거나 예기치 않은 오류가 발생한 뒤 정보를 올바르게 보존하는 문제를 뜻한다. 메모리는 전원이 꺼지면 내용이 사라지지만(Volatile Memory) 저장장치는 데이터를 장기적으로 보관할 수 있다.
    • 운영체제는 파일 시스템과 저장장치 관리 기능을 통해 데이터를 안전하게 기록하고, 장애가 발생하더라도 최대한 일관성을 유지하도록 설계된다.

History of OS

  1. 1st Generation (1945-55): Vacuum Tubes and Plugboards
    • OS, programming languages, assembly languages
    • ENIAC; 하드웨어를 직접 다루는 장치에 가까운 형태
  2. 2nd Generation (1955-65): Transistors and Mainframes
    • Batch systems / Architectural advances
      • 트랜지스터와 메인프레임이 등장하면서 컴퓨터의 성능과 안정성이 향상되었고, 이에 따라 배치 시스템이 사용되기 시작했다.
      • 여러 작업을 한 번에 모아 두고, 이를 순서대로 처리하는 형태. 카드 리더기, 테이프 드라이브, 라인 프린터와 같은 장치가 사용되었다. 운영체제는 메모리에 상주하면서 한 작업이 끝나면 다음 작업으로 제어를 넘기는 역할을 수행했다.
      • 다만 이 시기에는 여전히 한 번에 한 작업만 처리하는 구조였기 때문에, 입출력이 느릴 경우 CPU가 놀게 되는 비효율이 컸다. (CPU is underutilized due to the bottleneck in I/O)
  3. 3rd Generation (1965-80): Integrated Circuits (ICs)
    • 집적회로(IC)의 도입으로 컴퓨터의 가격 대비 성능이 크게 향상되었고, 디스크 드라이브와 온라인 터미널 같은 새로운 하드웨어 환경도 등장했다.
    • 다중 프로그래밍 시스템은 여러 작업을 동시에 메모리에 올려 두고 번갈아 실행함으로써 CPU 활용률을 높이려 했다. 이 과정에서 작업 스케줄링, 메모리 관리, CPU 스케줄링, 보호, 스풀링 같은 기능이 중요해졌다.
      • MFT (multiprogramming with fixed number of tasks): 메모리를 처음부터 고정된 크기의 여러 구역으로 나눠 두는 방식. 구조가 단순해서 관리하기 쉽지만, 유연성이 떨어지고 메모리 낭비가 생기기 쉽다.
      • MVT (multiprogramming with variable number of tasks): 작업 크게이 맞춰 가변적으로 공간을 배정하는 방식. 따라서 동시에 들어가는 작업 수가 고정되지 않고 달라질 수 있다. 메모리를 효율적으로 쓸 수 있다는 장점이 있지만, 단편화(fragmentation) 문제가 생길 수 있다.
    • 시분할 시스템(time-sharing system)은 CPU를 짧은 시간 단위로 나누어 여러 사용자가 번갈아 사용할 수 있도록 함으로써 응답 시간을 개선하려는 시도였다.
    • 이 과정에서 스와핑, 가상 메모리, 파일 시스템, 더 정교한 CPU 스케줄링, 동기화, 프로세스 간 통신, 대화형 셸, 더 강력한 보호 기능 등이 운영체제의 핵심 기능으로 자리 잡게 되었다.
    • MIT CTSS (1961), Multics (1965), Unix (1969)
  4. 4th Generation (1980-): LSIs & VLSIs
    • 1980년 이후에는 마이크로프로세서와 대용량 저장장치의 발전으로 개인용 컴퓨터가 보급되었고, 운영체제 역시 메인프레임 중심의 환경을 넘어 훨씬 넓은 범위로 확장되었다.
    • 이 시기의 운영체제는 그래픽 사용자 인터페이스(GUI), 멀티미디어 지원, 인터넷과 웹, 모바일 환경, 네트워크 및 분산 시스템, 머신 가상화 같은 현대적인 기능들을 포함하게 된다.
    • 즉 운영체제는 단순히 프로그램을 실행시키는 소프트웨어를 넘어, 매우 다양한 컴퓨팅 환경을 통합하고 조정하는 플랫폼으로 발전하였다.

Multics

  • Multiplexed Information and Computing Service
  • 965년에 MIT, Bell Labs, GE가 함께 시작한 시분할 운영체제 프로젝트. 많은 사용자가 동시에 접속하고 자원을 나눠 쓰는 거대한 시스템을 지향했다.
  • Multics innovations
    • Hierarchical file system
      • File, directory, pathname, working directory
      • ACLs, long names, hard/symbolic links, quota, …
    • Virtual memory, shared memory
    • Dynamic linking.
    • Implementation in a high-level language (PL/1)
    • User-level command shell
    • Logical volumes
    • Multics Relational Data Store (MRDS), Spreadsheets
    • Supporting BCPL, Basic, APL, Fortran, Lisp, C, Cobol, Algol, Pascal
    • Rated B2 by NCSC (National Computer Security Center)

Unix

  • 운영체제를 구성하는 방식이 비교적 단순하고 일관적이다.
  • 유닉스의 특징
    • Hierarchical file systems
      • Special files: uniform I/O, naming, and protection.
      • Removable file systems via mount/umount
      • i-node
    • Process control
      • fork(), exec(), wait(), exit()
      • Pipes for inter-process communication
    • Shells
      • Standard I/O and I/O redirection
      • Filters, command separators
      • Shell scripts
    • Signals

Multics vs. Unix

  • Multics
    • Top-down approach
    • 150 Man-Years for design and system programming, another 50 Man-Years for improvements
    • Too complicated, too costly hardware
    • Many novel ideas had a great impact
  • Unix
    • Bottom-up approach
    • Simplicity, elegance, and ease of use
    • Low cost hardware, university adoption
    • 2 Man-Years
    • The root of the modern operating systems
Discussion