ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 💻 [OS 오퍼레이팅시스템] #3 | Operating System Overview | OS의 4단계, Serial Processing, Simple Batch Systems, Multiprogrammed Batch Systems, Time Sharing Systems
    CS/OS 2022. 4. 15. 15:39

     

     

     


    💻 OS의 목표

    - Main Objective

    Convenience(편리성) : OS는 실행환경, 개발환경을 제공해서 사용하기 편리하도록 한다.

    Efficiency(효율성) : 컴퓨터 자원을 효율적으로 관리하도록 한다.

    Ability of evolve(설계의 유연함, 진화가능성) : develpment, testing 등 유연한 설계가 가능하다.


    💻 OS의 역할

    - Mediator 중재자 

    프로그래머에게 시스템을 이용하는 안전한 인터페이스를 제공한다.

      - 프로그램의 실행을 제어하고 인터페이스로서 기능한다.

      - 프로그램 생성, 파일 관리, I/O 디바이스 제어를 보조한다.

      - 하드웨어의 세부 디테일은 프로그래머에게 숨겨준다.

     

    - Resource Manager 자원관리자 

    자원을 관리하는데 책임이 있다.

      - 컴퓨터는 데이터를 프로세싱하고 저장하고 이동하기 위한 자원의 집합이다.

     

    SW - HW 계층

    Application programs - Libraries/utilities - Operating System - Execution hardware - bus & Memory translation - I/O devices and networking & Main Memory


    💻 OS의 진화 4단계 (중요)

    <역사적 사실 암기보다 어떠한 문제점이 있었고 해결방법이 무엇인지, 기능시대별 이슈를 아는 것이 중요>

     

    - OS evolution 

    초기 : 컴퓨터는 국가적 자원이여서 utilization이 중요. CPU 이용률과 throughput 처리량 중요.

    현대 : 인간의 노동력 비싸고 상대적으로 디바이스 비용이 낮음. 인간의 생산성 높이는게 중요 -> 얼마나 인간이 요구했을 때 바로 응답하는가? Interactive 중요, 반응속도 중요. 반환시간 중요.

     

    Serial Processing -> Simple Batch Systems -> Multiprogrammed Batch Systems -> Time Sharing Systems

     

    새로운 HW, OS의 Services(새로운 기능), Fixes(요구사항) 이렇게 3가지가 서로 영향을 끼치며 OS가 발전했다.


     1️⃣ [ Serial Processing ] 

    - Computer System 

    late-1940s ~ mid-1950s

    진공관, 플러그 보드로 이루어져있으며 펀치 카드, 테이프를 input으로 사용, 발광체와 프린터를 output으로 사용

    ex) 에니악

     

    - OS  

    operaing system X

       - 인간이 OS로서 개입

       - Job 바꾸는거 수동으로 인간이 함. -> 야기한 문제점 밑에서 설명

    프로그램 실행 위해 카드를 load했다.

       - 어셈블리 또는 HLL를 펀치 카드를 사용하여 소스코드를 넣었다.

       - 소스코드를 번역하는 컴파일러가 필요했다.

       - 모든 작업은 순차적으로 이루어졌다.

    프로그래머가 컴퓨터 하드웨어와 직접 상호작용했다.

       - 결국 이후 사람들이 라이브러리를 개발했다. 

       - 컴파일러, 링커, 로더(loader)가 진화됨

     

    - 문제점  

    고가의 자원 비효율적 사용

    느린 job-to-job 전환

       - High Setup Time : tape 감는 시간, 컴파일러 로딩하고 언로딩 하는 overhead, 수동으로 교체

       - Scheduling Time : 시간할당 짧을 수도 있고 길 수도 있다. 컴퓨터 프로세싱 타임 낭비.


    2️⃣ [ Simple Batch Systems ] 

    - 목표 

    유사한 작업끼리 배치함으로써 setup time을 줄인다. (ex. 같은 컴파일러 쓰는 작업 두 개 붙여서 컴파일러 로드되는 시간 줄임)

    job 바꾸는거 자동화를 위해 노력했다.

     

    - 모니터 

    첫번째 Batch OS이며 first OS이다.

    Resident monitor이며 메인메모리에 항상 존재하고 초기 control을 유지한다.

    한번에 하나씩 테이프로부터 job을 읽어온다.

    무엇을 할 지 나타내는 special card이다. JCL(job control language)의 초기 형태.

    OS 주소 공간(모니터) + 사용자 주소 공간으로 메모리가 나뉘었다.

     

    - 문제점 

    카드 리더매우 느림 (컨트롤러 도입해도 매우 느림) : 자동화 job 시퀀싱에도 불구하고 I/O 디바이스들이 프로세서에 비해 현저히 느리다.

    CPU가 자주 idle한 상태 :  I/O와 CPU가 동기여서 overlap불가능했다. read끝나야 가능했다.

     

    - 문제발견 -> 바람직한 기능 

    1. 모니터에 침범할 때의 메모리 보호

    2. 시스템 타이머 : 상대시간 측정해서 얼마나 수행됐는지 계산 가능하면 적절할 때 종료가능 하는 등 자원관리를 할 수 있다.

    3. 특권 명령어로만 실행 : OS(monitor)에 의해서만 실행(커널모드), I/O 작업들은 특권 명령어 수행이다.

    4. I/O 디바이스 컨트롤러 : 별도의 프로세서로, CPU와 동시에 작업 가능. 각 디바이스 컨트롤러는 Local buffer을 가진다. 인터럽트를 발생시킴으로써 CPU에게 작업 끝났음을 알린다.(CPU는 데이터를 메인메모리와 local buffer사이에서 데이터 옮김) CPU는 요청만 하게 해서 CPU utilization을 향상한다.

    5. CPU와 I/O 비동기, 인터럽트 : I/O가 시작하면, I/O 작업완료를 기다릴 필요 없이 user program으로 제어가 리턴된다. -> 병렬수행 가능


    3️⃣ [ Multiprogrammed Batch Systems ] 

    - 목표 

    위의 문제점 해결. CPU utilization 향상, 여러 작업들을 같이 메인 메모리에 유지시킴으로써 CPU의 idle한 상태 피함.

     

    - 멀티프로그래밍 

    멀티프로그래밍 : 한 메모리에 여러 프로그램을 유지해서 실행. CPU는 여러 프로그램을 병행처리. 한 job이 I/O 때문에 wait하는 상황 발생하면 프로세서는 다른 job으로 스위치할 수 있다.

     

    * short term scheduling : CPU 스케쥴링, 어떤 작업을 CPU에 보낼 것인가 스케쥴링

    * long term scheduling : JOB 스케쥴링, 메모리(레디큐)에 입력하는 스케쥴링

     

    - 문제점 

    1. Relocation : 스와핑 될 때 주소 계속 바뀌어서 프로그래밍 시점과 실행 시점(런타임)의 주소가 다르다. 절대주소로 프로그래밍 못함 -> 프로그램이 임의의 주소에서도 수행될 수 있도록 바꾸어야 한다.

    2. Memory Protection : 메모리보호. 프로세스에 의해 생성된 메모리는 런타임에 확인되어야한다. (ex. job-1이 job-2의 메모리 영역을 접근하여 메모리를 write하는 경우 발생 가능, job-1이 운영체제의 메모리 영역을 접근하여 메모리를 write하는 경우 발생)

     

    - 문제발견 -> 바람직한 기능 

    MMU (Memory Management Unit) : 명령이 수행되는 시점에 CPU가 사용하는 logical addressphysical main memory address로 변환해준다. H/W로 구현한다.

     

    - 예시 문제


    <역사적 배경, 목적, 멀티프로그래밍과 차별점 잘 알아두기>

    4️⃣ [ Time Sharing Systems ] 

    - 배경 

    Integrated circuit : 집적회로로 집적도 향상됐다.

    사용자가 실행 중인 작업과 상호작용 불가능했다.

    하드웨어는 점점 싸지고, 인건비는 점점 비싸져서 사람이 IDLE하지 않게 해줘야 했다.

     

    - 목표 

    사람의 생산성 향상시키기

    multiple interactive jobs (다중 실행 작업) 지원

    프로세서 시간이 다양한 user(다중 사용자)에 의해 공유(shared)

     

     - multiprogramming과 차이점 

      Batch Multiprogramming Time Sharing
    주요 목표 프로세서 사용 최대화 (CPU idle 최소화) 응답시간(Reponse time) 최소화
    (Human idle 최소화)
    OS에 대한 지시의 출처 Job Control Language 명령어(JCL) terminal에 입력된 명령어

     

    - Interactive timesharing 

    모두에게 terminal 주어짐

    많은 사용자들이 한번에 한 machine 사용할 수 있도록 함

        - 프로세스 스위치가 빈번하게 일어남

        - time slice가 각 job마다 할당됨

        - 끝나면 preemption됨. CPU가 ready list에 있는 다음 job에게 control을 줌(스위치) 끝난 job은 ready list로 다시 들어간다.

    구조화된 파일 시스템을 사용

    중앙 서버 시스템으로 자원을 나눠줌

     

    - Time-slice와 Preemption 

    time sharing 일 때와 아닐 때의 응답시간과 반환시간 차이

     

    - Time sharing System들 

    1. CTS (1962) : first timesharing system, MIT

    2. MULTICS (1965) : CTS 보완, protection rings, 구조화된 파일 시스템

    3. UNIX (1970) : Tree 구조 파일 시스템, HLL, 휴대가능 OS (ex. Linux, Mac, OS X)


    - OS의 5개의 중요한 업적 

    멀티프로그래밍과 타임셰어링의 요구를 충족시키기 위해, 개발의 큰 진전인 OS의 5개의 중요한 업적이 있다.

    1. 프로세스

    2. 메모리 관리

    3. 정보의 안전과 보호

    4. 스케쥴링과 자원관리

    5. 시스템 구조