본문 바로가기
3학년 학사/운영체제

[운영체제] #2. 운영체제 구조 (1)

by whiteTommy 2024. 11. 19.
반응형
더보기

목차

  1. 컴퓨터의 기원
  2. Hand-operated System
  3. Batch System
    1. Automatic Job Sequencing
    2. Spooling Batch System
  4. Multiprogramming
  5. Timesharing
  6. Multitasking
  7. Lineage of Well-known Operating Systems

 

컴퓨터의 기원

  • Compute + er 
    • 계산을 수행하는 장치 또는 사람
  • 2차 세계대전
    • 군사 목적으로 암호 해석, 미사일 탄도 분석, 물리 계산 등을 위해 개발됨
      ex) 영화 이미테이션 게임 (앨런 튜링의 암호 해독 작업과 초기 컴퓨터 역할 묘사)

 

Hand-operated System

  • 1950년대 초반
    • 기계적인 스위치로 1bit 단위로 컴퓨터에 입력해서 사람이 물리적으로 실행
    • 오류가 발생하면 프로그램 전체를 다시 실행
  • 1950년대 중반
    • 플러그 보드에 와이어링을 통해 컴퓨터의 기능을 제어
    • 프로그래밍 언어 및 운영체제 존재가 없음(영구적인 저장장치가 없음 = 매번 프로그램 다시 입력)
  • 1960년대 초반
    • 펀치 카드 등장
    • 프로그래밍한 카드로 컴퓨터 구동(플러그 보드 대체)

 

Mainframe - 일괄 처리 (Batch)

초기 운영체제 개념 등장

  • job 이 끝나고 다음 job 이 수행됨
  • 펀치 카드로 제출 => 메모리에 적재, 수행의 순서로 진행
  • 결과를 받기 전까지 사용자가 관여하지 못함
  • 사람이 job 을 scheduling 함
  • CPU 가 Idle 상태로 전환됨
    *idle 상태 : I/O 장치와 CPU 사이의 속도차로 인해 I/O 작업이 진행되는 동안 CPU 가 대기하는 상태

 

Automatic Job Sequencing

  • 사람의 관여 없이, 여러 개의 프로그램을 자동으로 순차적으로 실행
  • I/O 에 의해 CPU 가 Idle 상태로 전환되는 문제 해결 X

 

Spooling (Simultaneous Peripheral Operation On-Line)

  • I/O 데이터를 disk 나 memory 의 buffer 에 임시 저장하여 CPU 가 I/O 작업을 기다리지 않고 다른 작업을 처리 가능
  • 여러 작업이 동시에 진행될 수 있음
    ex) 프린터 작업 요청을 disk 의 buffer 에 저장하고, 프린터가 준비되면 순차적으로 처리

 

 

Multiprogramming

  • 2개 이상의 Job 을 메모리에 동시에 유지하며, CPU 는 I/O 작업 대기 중인 작업을 넘어 다른 작업을 실행
    ex) Job1 이 I/O 작업을 요청하면, CPU 는 즉시 Job2 를 실행 => Job1 이 다시 실행 가능해지면, CPU 는 Job1 로 전환(Context Switching)
  • First Come First Served
  • CPU utilization 증가 (CPU Idle time 감소)

  • 문제점
    • 사용자는 실행중인 작업에 관여할 수 없음
    • 다른 Job 이 실행이 되기 위해서는 현재 수행되는 Job 이 I/O 를 해야 한다 (Voluntary Yield 에 의존)
    • High Priority 를 수행할 필요가 생김
    • 공평성을 유지할 필요가 발생

Timesharing

  • CPU 실행 시간을 Time Slice 로 나누어 프로그램들에 순차적으로 할당
  • CPU 가 여러 프로그램을 빠르게 빈번하게 전환하며 실행(Context switching), 동시에 실행되는 것처럼 보임
    ex) Job1 실행하다가 10ms 되면 멈추고, Job2 실행하다가 10ms 되면 멈춘다 

 

Multitasking

  • 여러 개의 Task 들이 CPU 같은 자원을 공유하도록 하는 방법
  • 하나의 Job 을 동시에 실행할 수 있는 Task 로 나눔
    ex) 웹 브라우저가 동시에 페이지 로드, 파일 다운로드, 사용자 입력 처리
  • CPU 가 Idle 상태일 때도 background 작업이 실행됨

Fork 를 이용해서 자신이 필요한 기능을 Child Process 로 만들어 협력을 통한 작업 수행 무문

 

  • ISSUE
    • 복잡한 메모리 관리 시스템 : 여러 프로그램이 동시에 메모리에 상주하므로, 메모리 자원을 효과적으로 할당하고 보호하는 시스템이 필요
    • 적절한 응답 시간을 제공 : Job 들이 메모리에서 disk 로 Swap In/Out 될 수 있음
    • Concurrent Execution 제공 : 여러 Job 이 동시에 실행되는 것처럼 보이도록 CPU scheduling 이 필요함
    • 필요에 따라 Job 들 간의 Orderly Execution 이 필요 : 여러 Job 들이 서로의 실행 순서를 방해하지 않도록 동기화가 필요함 (deadlock 이 발생할 수 있음)
      * deadlock (교착상태) : 잘못된 자원 관리로 인하여 둘 이상의 프로세스들이 아무것도 진행하지 않는 상태
      ex) A가 B를 기다리고, B가 A를 기다림

 

그 외 시스템

  • Multiprocessor Systems
    • Symmetric Multiprocessors : 모든 프로세서가 동등한 역할을 수행하며, 자원을 공유
    • Asymmetric Multiprocessors : 한 프로세서가 다른 프로세서를 관리하며, 역할이 구분됨
  • 분산 시스템 : 여러 시스템이 LAN/WAN 으로 연결되어 하나의 작업을 공동 수행
  • Clustered Systems : 여러 시스템이 네트워크로 연결되어 공통 목표를 위해 작업 수행
  • Embedded Systems : 특정 목적을 위한 시스템
  • Real-time Systems : 시스템에서 수행하는 작업의 완료 시간(Deadline) 이 정해짐
반응형