공부/컴퓨터

[운영체제] 1. Introduction

slvjuju 2026. 2. 28. 19:32

참고 교재: Operating System Concepts (10th Ed) - A.Silberschatz, P.Galvin, and G.Gagne

 

운영체제의 목표

  1. 사용자 프로그램을 실행하고, 사용자의 문제 해결을 쉽게 만든다.
    • 사용자가 직접 하드웨어를 다루지 않고 운영체제를 통해 쉽게 프로그램을 실행할 수 있도록 해줌.
    • 예: Windows에서 클릭 한 번으로 프로그램을 실행
  2. 컴퓨터 시스템을 편리하게 사용할 수 있도록 한다.
    • GUI(그래픽 인터페이스), 파일 탐색기, 작업 관리자 같은 기능 제공
  3. 컴퓨터 하드웨어를 효율적으로 사용한다.
    • CPU, 메모리, 디스크 등의 자원을 최적화하여 빠르고 안정적인 성능 제공
    • 멀티태스킹(여러 프로그램을 동시에 실행), 메모리 관리, 디스크 스케줄링 등을 통해 성능 극대화

Computer system - 4 components

  1. Hardware (CPU, memory, I/O devices)
  2. Operating system (controls & coordinates use of hardware)
  3. Application programs (Word processors, compilers, web browsers, database systems, video games)
  4. Users (people, machines, other computers)
  • 컴퓨터 시스템 계층구조

운영체제 역할

  • resource allocator
    • manages all resources
    • conflicting requests 중에서 efficient and fair resource를 결정
  • control program
    • 에러나 improper use 를 막기 위해 execution of programs을 control

운영체제 구성

  1. kernel : 운체 핵심! 항상 실행되는 프로그램
    • Windows NT 커널, Linux 커널, macOS XNU 커널
  2. system programs : 운영체제와 관련 - 운영체제 기능 확장, 시스템 관리
    • 명령어 인터프리터(Shell, 터미널)
    • 시스템 설정 도구(Control Panel, 설정 앱)
    • 디스크 관리 프로그램
    • 파일 탐색기
  3. application programs (응용 프로그램) : 사용자가 실행 - 운영체제의 직접적인 일부는 아니지만, 운영체제 위에서 동작
    • 웹 브라우저(Chrome, Firefox)
    • 오피스 프로그램(MS Word, Excel)
    • 미디어 플레이어(VLC, Windows Media Player)
    • 게임
    1. 사용자가 응용 프로그램 실행 (ex. 웹 브라우저 실행)
    2. 운영체제가 프로그램을 로드하고 CPU, 메모리, 디스크 자원을 할당
    3. 응용 프로그램이 동작하면서 사용자의 입력을 처리
    4. 사용자가 프로그램을 종료하면 운영체제가 메모리에서 프로그램 제거

Computer System Organization

공유 버스 (Common Bus) & 공유 메모리 (Shared Memory)

  • CPU와 I/O 장치가 데이터를 주고받기 위해 사용하는 통로
  • CPU와 디바이스 컨트롤러가 공유된 메모리에 접근할 때 경쟁이 발생할 수 있음

 

Computer Startup

  • bootstrap program : 컴퓨터가 처음 켜질 때 실행되는 프로그램. 운영체제를 로드하고 시스템을 초기화. → 운영체제 불러올 준비
    • 저장 위치: ROM / EEPROM - firmware, 전원이 꺼져도 유지됨
    • 시스템 하드웨어 초기화
    • OS kernel을 로드하고 운영체제 실행 시작
    • 부트로더 → 운영체제 RAM으로 로드
    • 커널 실행 → 운영체제 시작!

Computer-System Operation

  • I/O 와 CPU는 독립적으로 실행 가능
    • CPU는 프로그램 실행 중
    • I/O 장치는 데이터를 주고받음
  • 디바이스 컨트롤러
    • 특정 I/O 장치(예: 키보드, 마우스, 하드디스크)를 관리하는 전용 하드웨어
    • 각 디바이스 컨트롤러마다 "로컬 버퍼(Local Buffer)"를 가짐
    • I/O 장치와 메모리 사이의 데이터 전송을 담당
  • CPU는 데이터를 주 메모리 ↔ 로컬 버퍼로 이동시킴
  • I/O 는 장치에서 컨트롤러의 로컬 버퍼로 데이터를 전송
  • I/O 장치가 작업 완료 시 interrupt를 발생시켜 CPU에게 알려줌
    • interrupt : 현재 작업을 멈추고 특정 작업을 하도록 함

Common Functions of Interrupts

  • Interrupt : CPU가 특정 이벤트(예: I/O 완료, 오류 발생, 사용자 입력 등)에 의해 현재 실행 중인 작업을 중단하고 즉시 특정 작업(인터럽트 서비스 루틴)을 수행하는 메커니즘 → CPU가 불필요하게 대기 X
  1. 인터럽트 발생 → CPU는 현재 작업을 중단하고 인터럽트 처리 시작
    • CPU는 현재 실행 중이던 명령어의 주소를 저장하고, 인터럽트 서비스 루틴(ISR)의 주소로 점프
  2. 인터럽트 서비스 루틴(ISR) 실행
    • 인터럽트에 대한 처리를 수행 (예: 키보드 입력 처리, I/O 완료 알림 등)
  3. 인터럽트 서비스 완료 → 원래 작업 복귀
    • CPU는 저장된 주소를 다시 불러와 원래 실행 중이던 작업을 재개
    • 마치 인터럽트가 발생하지 않은 것처럼 정상적으로 작업이 이어짐
  • 트랩(Trap) : 사용자가 의도적으로 요청하는 소프트웨어 인터럽트
    • 예: 시스템 호출(System Call) (파일 열기, 프로세스 생성 등)
    • 운영체제가 사용자 요청을 처리하기 위해 발생
  • 예외(Exception) : 오류 발생으로 인해 자동으로 생성되는 인터럽트
    • 예: 0으로 나누기 오류(Divide by Zero), 페이지 폴트(Page Fault)
    • 프로그램 실행 중 오류가 발생하면 즉시 인터럽트가 발생하여 문제를 해결하거나 종료
  • 운영체제는 interrupt를 기반으로 동작!

Interrupt Timeline

 

  • CPU 상태:
    • "User process executing" → 사용자 프로세스 실행 중
    • "I/O interrupt processing" → I/O 인터럽트 처리 중
  • I/O 장치 상태:
    • "Idle" → I/O 장치가 대기 상태
    • "Transferring" → I/O 장치가 데이터를 전송 중

 

 

  • CPU가 I/O 요청을 보냄.
  • I/O 컨트롤러가 I/O 작업을 수행.
  • 작업이 완료되면 인터럽트가 발생.
  • CPU는 인터럽트 핸들러를 실행하여 결과를 처리.
  • CPU는 원래 하던 작업으로 복귀.
  1. IO가 종료되면서 interrupt
  2. CPU 중단되면서 interrupt (4와 다름)

Storage Structure

  • 주기억장치(Main memory) : CPU가 직접 접근할 수 있는 유일한 대용량 저장 장치 (휘발성, 고속)
  • 보조기억장치(Secondary storage) : 주기억장치를 확장한 개념으로, 대용량의 비휘발성(Non-volatile) 저장 공간을 제공
  • 하드디스크(Hard disks) : 금속 또는 유리 플래터에 자성 기록 물질이 코팅된 저장 장치
    • 디스크 표면은 트랙(tracks)으로 나뉘고, 트랙은 섹터(sectors)로 다시 분할됨.
    • 디스크 컨트롤러(disk controller)는 장치와 컴퓨터 간의 논리적 데이터 교환을 담당함.
  • 솔리드 스테이트 디스크(Solid-state disks, SSD) : 하드디스크보다 빠르고, 비휘발성 저장장치
    • 다양한 기술이 사용됨.
    • 점점 더 널리 사용되고 있음.
  • 저장 → Storage (한번 저장하면 지속적으로 보존) / Memory (RAM) 구분

Storage-Device Hierarchy

  • Speed / Cost / Volatility 기준에 의해 설정
  • Caching : 자주 사용하는 데이터를 더 빠른 저장소에 저장하여 성능을 향상시킴

 

I/O Structure

  • 일반적인 범용 컴퓨터 시스템은 CPU와 여러 개의 디바이스 컨트롤러(Device Controller-CPU와 I/O 연결)로 구성되며, 이들은 공통 버스(Common Bus)를 통해 연결된다.
  • Device Controller
    • 특정 I/O 장치(예: 키보드, 마우스, 하드디스크)를 관리하는 하드웨어
    • CPU와 직접 연결되지 않고 공통 버스(Common Bus)를 통해 데이터를 주고받음
    • 자체적인 로컬 버퍼(Local Buffer) 저장소와 특수 목적 레지스터(Special-Purpose Registers)를 가지있음 → 데이터 저장, 처리 가능
  • 운영체제는 각 디바이스 컨트롤러에 대한 디바이스 드라이버(Device Driver)를 제공
    • 운영체제(OS)가 각 디바이스 컨트롤러와 통신할 수 있도록 도와주는 "소프트웨어” (중개자)
    • 디바이스 드라이버는 디바이스 컨트롤러를 이해
    • 운영체제의 나머지 부분이 해당 장치를 일관된 방식으로 사용할 수 있도록 인터페이스를 제공
  • I/O 처리 방식 - 동기식
    • I/O 완료 후 사용자 프로그램 실행
    • I/O 작업이 끝날 때까지 CPU가 기다림
    • CPU는 다음 인터럽트가 발생할 때까지 대기(Wait Instruction) 상태가 됨.
    • 한 번에 하나의 I/O 요청만 처리 가능 → 멀티태스킹 불가능
    • CPU는 대기하는 동안 메모리에 대한 접근을 두고 다른 프로세스와 경쟁(Wait Loop) 할 수 있음.
  • I/O 처리 방식 - 비동기식
    • I/O 완료 전에 사용자 프로그램 실행
    • I/O 작업이 시작되면 CPU는 즉시 사용자 프로그램 실행을 계속
    • I/O가 끝나면 인터럽트(Interrupt)로 CPU에게 알림
    • CPU는 I/O가 끝날 때까지 다른 작업을 수행 가능 → 멀티태스킹 가능!
    • 운영체제(System Call)를 통해 사용자 프로그램이 I/O 완료를 기다릴 수 있도록 요청할 수 있음
    • 장치 상태 테이블(Device-Status Table) 은 각 I/O 장치의 유형, 주소 및 현재 상태 정보를 저장
    • 운영체제는 I/O 장치 테이블을 조회하여 장치 상태를 확인하고, 인터럽트를 처리할 때 테이블을 업데이트

Two I/O Methods

  • Synchronous(동기식) : 시간적인 바운드 개념을 갖고 있음 (메세지 전송 → 특정 시간 내에 reponse 받음) → 비효율적일수 있음.
  • Asynchronous(비동기식) : 시간 X (보내고 response 기다리지 않고 control 넘김)

Computer-System Architecture

  1. 단일 프로세서 시스템(Single-Processor Systems)
    • 하나의 메인 CPU가 존재하며, 사용자 프로세스의 명령어를 포함한 일반적인 명령어 세트(instruction set)를 실행할 수 있음.
    • 독립적인 시스템들이 하나로 연결
  2. 다중 프로세서 시스템(Multiprocessor Systems)
    • Parallel Systems / Tightly Coupled Systems
    • 장점:
      • 처리량 증가(Increased throughput): 더 많은 작업을 더 적은 시간에 수행할 수 있음.
      • 규모의 경제(Economy of scale): 같은 성능을 내는 여러 개의 단일 프로세서 시스템보다 비용이 절감됨.
      • 신뢰성 증가(Increased reliability): 한 프로세서가 고장 나도 시스템이 중단되지 않음. (문제가 발생했을때 대체할 수 있는 것이 있음)
      • Fault tolerance : 특정 프로세서가 고장 나더라도 시스템이 계속 작동할 수 있음. → 네트워크, db, 서버…
      • 결국 이를 지원하기 위해선 동일한 내용이 똑같이 존재해야됨. 즉 여러개 존재할수록 좋겠지만 cost가 많이 나가겠지.
  3. 비대칭 멀티프로세싱(Asymmetric Multiprocessing)
    • 마스터 프로세서(Master Processor)가 시스템을 제어하고,
    • 슬레이브 프로세서(Slave Processor)들에게 작업을 할당함.
    • scheduling을 담당하는 processor 존재
  4. 대칭 멀티프로세싱(Symmetric Multiprocessing, SMP)
    • 모든 프로세서가 동등한 관계(Peer-to-Peer 관계)를 가짐.
    • 마스터-슬레이브 구조가 없으며, 모든 프로세서가 작업을 균등하게 나눠 처리함.

레지스터(Registers)

  • CPU 내부에서 가장 빠른 저장 공간
  • 연산에 필요한 데이터를 저장하고 즉시 사용 가능

캐시(Cache)

  • RAM보다 빠른 임시 저장 공간
  • 자주 사용하는 데이터를 저장하여 CPU가 빠르게 접근 가능

Dual-Core Design

  • Multi-chip
    • 여러 개의 CPU 칩이 함께 연결된 형태.
    • 예: 듀얼 프로세서(서로 다른 두 개의 CPU가 하나의 시스템에서 동작).
  • Multicore
    • 하나의 CPU 칩 안에 여러 개의 코어가 들어 있는 구조.
    • 코어마다 자신의 레지스터(registers)와 캐시(cache)를 가짐, 하지만 공유된 메모리(memory)를 사용함.
    • 그림을 보면 CPU core_0, CPU core_1 각각이 자신만의 레지스터와 캐시를 가지고 있음.

*참고

구분 레지스터(Register) 캐시(Cache) RAM (주기억장치)

속도 가장 빠름 (CPU 클록 속도) 빠름 (L1, L2, L3 캐시) 비교적 느림
위치 CPU 내부 CPU 내부 또는 가까운 위치 메인 메모리 (메인보드)
용량 매우 작음 (몇 바이트~KB) 중간 (몇 MB~GB) 큼 (GB~TB)
목적 CPU 연산을 위한 임시 데이터 저장 자주 사용하는 데이터를 저장하여 속도 향상 실행 중인 프로그램과 데이터를 저장

Clustered Systems

클러스터 구조 : system(독립적)들이 서로 모여있고 연결되어있음 → 하나의 network로 연결!

  • storage-area network (SAN) : 저장 공간을 공유
  • high-availability : 장애 발생시에도 시스템 계속 운영
    • 비대칭 클러스터(Asymmetric Clustering)
    • → 한 대의 컴퓨터가 대기 모드(hot-standby mode) 로 대기하면서, 장애 발생 시 시스템을 takeover함.
    • 대칭 클러스터(Symmetric Clustering)
    • → 여러 개의 노드가 동시에 애플리케이션을 실행하며, 서로를 모니터링함.
  • high-performance computing (HPC) : 고성능 컴퓨팅, 병렬 처리(parallelization)를 지원하는 애플리케이션이 필요
  • distributed lock manager (DLM) : 분산 락 매니저, 여러 개의 노드에서 동시에 같은 데이터에 접근하는 충돌을 방지하기 위해 사용
  • ↔ 다중 프로세서 시스템 : 하나의 시스템 내 여러 개의 CPU

Operating-System Structure

  • Multiprogramming : CPU가 1개든 n개든 상관X → 각각의 유저들이 자신의 작업이 수행되는 것으로 느낄 수 있음! (여러 개의 작업이 동시에 실행되는 것처럼 보이게 함)
    • Job scheduling : 메모리 내에 적재되는 작업의 수를 control. (job Queue에서 선택)
  • ↔ multiprocessing : 코어의 개수에 따라! 여러 개의 CPU를 활용하여 여러 작업을 물리적으로 동시에 실행
  • Timesharing (multitasking) : 시분할 시스템
    • CPU가 여러 작업을 빠르게 전환하면서 사용자가 동시에 여러 개의 프로그램을 실행하는 것처럼 보이게 함.
    • 사용자와 상호작용(Interactive Computing) 가능
    • 응답 시간(Response Time)이 1초 이내여야 함
    • 각 사용자는 적어도 하나의 프로세스를 메모리에 유지해야 함.
    • CPU scheduling : CPU가 현재 main memory에서 대기하는 작업 중 어떤 작업을 수행할지 decision을 내리는 과정 (빠르게, 자주, 메모리에 올라온 작업 중 선택)
    • swapping : 메인메모리에 당장 필요한 기능을 집어넣기 위해 그 안에 있던 것들 중 일부가 빠져나감. (replacement)
    • → 필요 없는 프로세스를 디스크로 내보내고, 새로운 프로세스를 메모리에 로드
    • Virtual memory : 가상 메모리 - 메모리 자체는 한정되어있는데 메모리 확장한것처럼, 더 크게 사용하는 것처럼 느껴짐. (물리적 - 있는걸 빼고 새로운걸 추가했을 뿐)→ 필요한 부분만 메모리에 적재하고 나머지는 디스크에서 가져오는 방식 (페이징 기법)
    • → 실제로 메모리가 부족할 때 디스크 공간을 RAM처럼 사용

*참고

구분 멀티프로그래밍 (Multiprogramming) 시분할 시스템 (Time-sharing)

목적 CPU가 항상 작업을 실행하도록 함 여러 사용자가 동시에 시스템을 사용 가능하도록 함
작업 전환 한 작업이 I/O를 기다릴 때 다른 작업을 실행 CPU가 짧은 시간마다 여러 작업을 빠르게 전환
응답 속도 사용자와의 상호작용 필요 없음 빠른 응답 시간 (< 1초) 필요
주 사용 환경 배치 처리 시스템 (Batch System) 현대적인 OS (Windows, Linux, macOS)

Operating-System Operations

  • 운영체제는 Interrupt 기반으로 동작
    • Software error / request에 의해 exception / trap이 발생할 수 있음 (division by zero, request for operating system service)
  • 다른 프로세스에서 발생할 수 있는 문제들 : infinite loop, 다른 process 또는 OS를 수정하려는 시도
  • Dual-mode
    • User mode / kernel mode → 넘나들음
    • 하드웨어에서 Mode Bit를 제공하여 현재 실행중인 코드가 사용자 코드인지 운영체제 코드인지 구별 가능
    • Privileged Instructions (특정 명령어) : 일반적인 instruction X (커널 모드에서만)
    • System Call이 발생하면 커널 모드로 변경, 작업이 끝나면 다시 유저 모드로 복귀

Transition from User to Kernel Mode

Timer

  • infinite loop/process hogging resources 방지
  • 타이머 설정 → 운영체제가 주기적으로 카운터 감소 → 카운터 값이 0이 되면 인터럽트 발생 → OS가 인터럽트 처리하여 프로세스 제어
  • Timeout → 강제 종료 / 추가 실행 시간 부여
  •  

 

Process Management

  • program : passive entity!! storage에 저장되어 있는 것 (정적으로)
  • process : active entity!! (실행되고있는) - 시스템에서 작업 단위로 동작
    • process의 resources : CPU, memory, I/O, files, Initialization data
    • 프로세스가 종료되면 사용했던 리소스를 OS가 회수 (X→메모리누수/시스템 과부하)
  • 메모리로 로딩이 되었다고 해서 실행중인것은 x, 실행할 준비가 된 것.
  • Thread : light (process-heavy) 하나의 프로세스 내에서 여러개 생성 가능 → 공유할 수 있는 부분을 최대한 많이 공유함으로써 메모리 용량 자체를 적게 만듦, 빠른 실행&병렬 처리 가능 ↔ process는 독립적
    • Single-threaded Process : 하나의 프로그램 카운터(PC)만 존재, 순차적으로 실행되고 하나의 작업이 끝날때까지 다른 작업 X
    • Multi-threaded Process : 각 스레드는 개별적인 프로그램 카운터를 가짐 → 병렬 처리 가능
  • Concurrency(동시성) : CPU가 여러 프로세스를 빠르게 전환하여 동시에 실행되는 것처럼 보이게 함
  • 운영체제는 process를 관리함
    • 프로세스 생성(create) 및 종료(delete)
    • 프로세스 일시 정지(suspending) 및 재개(resuming)
    • 프로세스 동기화 (process synchronization)
    • 프로세스 간 통신 (process communication)
    • deadlock handling

Memory Management

  • paging 기법
    • 사용하지 않는 메모리 페이지를 하드디스크(SSD)로 이동 (Page Out)
    • 필요할 때 SSD에서 다시 RAM으로 불러옴 (Page In)
    • 이 과정에서 하드디스크를 사용하는 공간 = "스왑 영역(Swap Space)" / "페이지 파일(Page File)”
  • 프로그램에 필요한 데이터는 메모리에 있어야 됨!
  • 언제, 무엇이 메모리에 있을지 결정!
  • 메모리의 어떤 부분이 누구에 의해 최근 사용되었는지 tracking
  • 어떤 process와 data가 메모리에 move into or out 되어야 하는지 결정
  • allocating / deallocating memory space as needed

Storage Management

저장한다는 개념은 같지만 규모 차이가 있음. (Storage→Tera…같이 겁나 큼)

  • File System : 운영체제가 제공하는 논리적 저장 구조
  • 저장 장치의 물리적 특성을 논리적으로 추상화
    • OS는 다양한 저장매체(디스크, 테이프 등)의 물리적 차이를 숨기고, 파일 단위로 접근할 수 있도록 제공
    • 각 저장 매체는 다른 속성을 가짐 (access speed, capacity, data transfer rate, access method-sequential access vs random access)
  • File-System → directories 단위로 묶어서!
    • 디렉토리는 계층적 구조를 가질 수 있음
  • 파일 시스템에는 사용자별 접근 권한 존재
    • 누가 어떤 파일에 접근할 수 있는지 결정 (read, write, execute)
  • 운영체제의 파일 시스템 관리 역할
    • 파일 및 디렉토리 생성, 삭제
    • 파일 조작 기능 (읽기, 쓰기, 변경) 제공
    • 파일을 보조 저장장치(디스크)와 매핑하여 저장/검색
    • 파일 백업 및 복구 기능 제공

Mass-Storage Management

대규모 스토리지 (제타...)

  • disks : 메인 메모리에 맞지 않거나 긴 시간동안 유지되어야 하는 데이터를 store
  • RAM의 한계를 보완
    • 주 메모리는 휘발성(Volatile)이라 전원이 꺼지면 데이터가 사라짐 → 데이터를 영구 저장하려면 디스크가 필요!
    • RAM보다 저장 용량이 크고, 전원이 꺼져도 데이터를 유지 가능(Non-Volatile)
  • 디스크 성능은 컴퓨터 전체 속도에 큰 영향을 줌
    • 디스크의 속도가 컴퓨터 성능의 병목(Bottleneck)이 될 수 있음
    • 디스크 서브시스템과 관련된 알고리즘(디스크 스케줄링, 저장 공간 관리 등)이 매우 중요!
  • OS activities
    • Free-space management
    • Storage allocation
    • Disk scheduling
  • Some storage need not be fast
    • Tertiary Storage(3차 저장 장치) : 속도는 느리지만 대용량 데이터를 장기간 보관하는 용도로 사용
      • Optical Storage(광학 저장장치) : CD, DVD, Blu-ray
      • Magnetic Tape(자기 테이프) : 데이터 백업 및 아카이브
    • WORM(Write-Once, Read-Many) & RW(Read-Write) 로 다양함

Caching

  • hardware, OS, software 등 다양한 레벨에서 사용
  • slower → faster storage temporarily(일시적)
  • CPU, OS, 소프트웨어는 데이터를 먼저 캐시에서 찾음
  • 캐시에 데이터가 있으면(캐시 히트, Cache Hit) → 즉시 빠르게 사용 가능
  • 캐시에 없으면(캐시 미스, Cache Miss) → 느린 저장소에서 데이터를 가져와 캐시에 저장한 후 사용
  • 원본 저장 장치보다 작음

*참고 (Performance of Various Levels of Storage)

registers(1kb) < cache(16mb) < main memory(64gb) < solid state disk(1tb) < magnetic disk(10tb)

Migration of Integer A from Disk to Register

activation 되면 메인 메모리 가져옴

각각의 코어마다 로컬 메모리(캐시)를 갖고 있음

  • Multitasking environments는 위계 상관 없이 항상 최신 값을 가져야 함!
  • cache coherency 캐시 일관성
  • → 여러 CPU가 동시에 같은 데이터를 수정할 때, 모든 CPU가 항상 최신 데이터를 유지해야됨
  • Distributed environment (분산환경) 에서는 더 복잡
    • 여러 컴퓨터(노드)가 동일한 데이터를 복제하여 저장 가능
    • 여러 컴퓨터가 같은 데이터를 공유할 때, 모든 복사본이 동일한 최신 상태를 유지해야 함!!!
    • → 싱크로가 요구됨 (분산 데이터 동기화)

I/O systems

  • 하드웨어 장치의 복잡성을 사용자로부터 숨김
    • 사용자가 하드웨어의 세부 사항을 몰라도 쉽게 입출력(I/O)을 처리 가능!
    • transparacy 제공 (투명성)

<I/O 서브시스템 구성 요소>

  • 메모리 관리 컴포넌트 (Memory-Management Component)
    • 버퍼링(Buffering): 데이터가 전송되는 동안 일시적으로 저장하는 방식
    • 캐싱(Caching): 데이터를 빠르게 접근할 수 있도록 빠른 저장소에 저장하는 방식
    • 스풀링(Spooling): 하나의 작업이 출력을 하는 동안, 다른 작업이 입력을 받을 수 있도록 겹쳐서 처리하는 방식
  • 범용 장치 드라이버 인터페이스 (General Device-Driver Interface)
    • 운영체제는 모든 장치 드라이버가 공통적으로 사용할 수 있는 인터페이스를 제공
    • 예) Windows의 HAL(Hardware Abstraction Layer)
  • 특정 하드웨어 장치를 위한 드라이버 (Drivers for Specific Hardware Devices)
    • 각 하드웨어(프린터, 마우스, 키보드 등)별로 필요한 드라이버가 존재
    • 운영체제는 장치 드라이버를 통해 하드웨어와 통신

Protection and Security

  • Protection : access control
    • 리소스 접근 권한을 갖는 유저들만! → 테이블 형태로 유지
  • Security : internal, external attack을 막아줌
    • 서비스 거부 공격(Denial-of-Service, DoS), 웜(Worms), 바이러스(Virus), 신원 도용(Identity Theft), 서비스 도용(Theft of Service)
  • 사용자 ID (User ID, UID)와 보안 ID (Security ID, SID)
    • 각 사용자는 고유한 이름과 번호(User ID)를 가짐
    • 사용자 ID는 해당 사용자가 소유한 모든 파일 및 프로세스와 연결 → 운영체제는 사용자의 접근 권한을 결정
  • 그룹 식별자 (Group ID, GID)
    • 여러 사용자를 그룹으로 정의하고, 동일한 권한 부여 가능
    • 그룹 ID는 각 프로세스와 파일에도 연결 가능
    • 예) 개발자 그룹(Developers)만 특정 소스 코드 파일을 수정할 수 있도록 설정.
  • 권한 상승 (Privilege Escalation)
    • 사용자가 더 높은 권한을 가진 ID로 변경할 수 있는 기능.
    • 일시적으로 추가 권한을 얻어 특정 작업을 수행 가능.
    • 예) Linux의 sudo 명령어를 사용하여 일반 사용자가 관리자(root) 권한을 획득.

Kernel Data Structures

  • Linked list

  • Balanced Binary Search Tree
    • avl, red-black, …
    • binary tree가 O(n)되는 것을 막음 → O(lgn)
  • Hash function
    • 직접 접근이 됨
    • 효율적인 function
    • 키(Key)-값(Value) 쌍을 저장하고 빠르게 검색할 수 있는 자료구조
    • 해시 함수를 사용하여 데이터를 특정 위치에 매핑
    • 충돌

  • Bitmap : 상태를 표현하기 위해 사용하는 비트 정보
    • 페이징 기법 할 때 블럭 차있는지/비어있는지 0,1로 표현하는것처럼!!

자료구조 설명 커널 사용 예

Linked List 삽입/삭제가 빠름, 동적 크기 조절 가능 프로세스 리스트, I/O 큐
Tree 계층적 데이터 관리, 빠른 탐색 파일 시스템, 프로세스 계층
Hash Table 빠른 검색(O(1) 시간복잡도) 시스템 콜 테이블, 페이지 캐시
Bitmap 비트 단위로 저장하여 공간 절약, 빠른 검색 메모리/디스크 할당, 동기화

Computing Environments

  • Traditional Computing
    • 독립적인 범용 컴퓨터(Stand-alone General-Purpose Machines)
    • 대부분의 시스템이 인터넷 및 네트워크를 통해 연결됨
    • 포털(Portal)을 통한 내부 시스템 접근
    • 네트워크 컴퓨터(Network Computers, Thin Clients)는 Web terminals와 비슷
      • 일부 컴퓨터는 로컬 저장 장치 없이, 인터넷을 통해 서버에 접속하여 필요한 데이터를 제공받는 방식
      • 예) 크롬북(Chromebook), 클라우드 기반 컴퓨팅
    • 모바일 컴퓨터(Mobile Computing-스마트폰, 태블릿, 노트북 등)가 무선 네트워크(Wireless Networks-와이파이, 5G 등)를 통해 상호 연결됨
    • 네트워크 환경이 점점 더 보편화(Ubiquitous Computing)됨
      • 가정에서도 네트워크를 사용하여 여러 장치를 연결함 (스마트홈, IoT 기기)
      • 보안 문제로 인해 방화벽(Firewall) 을 사용하여 인터넷 공격으로부터 보호 필요
  • Mobile Computing
    • Handheld smartphones, tablets 등
    • extra feature - more OS features (GPS, gyroscope)
    • augmented reality와 같은 새로운 타입의 앱 허용
    • IEEE 802.11 wireless 또는 cellular data networs 를 사용
    • leaders : Apple iOS, Google Android

Distributed Systems

  • 여러 개의 독립적인 컴퓨터가 네트워크를 통해 연결되어 하나의 시스템처럼 동작하는 구조
    • 이기종(Heterogeneous) 시스템도 포함될 수 있음 → 서로 다른 하드웨어/소프트웨어를 가진 시스템들이 연결될 수 있음
    • 사용자는 하나의 커다란 시스템처럼 느끼지만, 실제로는 여러 컴퓨터가 분산되어 동작함
  • 네트워크 연결이 필수적
    • LAN (Local Area Network, 근거리 통신망) → 같은 건물, 사무실 내의 네트워크
    • WAN (Wide Area Network, 광역 통신망) → 장거리 네트워크 (인터넷 포함)
    • MAN (Metropolitan Area Network, 도시권 네트워크) → 도시 내 네트워크 (예: 공공 Wi-Fi)
    • PAN (Personal Area Network, 개인 네트워크) → 블루투스, NFC와 같은 근거리 개인용 네트워크
  • 네트워크 운영체제(Network Operating System, NOS)
    • 파일 공유, 네트워크 기반 프로세스 간 통신을 지원하는 운영체제
    • 여러 대의 컴퓨터가 서로 데이터를 주고받고 협력할 수 있도록 함
    • 대표적인 예: Linux, Windows Server, Unix 기반 시스템

Client-Server Computing

  • Dumb Terminal(단순 터미널)이 smart PC에 의해 대체됨
    • Dumb Terminal은 자체적인 계산 능력이 없고, 단순히 입력/출력만 수행 (모든 계산은 중앙 메인프레임이 담당)
    • 스마트 PC(개인용 컴퓨터)가 등장하면서, 클라이언트가 일부 작업을 수행하고 서버에 요청하는 방식으로 발전
  • clients로부터 받은 요청에 응답하는 server
    • 계산 서버(Compute-Server)
      • 클라이언트가 연산 작업(예: 데이터베이스 검색, 인공지능 연산 등)을 요청하면, 서버가 처리 후 결과를 반환
      • 예) SQL 데이터베이스 서버(MySQL, PostgreSQL, Oracle DB)
    • 파일 서버(File-Server)
      • 클라이언트가 파일 저장 및 검색 요청을 하면, 서버가 해당 파일을 제공
      • 예) Google Drive, Dropbox, 회사 내부 파일 서버(NAS)

Peer-to-Peer Computing (P2P)

  • clients-servers 를 구분X
    • 모든 노드는 동등한 관계(peers)
    • client, server, or both 역할을 할 수 있음
  • Node가 P2P 네트워크에 참여하는 방식
    • 중앙 조회 서비스(Central Lookup Service) 사용 → 네트워크에 참여한 노드들이 자신의 서비스를 등록
    • 브로드캐스트(Broadcast) 요청 방식 → 특정 데이터를 찾기 위해 네트워크 전체에 요청을 보내고 응답받는 방식
  • 예) Napster, Gnutella, Voice over IP(VoIP) such as Skype

*참고

비교 항목 P2P 네트워크 클라이언트-서버 모델

중앙 서버 없음 (모든 노드가 동등) 있음 (서버가 클라이언트 요청 처리)
노드 역할 모든 노드가 클라이언트 & 서버 역할 수행 클라이언트가 요청, 서버가 응답
확장성 매우 높음 (노드 추가로 성능 증가) 서버 성능이 한계점이 될 수 있음
예제 Torrent, Gnutella, Skype 웹 서버, 데이터베이스 서버

Computing Environments

Virtualization

  • 하나의 운영체제 내에서 다른 운영체제를 실행할 수 있도록 함
    • Host OS : 물리적인 하드웨어에서 실행되는 운영체제
    • Guest OS : 가상 머신 안에서 실행되는 운영체제
  • Emulation
    • 서로 다른 CPU 아키텍처(예: PowerPC → Intel x86)를 변환하여 실행하는 방식
    • 일반적으로 속도가 느림 (하드웨어 변환이 필요하기 때문)
    • 프로그램이 원래 기계어(Native Code)로 컴파일되지 않을 땐 Interpretation! → 실행 시점에 해석되어 실행됨
  • 가상화(Virtualization)
    • 운영체제가 CPU용으로 네이티브(Natively) 컴파일되어 실행되며, Guest OS 또한 네이티브로 컴파일되어 실행됨.
    • VMware에서 Windows XP Guest를 실행하고, 각각의 게스트 OS에서 애플리케이션을 실행하며, 이 모든 것이 네이티브 Windows XP Host OS에서 동작함.
    • VMM(Virtual Machine Monitor, 가상 머신 모니터)이 가상화 서비스 제공 → VMM이 운영체제 간 자원을 분배하여 실행
  • multiple OS를 사용하는 laptops, desktops
    • Apple laptop : Mac OS X-host, Windows-guest
    • multiple systems 없이 multiple OSes를 위한 앱을 만듦 (하나의 물리적 컴퓨터에서 여러 운영체제를 실행할 수 있기 때문)
    • multiple systems 없이 QA testing applications(품질 보증 테스트)
    • data centers 에서 여러가지 compute environments 실행, 관리
  • VMM이 Natively 실행될 수 있음 → VMM이 직접 host 역할을 함
    • 일반적인 범용 운영체제 필요 X
    • VMware ESX and Citrix Xenserver → 운영체제 없이 직접 하드웨어에서 실행되는 하이퍼바이저(Hypervisor)

  • 시스템 환경을 독립적으로 구성
  • 서로 다른 환경을 경험해 볼 수 있음
  • 속도가 느려짐 (계층이 두꺼워지기 때문)

Cloud Computing

  • computing, storage, apps 등을 network를 통해 서비스 형태로 제공
  • 분산 시스템의 비즈니스 모델 → 사용한 만큼 비용 지불
  • virtualization 기반으로 동작
    • 예) Amazon EC2(AWS의 가상 서버 서비스)는 수천 개의 서버, 수백만 개의 가상 머신(VM), 페타바이트(Petabyte) 단위의 스토리지를 제공
    • 사용자는 직접 물리적 서버를 운영하지 않고도, 가상 머신(VM)이나 스토리지를 필요할 때만 사용할 수 있음

<클라우드 유형>

  • Public / Private / Hybrid (대부분) + Multi
  • Public Cloud
    • 인터넷을 통해 누구나 이용할 수 있는 클라우드 서비스
    • 사용자는 클라우드 제공업체(AWS, Google Cloud, Azure 등)에서 서비스를 사용하고, 사용한 만큼 비용을 지불
    • 예: AWS, Google Cloud, Microsoft Azure
  • Private Cloud
    • 기업이나 조직이 자체적으로 운영하는 클라우드 환경
    • 보안과 성능이 중요할 때 사용되며, 외부 사용자 접근 제한
    • 예: 금융기관, 정부기관의 내부 클라우드
  • Hybrid Cloud
    • Public cloud + Private cloud
    • 기업이 민감한 데이터는 내부(프라이빗)에 저장하고, 일반 서비스는 퍼블릭 클라우드에서 제공
    • 예: 데이터 백업은 퍼블릭 클라우드(AWS S3)에 저장하고, 주요 데이터는 프라이빗 클라우드에 저장.

<클라우드 서비스 유형>

  • SaaS(시스템) / PaaS(플랫폼) / IaaS(인프라 제공)
  • SaaS (Software as a Service) – 소프트웨어 서비스 제공
    • 인터넷을 통해 애플리케이션을 제공하는 모델
    • 사용자는 소프트웨어를 설치할 필요 없이, 웹 브라우저에서 바로 사용 가능
    • 예: Google Docs, Microsoft 365, Dropbox
  • PaaS (Platform as a Service) – 개발 환경(플랫폼) 제공
    • 개발자가 애플리케이션을 쉽게 배포할 수 있도록, 미리 구성된 개발 환경(운영체제, 데이터베이스, 미들웨어 등)을 제공
    • 예: Google App Engine, AWS Elastic Beanstalk, Heroku
  • IaaS (Infrastructure as a Service) – 서버, 스토리지 등 인프라 제공
    • 필요한 서버, 네트워크, 저장 공간을 인터넷을 통해 제공하는 서비스
    • 사용자는 직접 물리적 장비를 구매할 필요 없이, 가상 서버를 이용 가능
    • 예: Amazon EC2(가상 서버), AWS S3(클라우드 스토리지)
  • traditional OSes + VMMs + cloud management tools
    • 인터넷 연결시 firewalls(방화벽)와 같은 보안 필요
    • Load Balancing(부하 분산)을 통해 여러 애플리케이션 간 트래픽을 분산

Real-Time Embedded Systems

  • 실시간 처리
  • 가장 널리 사용되는 컴퓨터 형태
    • Special Purpose 또는 Limited Purpose의 운영체제, 실시간 운영체제(Real-Time OS) 사용
    • 사용 범위가 확장되고 있음
  • 다양한 특수 컴퓨팅 환경(Special Computing Environments) 존재
    • 일부 시스템은 운영체제를 사용하며, 일부는 운영체제 없이 작업 수행
  • Real-Time OS는 명확하게 정의된 고정된 시간 제약(Fixed Time Constraints)을 가짐
    • 반드시 정해진 시간 내에 처리가 완료되어야 함
    • 시간 제약이 충족될 때만 올바르게 동작

Open-Source Operating Systems

  • 큰 비용 없이
  • Binary 형태의 Close-Source뿐만 아니라 Source Code 형태로도 제공될 수 있음
  • Copy ProtectionDigital Rights Management(디지털 저작권 관리, DRM) 운동에 반하는 개념
  • Free Software Foundation(자유 소프트웨어 재단, FSF)이 시작했으며, "Copyleft" 개념을 적용한 GNU Public License(GPL)를 가짐
  • . GNU/LinuxBSD UNIX (MAC OS X의 핵심 포함) 등
  • Virtual Machine Monitor(가상화 소프트웨어, VMM) 사용 가능
    • VMware Player (Windows에서 무료)
    • VirtualBox (오픈소스 및 무료, 다양한 플랫폼 지원)
    • 이를 이용하여 게스트 운영체제 실행, 탐색 가능

'공부 > 컴퓨터' 카테고리의 다른 글

[운영체제] 2. Operating-System Structures  (0) 2026.02.28