OS 수업 정리
Main objectives of an OS
- Convenience
OS는 사용자로 하여금 컴퓨터를 편리하게 사용할 수 있게 한다.(복잡한 하드웨어에 대한 abstraction)
- Efficiency
컴퓨터의 자원을 효율적인 방법으로 사용할 수 있게 관리한다.
- Ability to evolve
현재의 주요 기능을 유지한 채 한층 더 높은 수준의 OS를 위해 발전한다.
Role of an OS
개발자들에게 시스템을 사용하기 위한 편리한 인터페이스를 제공한다.
- 응용프로그램의 실행 제어와 인터페이스 기능을 제공한다.
- 프로그램 생성, 파일관리, 입출력 장치 제어를 돕는다.
- 프로그래머들이게 하드웨어에 대한 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
- 프로그램마다 다른 컴파일러를 load/unload하는 데 들어가는 overhead
- 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 전체 완료