[운영체제] 1. Introduction

jungizz_·2025년 4월 25일

Operating Systems

목록 보기
1/15
post-thumbnail

Computer System Structure

  • 컴퓨터 구조 계층
    User- 사용자, 프로그래머, 다른 컴퓨터/디바이스 등
    Application- Word processor, 비디오 게임 등
    Middleware- 컴파일러, 라이브러리, 데이터베이스 등
    Operating System- 운영체제가 하드웨어 자원을 제어해서 사용자와 Application이 쉽게 사용할 수 있는 환경 제공
    Hardware- 기본 컴퓨팅 자원 제공 -> CPU, 메모리, I/O 장치 (센서, 컨트롤러 등)

Operating Systems 역할

  • 컴퓨터 리소스를 쉽게 사용할 수 있도록 (resource allocator, control program)
    • 사용자가 컴퓨터를 쉽게 사용할 수 있도록 UI 제공
    • 프로그래머는 OS의 Sysyem call(API)을 사용해 쉽게 개발 가능
  • Main frame, Mini computer, Cloud, Block chain → 넓은 의미의 서버
    • 여러 사용자가 연결해서 각자 원하는 서비스 제공 받음
    • workstations(lab tab, mobile device)에서 사용자 혼자 원하는 작업 진행
  • 모바일 디바이스는 리소스 용량이 상대적으로 적어서 네트워크로 서버에 연결해서 필요한 부분을 보충
  • 임베디드 시스템은 항공기, 자율주행 자동차, 스마트 티비, 공장 제어(IOT시스템) 등 기기 안에 내장되어 디바이스를 제어

Operating Systems 기능

  • 산업용, 군수용, 민간용 등 다양한 목적을 가짐
  • System software > OS > Kernel
  • Kernel: OS의 핵심 기능
  • System program: OS와 함께 제공되지만 kernel은 아닌 프로그램
  • Application program: OS와 관련이 없는 모든 프로그램
  • Middleware: OS를 제외한 System program
  • 개발자에게 databases, multimedia, graphics등을 제공하는 software frameworks

Computer System 구조

  • 하나 이상의 CPU와 여러 컨트롤러(오디오, 비디오 디스플레이 등)가 Bus로 연결되어있으며, shared Memory에 대한 접근을 제공
    • 디바이스마다 각자 다른 컨트롤러를 가지고 있음 (독립적)
  • CPU와 IO디바이스는 개별적으로 동작
    • CPU가 상대적으로 좀 더 빠름
    • CPU가 IO에게 명령을 내리고, IO를 기다리려면 오래 걸림 (상대적으로 느려서) → interrupt
  • 각 디바이스 컨트롤러는
    • 작은 메모리와 같은 local buffer를 가짐
    • 디바이스 컨트롤러를 제어하는 디바이스 드라이버는 OS의 일부
      • 디바이스 컨트롤러, 디바이스: 하드웨어
      • 디바이스 드라이버: 운영체제
  • CPU는 메모리, IO간에 데이터 이동
    • 로컬버퍼는 일시적인 io데이터를 저장하는 공간
  • Interrupt
    • 이벤트를 처리하는데 사용
    • ex) 디바이스 컨트롤러가 cpu가 시킨 일을 다 한 이벤트
  • 프로그램이 실행되려면 메모리로 로딩되어야함

Interrupts 기능

  • 다양한 종류의 interrupt를 구별하기 위해 interrupt vector
    • 각 interrupt마다 다른 service routines를 가진다
  • interrupt가 오면 이에 해당하는 service routine으로 점프하고, 수행한 뒤, 원래 위치로 돌아감
    • 원래 위치로 돌아갈 수 있도록 그 위치를 저장해놔야함
  • function call은 우리가 호출을 지정하고, interrupt는 언제 올지 모름
  • trap, exception은 software interrupt
  • interrupt메카니즘은 하드웨어에서 지원되야하고, 이 메카니즘은 OS에서 이용

Interrupt Handling

  • ex) IO에서 interrupt가 발생하는 경우
  • OS는 interrupt가 걸렸을 때, 일을 멈췄다가 다시 돌아오기 위해 program counter와 register값 등의 상태를 기억해야 함
    • interrupt가 없다면 계속 주기적으로 점검 필요(polling)
  • ex) Interrupt-drive IO cycle
    1. 디바이스 드라이버(OS)가 IO request
    2. IO가 할일을 수행하고 다 하면 interrupt signal 전송 (그동안 CPU는 다른 일 하고 있음)
    3. CPU가 interrupt를 받아서 interrupt service routine 실행 (IO가 읽어온 데이터 처리)
    4. 원래 하던 일로 돌아감 (resumes)

IO Structure

  • System call은 시스템에서 지원하는 다양한 서비스 루틴
    • ex) file에 접근하기 위한 read, write
    • 얘도 일종의 interrupt (처럼 수행하니까)
  • Device-status table
    • IO를 관리하는 테이블, IO마다 가짐

Storage Structure

  • 하드웨어 자원
  1. Main memory (주 기억장치)
    • ramdom access, 메모리 영역을 랜덤하게 접근
    • volatile (휘발성)
  2. Secondary storage (보조기억장치)
    • nonvolatile (비휘발성)
    1. Hard disk (하드디스크)
    2. SSD (비휘발성 메모리)
  • 기억장치 용량
    • word: 컴퓨터 시스템마다 다름 64bit or 32bit

Storage Hierarchy ⭐

  • 다양한 메모리는 계층 구조를 가진다
  • CPU와 가까울수록 속도가 빠르지만 작은 용량 (단위 용량 당 비용이 높음)
  • cache: 자주 사용하는 것을 아래에서 위로 올리는 것
    • 빠르게 접근 가능
  • 대용량 접근 능력이 필요할 때는 밑으로 저장

Modern Computer 동작 원리

  • 메모리 안에는 프로세스가 있다
    • 프로그램을 실행하는게 프로세스
    • 프로세스는 instruction, data, stack로 구성됨
      • stack은 return을 위한 정보를 가짐
  • 프로세스가 메모리에 로딩되고, CPU가 프로세스의 instruction을 가져와서(fetch) CPU에서 프로그램을 실행
    • 연산을 하거나
    • 메모리와 데이터를 주고받거나
    • 디바이스와 데이터를 주고받거나 (IO instruction, interrupt)
  • thread: 프로그램을 실행하는 기본 단위
  • DMA: 메모리와 디바이스 사이의 데이터 이동
    • 큰 용량의 데이터를 옮길 때, CPU가 너무 바빠질 수 있으니 CPU중재 없이 바로 접근할 수 있도록 (CPU 부담 덜어줌)

Multiprocessors (MultiCPU)

  • 여러개의 CPU (CPU = Processor라고 생각)
  • 단일 CPU 한계(병목현상)를 극복하기 위해
  • parallel system
  • 여러개의 CPU는 메모리를 공유 (shared memory)
    • CPU간에 긴밀한 관계가 유지됨 (tightly-coupled systems)
  • 장점
    • CPU처리 능력(throughput) 향상
    • 경제적 (한 개의 CPU 성능을 늘리기 위한 비용이 선형적이지 않고 지수적으로 증가해서..)
    • CPU 성능은 한계가 있음
  • Multiprocessing: multiprocessor 구조
    • Asymmetric: 각 CPU 역할이 다름
    • Symmertic: 각 CPU 역할이 같음

Multicore

  • 단일 CPU인데, CPU의 핵심 디바이스인 Core가 여러개
  • 한 개의 칩이라서 사이즈가 작고, 전력을 아낄 수 있음
  • 하드웨어적으로는 한 개의 칩인데, 여러개의 CPU 역할을 함

Non-Unifrom Memory Access System (NUMA)

  • 각 CPU의 local memory에는 빠르게 접근할 수 있지만,
  • 다른 CPU의 local memory에 접근하려면 interconnect를 이용하기 때문에 느리다 → non-uniform하다
  • 여러 CPU가 같은 메모리를 공유하는 경우는, 전부 접근 시간이 같기 때문에 Common Memory Access(COMA)라고 함

Clustured Systems (Multi-Computer)

  • 여러 컴퓨터가 모여있음
  • storage 공유 가능 (storage-area network(SAN))
  • 각 컴퓨터 기능이 다른지 같은지에 따라 Assymmetric, Symmeric clustring
  • 고성능 (high-performance computing(HPC))
  • 분산 환경에서 메모리 동시 사용때문에 충돌나는걸 막아주기 위해 동기화 기법 사용 (ex-distrubuted lock manager)
  • 메모리는 각자, storage는 공유


Operating-System Operation

  • 처음에는 부팅 프로그램을 실행
    • 컴퓨터를 키면 Bootstrap program이 kernel을 로딩
  • 다양한 system daemons를 실행 (초기화 과정)
    • kernel위에 다양한 daemon들이 동작함
  • interrupt drive
    • hardware, software에 따른 다양한 interrupt가 존재
    • 시스템에서 제공하는 유용한 함수(system call)도 interrupt로 처리 (software interrupt)

Multiprogramming

  • 메모리에 여러 프로세스를 동시 로딩
  • CPU가 프로세스의 instruction을 fetch할 때, 여러 프로세스가 있으면 다양한 프로그램을 빠르게 실행할 수 있음
    • 만약 메모리에 한 프로세스만 올라가 있는데 다른 프로그램을 실행하려면, 하드디스크에서 해당 프로세스를 메모리에 올린 뒤~ instruction을 fetch해야 함 → 많은 시간 소요
    • 치과 의자에 앉아서 기다리는 환자들처럼..
  • job scheduling: 어떤 프로세스를 메모리에 로딩할건지

Multitasking (Timesharing)

  • multiprogramming구조에서 CPU 시간을 쪼개서 여러 프로세스를 로딩?
  • CPU가 워낙 빨라서 쪼개도 많은 instruction을 실행할 수 있음
  • response time(응답시간)이 줄어듦 → 이게 가장 큰 목적
  • CPU scheduling: CPU가 할 일이 있을 때, 시간을 어떻게 할당할건지
  • 여러 프로세스를 메모리에 로딩하는데 메모리 용량이 부족한 경우, virtual memory 사용
    • swap: 메모리 부족해서 가상공간으로 미뤄지는걸 swapping out, 실제 메모리 공간으로 올라가는걸 swapping in이라고 함
    • 하드디스크의 공간을 메모리인척하는 가상 공간으로 사용함

Dual-mode

  • CPU에는 user/kernel mode가 있음
  • 일반 프로그램은 user mode로 실행됨
  • 자원을 컨트롤하는 previleged instruction을 실행하려면 kernel mode로 접근해야함
    • previleged instruction은 컴퓨터 시스템에 영향을 줄 수 있는 민감한 정보를 건듦
  • virtual machine manager(VMM): 하드웨어가 없는데, 소프트웨어로 하드웨어가 있는 척 하는 것

User/Kernel mode 전환 과정

  • 모드 비트가 1이면 user mode, 0이면 kernel mode로 세팅된 경우
    1. 사용자가 user mode로 프로세스에 접근하여 일반 프로그램을 실행
    2. 파일을 읽거나, 메모리 할당을 하거나, IO사용 등 system call을 부름
      • System call은 kernel에 있는 service routine
    3. mode bit를 0으로 바꾸고 kernel mode로 시스템 resource에 접근하여 system call(interrupt service routine) 실행
    4. mode bit를 1로 바꾸고 user mode로 다시 돌아감
  • systemcall도 interupt처럼 처리
    • trap, return은 소프트웨어 interrupt
  • Timer hardware
    • CPU scheduling(Time sharing)할 때, Timer가 각 프로세스에 대한 시간 조정
    • 프로세스가 할당 받은 시간이 끝나면(counter zero) timer interrupt 생성

💡 운영체제 커널에는 크게 4가지 기능

  1. 프로세스 관리
  2. 메모리 관리
  3. 파일 관리
  4. IO 관리

Process 관리

  • Program → passive entity (정적)
    • 그냥 파일, CPU가 따라할 메뉴얼이 적혀있음
    • 하드디스크에 존재, 소스코드를 컴파일하면 excutable file이 생김
  • Process → active entity (동적)
    • 다른 자원(CPU, memory, IO, files)을 사용하여 메뉴얼에 따라 직접 동작함
    • 프로그램이 프로세스를 실행한다
  • Thread: 프로그램을 수행하는 기본 단위 (일단 process와 같은 개념으로 보기)
    • Single-threaded process: 다음 instruction을 실행하는 program counter(PC)가 한 개
    • Multi-thread: 한 프로세스 안에 여러 개의 Thread (thread마다 PC), function call을 관리하는 stack이 여러개

  • Process management activities
    • 프로세스 생성 및 종료 / 중단(suspending) 및 이어서 실행(resuming)
    • 여러가지 프로세스는 동시에 동작 → 프로세스 간 통신 (process commincation)
    • 프로세스 간 충돌 방지 → 동기화 (synchronization)
    • deadlock handling (프로세스가 서로 기다리지 않도록)

Memory Management

  • 프로그램을 실행하기 위해서는 모든 instruction과 data가 메모리에 있어야 함
  • 메모리에 어떤게 올라갈지 언제 올라갈지를 관리하여 CPU 사용과 response를 최적화
  • 가상메모리

  • Memory management activities
    • 메모리에 어떤 부분이 사용되고 있는지, 누가 차지하고 있는지 tracking
    • 어떤 프로세스와 데이터가 메모리에 올라가고 나갈지 결정
    • 메모리 주소 공간의 어느 부분을 사용할지 할당(allocating malloc() 및 해제(deallocating free())
  • 메모리를 쪼갤 때, 일정한 크기로 자르면 page table, 성질에 따라 다른 크기로 자르면 segment table

File-system Management

  • 파일이 연속인 공간에 있는 것처럼 사용 (logical view)
    • 실제로는 하드디스크나 SSD 메모리 공간(secondary storage)에 빈자리에 할당되기 때문에 연속적으로 있지 않음 → 인덱싱하여 사용
  • 폴더, 디렉토리와 같은 구조로 파일 관리
  • OS에서 지원하는 기능
    • 파일 생성 및 제거 / 읽기 및 쓰기
    • 파일을 secondary storage에 mapping

Mass-storage Management

  • 파일이 저장되는 hard-disk storage
  • 주기억장치와 다르게 오랜 기간 저장
  • OS에서 지원하는 기능
    • 하드디스크를 파일시스템에 연결하는 것 (mounting, unmounting)
    • 하드디스크 빈 공간 관리
    • 어떤 파일이 어떤 블록을 사용할지 할당
    • 여러 프로세스가 동시에 하드디스크에 접근할 때 disk scheduling
    • storage를 쪼개서 하나의 파일 시스템에 할당 (partitioning)
    • 그룹 파일 권한 설정 (protection)

Caching

  • storage hierachy에서 하위 storage의 데이터를 위로 올려서(copy) 빠르게 접근할 수 있도록 하는 과정 (자주 사용하는 데이터를 올림)
    • 메모리에 있는 데이터를 hardware cache에 caching → 컴퓨터구조에서의 caching
    • SSD의 데이터를 주기억장치(메모리)에 caching → 운영체제에서의 caching
  • cache hit율을 높이는 것이 좋음
    - cache한 데이터가 실제로 사용될 확률?

  • storage 종류에 따른 특징
    • 위로 올라갈수록 접근 속도가 빨라 단위 시간 당 보내는 데이터의 양(bandwidth)이 많지만, 용량이 작다
    • register와 cache는 hardware가 관리하고, 나머지는 os가 관리
    • storage 공간이 부족하면 하위 storage로 밀려남

Migration of data

  • disk에 있는 파일을 읽어서 CPU가 처리하기 위해 register까지 올리는 과정
  • multi processor환경에서 성능 향상을 위해 같은 계층에서 copy(replication)할 수도 있음
  • 성능 향상을 위해 cache나 replication이 실행되는데, 중복된 데이터가 충돌 없이 수행될 수 있도록 해야 함
    • cache coherency: 중복이 발생하면 복제본간의 일치성을 유지해야한다
      • 가장 최근에 write한 read할 수 있도록 보장
    • consistency: 동시에 한 데이터를 접근할 때 문제가 발생하지 않도록 일정한 순서로 데이터 처리

IO Subsystem

  • 디바이스마다 다른 역할을 하는 디바이스 드라이버를 가지지만, 공통 역할을 하는 부분도 있다 → IO Subsystem
    • buffering: 빠른 CPU와 느린 IO에 대한 완충작용을 위해
    • caching:
    • spooling:
    • (전부 메모리에 일시적으로 저장하는 일)
  • 디바이스별로 같은 역할을 하는 general device driver interface, 다른 역할을 하는 specific device driver

Protection and Security

  • protection: 누가 어떤 리소스에 어떤 접근을 할 수 있는지 제어
  • security: 외부 공격으로부터 시스템 리소스를 보호
    • CIA (기밀성, 무결성, 가용성)
  • 사용자 ID, 그룹 ID등으로 identity를 밝혀야함
  • privilege escalation: kernel mode로 동작할 때 높은 권한을 갖게되는 것

Virtualization

  • 메인 하드웨어 외에 다른 하드웨어가 있는 것처럼 흉내
    • ex) java virtual machine을 메인 하드웨어 위에 올려서 JVM위에서 자바 프로그램이 실행될 수 있음 (메인 하드웨어가 달라도 같음)
  • 하나의 하드웨어에 여러개의 virtual machine을 올려서 여러개의 OS를 실행
    • 소프트웨어적으로 하드웨어 역할
  • 하나의 하드웨어의 host OS 위에 virtual machine을 올려서 guest OS를 올려 두가지의 OS를 사용
  • VM machine

Distributed systems

  • 여러대의 컴퓨터(multi computer)가 네트워크로 연결되어 리소스 공유
    • 네트워크: LAN, WAN, MAN, PAN
  • 물리적으로는 여러대의 컴퓨터를 사용하지만 OS와 MW가 올라가서 마치 한 대의 컴퓨터인 것 처럼
    • 커다란 리소스를 가진 한 대의 시스템 (illusion of single system)

Kernel data structures

  • sequential list
  • linked list
    • singly, doubly, circular
  • binary search tree → 데이터 찾기 빠름 (log n)
  • hash function
    • 중복되면 linked list로 연결
  • bitmap
    • 블록이 비어있는지 사용되고 있는지 확인하기 위해 0 또는 1로 표시

Computing Environments

  • tranditional
    • 컴퓨터가 서버 형태로 있고, 터미널을 통해 서버에 접근
    • 모바일, 노트북, web terminal과 같은 최소한의 기능만 있는 thin clients은 서버에 연결하여 서비스를 요청하고 받음 (client-server model)
    • 방화벽(firewalls)로 외부 공격 방어
  • mobile
    • 휴대가 가능해서 다양한 센서(gps, gyroscope)
    • 물리적인 것과 연결이 쉬움 (augmented reality)
    • 저사양, 저전력
    • 모바일의 운영체제는 위와같은 특성에 맞게 변형됨 (android, ios)
  • Client-server
    • 서버에 모든 리소스 존재
    • 클라이언트에는 컴퓨터, 랩탑, 모바일 등
    • 클라이언트가 서버에 서비스를 요청하고 서버가 서비스를 제공
  • Peer-to-peer
    • 서버 없음. 서버에 의존적이지 않음
    • 클라이언트이자 서버
    • 누가 어떤 리소스를 가지고 있는지 몰라서 discovery protocol가 중요
      • lookup service: 각 peer가 어떤 리소스를 가지고 있는지에 대한 정보를 서버가 가지고 있음 (진정한 p2p가 아님)
  • Cloud computing
    • 흩어진 리소스를 공유

    • public: 무료 또는 유료로 사용
    • private: 개인 회사
    • hybrod: public+private

    • 어떠한 서비스를 받을 수 있는가
      • SaaS: software
      • PaaS: platform (데베, 미들웨어 플랫폼)
      • IaaS: infra(하드웨어, 스토리지, 운영체제)
    • 구조
      • 인터넷을 통해 클라우드 서비스를 할당 받음
      • 스토리지, 버추얼 머신, 서버 등 다양한 형태의 리소스
      • 보안을 위한 firewall
      • request가 오면 load balancing
      • customer interface
  • Real-time embedded systems
    • 시간 제약이 존재, 일반 computing에서 응답시간, 처리율이 중요한 것과 다르게 시간 안에만 수행하면 됨
  • Open source OS
    • linux, unix와 같은 운영체제와 virtual machine 등이 공개 소프트웨어로 전환
profile
( •̀ .̫ •́ )✧

0개의 댓글