본문 바로가기

카테고리 없음

01. 운영체제 개요

728x90

운영체제란

  • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, (Resource Management)

    → 디스크 자원 관리 및 분배 (Efficiency & Fairness)

  • 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 소프트웨어(Virtual Machine)

    → 사용자를 위해서만 존재하는 것처럼 느끼게 해주는 환경

Application View

  • 프로그램이 돌아갈 환경을 제공, like virtual machine
  • 추상적인 view를 제공 → 하드웨어 캡슐화를 통해 컴퓨터 시스템 추상화
    • CPUs → Process, Threads
    • Memory → Address spaces (virtual memory)
    • Storage → Volumes, Directories, Files
    • I/O Devices → Files
    • Networks → Files

System View

  • 다양한 자원 관리
  • 최대한 바쁜 상태를 유지
  • Sharing, Protection, Fairness, Efficiency, Concurrency

Implementation View

  • Highly concurrent, Event-driven 소프트웨어

  • Trap : 소프트웨어 interrupt → OS에게 제어권 넘김
  • Interrupt : I/O Interrupt 등
  • System Call : 프로세스에서 OS에게 요청하는 것
  • Process와 OS는 분리 → 필요할때마다 syscall 요청하는 방식 → Protection을 위해

운영체제 간략 역사

Batch Processing Systems

  • 아주 적은 메모리 및 디스크 기반의 OS
  • Job이란 것이 punched card에 → 현재 process와 비슷
  • Job을 card reader에 읽힘으로써 실행
  • Off-line processing

  • OS는 Job controller 느낌

Multi-programming Systems

  • 많은 Job들이 병행적으로 실행 → 병렬 X, 병렬처럼 보이게
  • Memory Segmentation for jobs
  • IO / CPU overlap 가능 → I/O와 CPU 따로 작업
    • job이 I/O를 할 땐 CPU가 필요 없다 → 그때 CPU는 다른 Job을 처리하고 있다.


- card reader가 job들을 적재 → job1을 처리하면서 I/O 필요 요청에 I/O로 보냄 → 동시에 job2 작업 시작 ...

  • CPU 효용성 높임
  • Job 스케줄링, 메모리 관리, CPU 스케줄링, Protection 등의 특징
  • Spooling(Simultaneous Peripheral Operation On-Line)
    • 각 device의 I/O 버퍼 사용
    • 해당 버퍼에 일단 적재하면 완료 처리가 된 것으로 인식 → 이후 버퍼 처리

Time Sharing Systems

  • Multitasking System
  • 시간 분할 기법 사용 (Time-slice)
    • OS에 의해 정해진 시간동안만 process가 실행될 수 있음
    • 해당 시간이 지나면 process는 다른 process에게 넘겨줘야함 (Round-Robin Scheduling)
  • 응답성이 좋아 사용자로 하여금 real-time으로 느끼게 해줌
    • Multiprogramming System → 응답성이 좋지 않음
      • 만약 I/O가 없는 작업이면 한없이 본인의 순서가 될때까지 프로세스가 실행되지 않고 대기하기 때문

Multi-processor Systems

  • 1개의 메모리를 여러 CPU가 공유
  • SMP(Symmetric Multi-processor)라고도 불림
  • 메모리 bottleneck → CPU가 로컬 캐시를 갖고 있음
  • 뛰어난 performance, Uniform Memory Access
  • 신뢰성 → CPU 1개가 잘못 되더라도 전체 시스템은 이상 없음
  • 소프트웨어는 구현하기 쉽지만, 하드웨어적인 부분이 어려움
    • 소프트웨어는 단일 CPU 시스템이랑 똑같이 작동
    • 각 CPU가 로컬 캐시를 가지고 있기에 캐시 일관성이 일어날 수 있음 → 일관성있게 해주는 프로토콜 지원 어려움

Distributed Systems

  • Cluster Systems
  • 네트워크 기반의 다수의 컴퓨터가 연결 → loosely coupled Multi-processor system
    • 하지만 사용자는 1개의 시스템처럼 보임
  • 각 노드는 본인의 로컬 메모리를 가지고 있음
  • Objectives
    • 자원공유
    • 병렬 처리
    • 신뢰성 : 1개의 컴퓨터가 죽어도 다른 컴퓨터가 처리 가능
  • 하드웨어적으로는 쉽지만, 소프트웨어적으로는 어려움 (OS, Middlewares)
728x90