-
💻 [OS 오퍼레이팅시스템] #3 | Operating System Overview | OS의 4단계, Serial Processing, Simple Batch Systems, Multiprogrammed Batch Systems, Time Sharing SystemsCS/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 address를 physical 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 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. 시스템 구조
'CS > OS' 카테고리의 다른 글