본문 바로가기

CS/OS

Operating System Overview

OS의 주요 목적

1. Convenience 편리성

2. Efficiency 효율성

3. Avility to evolve 진화

 

 

OS의 역할

Mediator

프로그래머에게 시스템 사용을 위한 편리한 인터페이스 제공

- 응용프로그램의 실행을 제어하고 인터페이스 역할

- 프로그램 생성, 파일 관리 및 I/O 장치 제어, 라이브러리 또는 유틸리티 지원

- 프로그래머의 하드웨어 세부 정보를 숨김

 

👍Resource Manager

- 데이터의 이동, 저장, 처리를 위한 리소스들을 OS가 관리한다.

 

 

OS의 발전, 진화

OS의 요구사항의 핵심을 이해하기 위해

 

1) Serial Processing (1940-1950)

computer

- 컴퓨터가 진공관으로 이루어져 있었다.

- punched cards와 tape로 입력을 받았다.

- lights와 프린터로 display

 

⭐️OS

OS가 존재하지않았다. 그렇다면? Human operator가 OS 역할을 대신했다. (Job-to-Job transition)

사람이 카드를 로드하여 프로그램을 실행하였다.

 

소스코드는 punch card를 사용하여 어셈블리 또는 고급언어로 입력되엇다.

이 소스 코드를 해석하기 위해서 컴파일러가 필수적이었다.

이 때의 모든 컴퓨터 활동은 순차적이었다.

 

⭐️Problems

매우 비싼 자원(진공관 등)을 사용했기 때문에 매우 비효율적이었다.

Job-to-Job transition이 매우 느렸다.

 

1. Scheduling time 

- 시간 할당이 짧거나 긴데, 시간을 딱 맞추기가 어려웠다. -> 스케줄링 문제 !

- 결과적으로 낭비되는 컴퓨터의 처리 시간이 생겼다.

 

2. High Setup Time

- 컴파일러를 로드하고 언로드 할 때의 추가적인 오버헤드가 발생한다.

- 순차적으로만 처리가 가능했다.

-> Setup Time이 오래걸렸다 !

 

 

2) Simple Batch Systems

OS의 등장!

 

⭐️Goal 목표

- 속성이 유사한 작업을 batch 일괄 처리하여 Setup Time을 단축하는 것이 목표!

- Automatic job sequencing

 

⭐️Monitor

첫번째 batch OS

-  항상 메인 메모리에 상주하고 있어야했다. (Resident monitor)

-  tape boundary에서 한번에 하나씩 job을 읽을수 있다. (queue)

- Special 카드는 할일을 표시 ! (JCL: Job Control Language)

 

⭐️바람직한 기능

- 모니터를 위한 메모리 보호가 필요하다 !

왜냐, 다른 작업에 관여하는 버그가 발생했다. 따라서 프로그램이 실행되는 동안 다른 Job들이 모니터에 접근하지 못하게 하는 보호가 필요했다.

 

- System Timer가 필요하다 !

왜냐, 한 작업이 시스템을 독점하면 안되게 때문에

 

- 특권이 있는 명령어가 필요하다 ! = 레지스터가 필요하다.

사용자 프로그램이 I/O를 수행하고자 할 경우, 모니터가 이에 대한 작업을 수행하도록 요청할 수 있는 명령어가 필요하다.

I/O 명령어는 privileged instruction 이기 때문에

 

- I/O device controller 가 필요하다 !

I/O 디바이스는 굉장히 느리기 때문에 제어를 위해 컨트롤러를 만들어야했다.

I/O 디바이스 컨트롤러에도 프로세서가 있기 때문에 I/O 디바이스와 CPU 동시 실행이 가능하다.

각 컨트롤러에는 로컬 버퍼가 있기 때문에 컨트롤러가 CPU에 인터럽트를 발생시켜서 작동이 완료 되었음을 알린다.

 

- synchronous I/O : 동기식 I/O

다음 코드에 영향을 미치기 때문에 완료될 때까지 CPU가 기다려야 했다.

- asynchronous I/O : 비동기식 I/O

비동기식 I/O는 CPU가 완료를 기다리지 않고 실행 가능했기 때문에 문제가 없다 !

-> 동기식 I/O가 문제

 

⭐️Problems !!

1. Card reader very slow

- 자동으로 작업 순서를 지정해도 I/O 디바이스가 프로세서와 비교했을 때 매우 느렸다

2. Cpu is often idle 종종 쉰다..

- synchronous I/O와 CPU는 겹칠 수 없기 때문에 !

- 이때는 single job 처리만 가능했기 때문에 기다릴 수 밖에 없었다.

 

 

--> 해결을 위해 등장한것

 

3) Multiprogrammed Batch Systems

⭐️Goal 목표

CPU의 utilization을 높이자 !!!

-> 멀티프로그래밍을 하자

여러 Job들이 이제 메인 메모리에 동시에 저장된다. (왜? CPU의 idle을 피하기 위해서)

 

⭐️Uni-programming

- I/O 명령을 기다림 !

 

⭐️Multi-programming

- 다른 job으로 변경 가능 !

-> utilization 향상

 

⭐️Problems

1. Relocation

- 다수의 job들이 메모리에 올라와서 프로그램 시작위치가 바뀐다 !

- 우리는 실제로 어떤 다른 프로그램이 메인메모리에 상주할지 모르는데, 프로세서 활용을 극대화하려면 !

- swap-in, swap-out (swap area) 을 통해 프로세서의 utilization을 극대화한다 !

 

2. Memory Protection

- 모니터의 메모리를 침범하거나 다른 job들의 메모리를 침범하는 문제가 있었다.

 

⭐️바람직한 기능

- MMU (Memory Management Unit) : Relocation의 문제 해결

logical address를 pyhsical address로의 변환이 필요하다.

이를 가능하게 하는 레지스터가 Base register, Bound register (= limit resgister)

Base register가 시작주소, Bound register를 넘어가는지 비교해서 확인한다.

-> 주소 개념의 도입

 

⭐️example

utilization을 계산해보자!

CPU Usage: job1 70% 5min, job2 10%15min, job3 10% 10 min

- Uniprogramming

1/6 * 70% + 3/6 * 10% + 2/6 * 10% = 대략 20%

- Multiprogramming

1/3 * 70 + 1/3 * 10 + 1/3 * 10 = 대략 30%

 

 

4) Time Sharing Systems

IC회로의 속도가 오르고 가격이 싸졌다.

이제 여러 사용자에게 CPU를 switch 해주는게 목표 ! -> Time sharing

more productive

processor time을 multie user들이 공유하도록 !

Batch Multiprogramming 의 목적은 프로세서의 사용을 극대화하고 JCL 을 사용한다.

Time Sharing은 응답 시간을 줄이고 터미널 을 사용한다.

 

- 모든사람이 터미널을 사용할 수 있다.

- 여러 사용자가 한번에 같은 machine을 사용할 수 있도록한다.

switch가 자주 발생한다.

각 job에 Time slice 할당 (preemption 선점) : 시간이 지나면 CPU가 뺏어온다.

Time slice가 만료될 때마다 다음 job이 실행된다.

 

- data 를 지키기 위해서 file system이 등장하게 되었다.

 

평균 응답 시간

평균 종료 시간

 

ex) CTS, MULTICS, UNIX

 

 

Processes

Memory management

Information protection and security

Scheduling and resource management

System structure

'CS > OS' 카테고리의 다른 글

Thread  (2) 2021.05.17
Process Scheduling 2 (미완)  (5) 2021.05.10
Process Scheduling 1  (2) 2021.05.09
Computer System Overview 2 (미완)  (0) 2021.03.11
Computer System Overview 1  (4) 2021.03.11