kwan's note

Batch frame, spooling, multi programming, time sharing 본문

Computer Programming/Operating System -Korea Univ

Batch frame, spooling, multi programming, time sharing

kwan's note 2021. 3. 14. 15:57
반응형

강의출처: 고려대학교 유혁 교수님 운영체제

 

1950,60년대의 컴퓨터는 지금과 많이 달랐습니다.

모든 프로그램은 기계어로 쓰여졌고 프로그래밍 언어와 운영체제라는 존재가 없었습니다.

하지만 점점 필요성이 증가하고 다양한 문제를 해결하고자 프로그래밍 방식이 생겨났고 그에따라 operation의 방식도 발전하였습니다.

 

가장 먼저 사용된 방식은 일괄처리 방식입니다.

punch card를 제출하면 그대로 적제하고 수행하는 방식입니다.

이 방식은 하나의 일이 끝나고 나서 다음 프로그램을 일일이 실행해야했고 idle time이 너무 길었습니다.

그래서 약간 발전된 형태로 Automatic job sequencing이 생겼습니다.

automatic job sequencing은 사람의 관여 없이 여러 프로그램을 순차적으로 진행하도록 하였습니다.

 

하지만 여전히 I/O에 의해 cpu가 idle 상태로 전환되는 문제를 해결하지 못하였고 이에따라 또다른 방식이 고안되었습니다.

 

가장 초기의 해결책은 spooling 이었습니다.

프린터에서를 보면 인쇄할 문서를 버퍼에 로드하고 프린터가 이 버퍼에서 가져와서 프린트하는 형태입니다.

이를 통해 I/O와 연산이 동시에 가능해졌습니다.

 

하지만 I/O가 프린트가 아닌 scan 혹은 다른 input을 받아야 다음 line이 실행될수 있는 형태 등에서는 여전히 유휴시간이 길었습니다.

 

이에따라 multiprogramming이라는 방식을 통해 메모리에 job들을 미리 올려놓고(single batch 가 아니라) I/O가 진행되면 다음 job을 진행하는 형태의 스케쥴링이 가능해졌습니다.(ex fifo)

 

-- mulit programming은 concurrent하다고도 볼 수 있다(하지만 sleep 하고 있음)

-- simultaneous하다고는 볼 수 없다.

 

multi programming이 도입되면서부터 OS가 도입됐다고 볼 수 있습니다.

 

하지만 자발적인 yield에 의해 job switch가 진행되므로 의도적으로 io를 안하는경우, 혹은 high priority로 수행해야 하는 작업등에서 기존의 job scheduling의 한계가 존재했고 이에따라 직접 관여하는 방법이 필요하게 되었습니다.

 

이러한 한계를 극복하기 위해 time sharing이 생겼습니다.

cpu를 타임슬라이스로 나누어서 일정 시간동안 실행하도록 하였습니다.

 

위 슬라이드의 예시처럼  10ms라면 초당 천번의 switch가 발생합니다.

 

그렇지만 타임슬라이스가 어느정도 돼었는지 어떻게 구현할 수 있을까요. 만약 application이 시간을 잰다면 믿을 수 없고 cpu가 시간을 잰다고 하더라도 application이 이를 보고 10ms마다 switch해야한다면 이것도 volunteer에 의한것이므로 확실하지 않습니다. 

방법1. 컴파일러러가 어느정도 줄 이상이 되면 switch하는 명령을 실행한다.

 

스위치할때 프로그램의 state를 저장해야한다.

(program counter, stack pointer, register값 등)

 

time sharing도 concurrent합니다. 하지만 멀티프로그램과 그 성질은 다릅니다.

multitask

 

multitasking은 자기가 스스로 복제본을 만들어서 여러 태스크를 진행

 

다만 멀티태스킹은 메모리 관리가 복잡해지고 같이 동작해야한다.

 

멀티태스킹의 task들은 각각의 job으로 분류되는것이 아닌 하나의 job에서의 그룹과 같은 형태로 동작한다

반응형

'Computer Programming > Operating System -Korea Univ' 카테고리의 다른 글

운영체제 복습노트  (0) 2021.03.14