1-2.[os] 운영체제의 역사
1. 초창기 컴퓨터(1940년대)
- 에니악
2. 일괄작업 시스템(1950년대)
- OMR카드 리더 : 입력
라인 프린터 : 출력
일괄 작업/일괄 처리(batch job, batch process) : 모든 작업을 한꺼번에 처리하고 중간에 수정이 불가능
- .bat 파일은 batch job에서 따온 것, 운영체제가 시작할 때 한꺼번에 처리해야할 작업을 모아놓음
- 단순 계산 위주 작업
- 작업 시간 예측 가능
3. 대화형 시스템(1960년대)
- 키보드 : 입력
모니터 : 출력
대화형 시스템: 중간에 수정 및 확인 가능
- 응용 프로그램 만들 수 있게 됨
- 작업 시간 예측 불가능
4. 시분할 시스템(1960년대)
- (time sharing system)
- 멀티 프로그래밍(multiprogramming): 하나의 CPU로 여러 작업을 동시에 실행
- 시간을 분할하는 방법
- CPU 사용 시간을 잘게 쪼개서 여러 작업에 나눠줌
- 동시에 이루어지는 것처럼 보임
- 시간 한 조각: time slice
- 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못함
다중 사용자 시스템
- 멀티프로그래밍 수준(level of multiprogramming): 동시에 실행이 되는 작업의 개수
- 여러 작업을 동시에 실행할 수 있다 -> 하나의 컴퓨터에서 여러명이 작업할 수 있다 -> 다중 사용자 시스템(multi-user system)
- 이 시기 유닉스 개발: 멀티프로그래밍 + 다중 사용자
실시간 시스템(real-time system)
- 시분할 시스템을 사용하지 않고 특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장한다
- ex) 원자력, 미사일
6. 분산 시스템(1970년대 후반)
- 스티브 잡스: 개인용 컴퓨터 '애플' 출시
- TCP/IP
a. 메인프레임
- 고가의 대형 컴퓨터, 많은 양의 데이터 처리, 고렴이
b. 분산 시스템
- 저렴이 컴을 묶어서 대형 컴에 버금가는 시스템
- 네트워크상에 분산되어있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호교환
- 모든 저렴이 컴들이 동일한 지위 -> 고장/수정 시 작업 분배하고 결과 모으기가 어려움
7. 클라이언트/서버 시스템(1990년대~현재)
- 이중구조
- 클라이언트: 작업을 요청
- 서버: 요청받은 작업을 처리
웹시스템의 등장: 그림, 링크
서버 과부화 : 모든 요청이 서버로 집중됨
- 서버 수백 대가 필요할 수도
데몬(daemon): (클라이언트의 요청을 처리하기 위해) 서버가 멈추지 않고 계속 작동하는 프로그램
- 서버: 데몬을 가진 컴퓨터
8. P2P 시스템(2000년대 초반~현재)
- 전세계 MP3 음악파일을 공유하는 트렌드
- MP3 파일은 용량이 크다
- 클라이언트/서버 시스템 -> 서버 과부하
- 검색만 서버가 맡음
P2P 시스템(Peer-to-Peer System)
- 서버의 부하를 줄임
- 말단 노드(peer): 사용자의 컴퓨터
- 서버를 거치지 않고 사용자와 사용자를 직접 연결
- 사용자간의 파일 전송
P2P 시스템 예시)
메신저
- 수만명 동시채팅 + 파일 주고 받기
- 사용자 인증 등의 정보를 위해 서버가 있는 P2P 시스템
파일 공유
- 서버가 없는 P2P 시스템
- 여러 사용자로부터 조금씩 데이터를 나누어 받아 하나의 파일을 완성
- 10명에게 데이터를 받는다면 1명에게 데이터를 받을 때보다 속도가 10대 빨라진다
데이터를 받는 도중 1~2명이 프로그램을 중단해도 다른 사람에게 나머지를 받을 수 있다
비트코인, 블록체인
- P2P 시스템 전체에 거래 장부를 분산시켜 하나가 유실되더라도 영향을 미치지 않는다
9. 기타 컴퓨터 환경(2000년대 초반~현재)
a. 그리드 컴퓨팅
- 필요한 컴퓨팅 자원을 구매하여 사용하는 컴퓨팅 환경
- 분산시스템
- 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하고, 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경
- 연구용
- 산업용
SaaS:
- 서버에서 실행하고 사용자는 인터넷을 통해 서비스를 이용하고 그만큼 비용을 지불
- 프로그램을 깔거나 업데이트를 할 필요 없이 인터넷에 접속하면 누구나 이용 가능
b. 클라우드 컴퓨팅
- 언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경
- 클라우드 컴퓨팅 = 그리드 컴퓨팅 + SaaS
- 클라우드 서버에 회사 홈페이지를 올려놓고 사용한 만큼 비용을 지불
- 서버 관리와 네트워크 관리를 클라우드 서버 제공자가 알아서 해준다
- 많은 계산을 해야해서 구현하기 어려웠던 기술을 가능하게 함
c. 사물 인터넷
- 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술