Operating System Overview

sanghoon·2021년 3월 22일
0

운영체제

목록 보기
3/7

OS 수업 정리


Main objectives of an OS

  • Convenience
    OS는 사용자로 하여금 컴퓨터를 편리하게 사용할 수 있게 한다.(복잡한 하드웨어에 대한 abstraction)
  • Efficiency
    컴퓨터의 자원을 효율적인 방법으로 사용할 수 있게 관리한다.
  • Ability to evolve
    현재의 주요 기능을 유지한 채 한층 더 높은 수준의 OS를 위해 발전한다.

Role of an OS

Mediator

개발자들에게 시스템을 사용하기 위한 편리한 인터페이스를 제공한다.

  • 응용프로그램의 실행 제어와 인터페이스 기능을 제공한다.
  • 프로그램 생성, 파일관리, 입출력 장치 제어를 돕는다.
  • 프로그래머들이게 하드웨어에 대한 abstraction을 제공한다.

Resource manager

컴퓨터의 효율적인 사용을 위해 자원을 관리한다.

Evolution of OS


OS의 진화는 크게 네 가지의 단계를 거친다. 컴퓨터가 비쌌던 초기 단계에서부터 인건비가 중요해진 현대의 단계에 이르기까지 시기마다 문제점과 요구사항, 그에 따른 해결방안 이 달라진다. 이를 중심으로 OS가 어떻게 진화하였는지, 진화 과정에서 OS와 HW가 어떻게 상보적으로 발전하게 되었는지를 관찰하여 보겠다.

1. Serial Procesing(순차처리)

이 당시의 컴퓨터는 진공관과 plug board로 이뤄진 매우 크고 비싼 장치였다. Punch card(기계어와 fortran)와 tape을 이용해 명령을 컴퓨터에 전달하였으며, 간단한 빛 장치와 프린터가 출력장치의 전부였다.

  • OS
    • OS가 존재하지 않음
      • OS의 역할을 사람이 수행.
      • Job to Job transition(scheduling time을 변경할 수 없다.)
    • 사람이 프로그램을 돌리기 위해 손으로 직접 card를 적재
      • 소스코드는 어셈블리나 포트란+ 컴파일러 형태로 펀치카드에 기록됨
      • 소스코드를 번역하기 위한 컴파일러 존재
      • 모든 활동이 순차적으로 진행됨
    • 개발자들이 하드웨어와 직접 교류
      • 다른 유저들을 위한 library를 만들기 시작함 -> os의 발단
      • compiler, linker, loader 등
  • 문제점
    • 비싼 컴퓨터자원을 효율적으로 사용할 수 없음
    • 느린 Job to Job transition
      • Scheduling time
        프로그램마다 실행시간이 다름(idle time, over time) -> 컴퓨터가 시간을 효율적으로 쓸 수 없게 함
      • High setup time
        1. 프로그램마다 다른 컴파일러를 load/unload하는 데 들어가는 overhead
        2. sequencing이 수동으로 진행됨

2. Simple Batch System

  • 목적
    • 비슷한 프로그램을 묶어 compiler가 달라질 때마다 생기는 overhead를 최소화
    • job sequencing의 자동화
  • Monitor
    • 최초의 batch OS(동시에 최초의 OS이기도 함)
    • 메모리에 상주하고 있으며 초기 통제 역할 수행(called resident monitor)
    • 어떤 일을 수행해야 하는지 알려주는 card 존재
      • 원시적 형태의 Job control language(JCL)로 구성 : 명령어를 monitor로 보내기 위한 특수 언어. 어떤 컴파일러를 써야하는지 알려줌
  • Monitor에 대한 요구사항
    • Memory protection for monitor : 프로그램이 실행될 때, 메모리 상에 있는 monitor 영역을 침범하지 말아야 함.
    • System timer : 특정 job이 시스템을 독점하는 것을 방지해야 함.
    • Privileged instructions : monitor에 의해서만 수행되는 특수 목적의 명령어. I/O 명령어 등이 있다.(따라서 특정 프로그램이 입출력을 수행하고 싶을 때는 반드시 monitor를 거쳐야 함.)
    • I/O device controller(I/O device의 속도 향상을 위함)
      • 각 device는 자신만의 processor와 local buffer를 갖는다.
      • Intr를 발생시켜 CPU에게 자신의 일이 끝남을 알린다.
    • Interrupts for overlapping CPU and asynchronous I/O
      • sync I/O : 입출력 연산이 발생하면, 해당 연산이 수행될 때까지 프로그램이 잠시 멈추고 있어야 함.(대부분의 read 연산) -> CPU 사용률이 여전히 낮다는 문제를 야기함
      • async I/O : 입출력 연산이 발생해도 해당 연산이 수행되는 것과 상관 없이 프로그램이 지속됨(대부분의 write 연산; 다음 코드에 대한 의존성이 낮은 연산)
  • Problems
    • Card reader가 매우 느림 : automatic job sequencing 방식을 사용해도 여진히 I/O device들이 processor에 비해 매우 느림
    • CPU가 종종 idle해짐(sync I/O 연산이 발생했을 때)

3. Multiprogrammed Batch System

  • 목적
    • CPU의 사용률을 높히기 위함
    • CPU의 idle을 피하기 위해 다수의 프로그램들을 메인 메모리에 올림
  • Terms(Uni-programming and Multi-programming)
    • Uni-programming : 어떤 프로그램에서 입출력 지시가 있으면 프로세서는 그 지시가 해결될 때까지 멈췄다가 이후 해당 프로그램을 재개하는 방식
    • Multi-programming : 특정 프로그램에서 입출력 지시가 있어 wait이 발생할 경우, 프로세서가 다른 프로그램으로 전환하거나 동시에 일을 수행하는 방식. scheduling 알고리즘을 거쳐 다음에 수행될 작업이 결정된다.(Central theme of modern OS)
    • degree : multiprogramming 되는 프로그램들의 수. 이것이 높아질수록 utilization도 높아지다가 특정 값 이상으로는 utilization의 증가가 멈춤.
    • swap : 디스크에서 메모리로 Job을 올리거나 내리는 작업을 지칭하는 말.
  • 특징
    • Relocation : 같은 프로그램이 다시 메모리로 swap될 때 시작 위치가 달라진다. 이를 프로그래머들이 몰라도 cpu 사용률을 높히기 위해 계산해주는 과정 필요.
    • Memory protection : process가 진행됨에 따른 메모리의 참조위치가 매번 확인되어야 한다.
      -> MMU(Memory management unit) 탄생 - logical address와 physical addressd에 대한 연산을 수행하는 adder와 comparator를 통해 relocation과 memory protection을 해결

4. Time Sharing Systems

  • 등장 배경
    • 집적회로(Integrateed circuit; IC)의 등장으로 CPU의 집적도가 올라감
    • 사용자가 작동하고있는 job과 교류할 수 없음
    • 컴퓨터는 점차 싸지고, 인건비는 점점 올라감
  • 목적
    • 사람들이 더 생산적으로 일할 수 있도록 도와줌
    • 많은 interactive jobs를 다루는 데에 사용됨
    • 다수의 사용자들이 processore time을 공유함
  • Interactive timesharing
    • 모두에게 terminal을 부여함
    • 다수의 유저가 같은 기기를 동시에 사용할 수 있도록 함
      • switch가 빈번히 일어남
      • 각각의 job에 대해 time sclice가 부여됨(preemption; 선점)
      • time sclice가 소멸하면 대기하고있던 바로 다음의 job이 CPU control 권한을 받으며, 이전의 job은 대기열의 맨 끝으로 배치됨.
    • data들을 한 줄에서 관리함 : 구조화됨 file system을 사용함 -> privacy 보호가 필요해짐
    • time slicing의 예시

      사진 윗줄 : non preemtion / 아랫줄 : preemtion ; 선점을 이용한 방식이 그렇지 않을 때보다 평균 응답 시간과 평균 처리 시간이 빠름
  • 이 방식을 사용한 OS의 예시

Major advances in development

Multiprogramming과 time sharing의 복잡한 요구사항을 충족하기 위해, OS 부문에서 다음과 같은 5가지의 성과가 나타났다.

  • Processes
  • Memory management(dynamic)
  • Information protection and security(caused by multi-user)
  • Scheduling and resource management
  • System structure

21.03.22 evolution of os 사진까지 업로드
21.03.23 time sharing systems 전까지 완료
21.03.25 전체 완료

0개의 댓글