아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.
운영체제의 역사
- 컴퓨터 역사: 1940년대 말~
- 하드웨어 발전 vs 운영체제 기술 발전
1. no os
- Card reader > memory > processing > line printer
초창기 컴퓨터는 os가 없었다 . omr카드 같은것들을 통해, 사람이 하나하나 수작업으로 카드에 기기어를 입력하고, 그것을 메모리에 찍어 넣는 방법으로 컴퓨터를 운영햇었다. 이에 불편함을 느끼고, 만들어진게, batch processing system(일괄처리) 이다.
2. Batch processing system
- 컴파일 할떄 반복적으로 일어나는 작업을 컴퓨터 스스로 하게 만들어 주었다.
- 이게 초창기 os이다.
- 하지만, 일괄처리는 하나의 명령만 처리할수 있었고 효율적이게 cpu를 다루지 못했다.
3. Multiprogramming system
- 카드리더기에 입력값들을 넣고 작업을 돌리기전까지, cpu는 입력값들을 기다리고 있어야했다.
- 그 시간동안 값비싼 cpu자원이 놀고 있엇는데, 이를 보완한 os 가 Multiprogramming system이다.
- 기존 램위에 하나는 유저 프로그램, 하나는 os 프로그램이 올라는게 아니라, 하나의 os에 여러개의 유저 프로그램을 올리는 방식이다.
- 이렇게 여러개의 프로그램을 돌리다보니, 어떤 유저프로그램을 먼저 돌리는지에 따라 작업 완료 처리 속도가 달라졌다.
- 또한 문제는, cpu가 user1의 작업이 완료 될떄까지, user2의 작업은 진행 되지 않기 떄문에, 새로운 방식을 필요로 했다.
4. Time-sharing system (시공유 시스템)
- multiprograming이 작업순서를 어떻게 처리할지 고민을 했지만, 현재는 time-sharing형태로 동작중이다. 이러한 유저프로그램 순서를 정하는 과정을 스케쥴링 이라고 한다. time-sharing 은 일정한 시간 또는 우선순위를 정하고 특정 시간마다 특정 프로그램이 계산되게 만들어졌다.
- 아래 그림처럼 과거에는 컴퓨터가 매우 비싼 장비였다. 한사람이 컴퓨터를 사용할수 없었기에 단말기 형태로 하나의 컴퓨터에 여러개의 모니터와 키보드를 달아, 사용가능하게 만들었다.
- 이러한 하나의 컴퓨터를 여러사람이 효율적으로 다루기위해 만들어진게 시공유 시스템이고, 예를들어 100분의 1초마다, user1의 작업을 진행하고, 100의 1초가 지나면, user2를 계산 다음은 user3의 작업을 계산하는 형태로 모든 작업이 끝나지 않아도 작업을 공유하는 형태로 작업을 진행햇다 .
- 명령내리고 응답받고 명령내리고 응답받고 이런것들도 가능해졌다.
- 이로 인해 프로세스간 통신이 가능해 졌다.
(unix, linux 처럼 현재 사용되는 os들도, time-sharing 시스템을 이용했다.)
문제점들.
이렇게 하나의 컴퓨터에 여러 작업을 넣다보니, 메모리가 부족해졌다. 이를 해결하기위해 하드디스크에 메모리 데이터를 넣는 방식을 만들었다. 이런걸 가상메모리라고 한다.
앞으로의 강의에서도 time-sharing에 대해 공부한다.
os 기술 천이(os기술의 이동)
- 컴퓨터 규모별 분류
– Supercomputer > Mainframe > Mini > Micro
- 과거에는 메모리 용량이나, 컴퓨터 속도 등 자원 등의 형태로 컴퓨터를 구별했엇다. 80년대 까지는..
- 하나의 컴퓨터에 여러 단말기(키보드,마우스, 모니터)를 연결해서 사용함
– Supercomputer > Server > Workstation > PC > Handheld >
Embedded
- 현재는 작은 일들은 pc가 하고 큰 일들은 server에서 진행하는 형태다.
- 그외에도 handheld, 노트북이나 스마트폰, 등 다양하게 나뉘어 지는데,
- 모든 컴퓨터에는 운영체제가 있다. embedded도...