개발세발
운영체제의 역사 본문
운영체제의 역사
구분 | 시기 | 주요기술 | 특징 |
0기 | 1940년대 | 없음 | 진공관(0과 1) 사용 |
1기 | 1950년대 | 카드 리더, 라인 프린터 | - 일괄 작업 시스템 - 운영체제의 등장 |
2기 | 1960년대 초반 | 키보드, 모니터 | - 대화형 시스템 |
3기 | 1960년대 후반 | C언어 | - 다중 프로그래밍 기술 개발 - 시분할 시스템 |
4기 | 1970년대 | PC | - 개인용 컴퓨터의 등장 - 분산 시스템 |
5기 | 1990년대 | 웹 | - 클라이언트/서버 시스템 |
6기 | 2000년대 | 스마트폰 | - P2P 시스템(메신저, 파일공유) - 그리드 컴퓨팅 - 클라우드 컴퓨팅 - 사물 인터넷 |
📍 일괄 처리 시스템(Batch processing system)[일괄 작업 시스템(Batch job system)
: 모든 작업을 한꺼번에 처리해야 하고, 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능함
- 작지만 운영체제가 사용되었기에 메인 메모리가 운영체제의 상주 영역과 사용자의 사용 영역으로 나뉘어 있음
- 프로그램과 데이터를 같이 입력하여 작업의 최종 결과만 얻을 수 있어서 작업 중간에 새로운 값을 입력하거나 데이터를 변경하는 것이 불가능함
- 단순 계산 위주의 작업만 가능
* CPU 집중 작업 (CPU bound job / CPU편향 작업 / 컴퓨터 집중작업(coumputer bound job)
: 일괄 작업 시스템에서는 프로그램이 실행되는 동안에 입출력이 불가능하기 때문에 대부분의 작업이 CPU만 사용하는 계산 작업이었음
ex. 수학 계산
📍 대화형 시스템 (1960년대 초반)
: 컴퓨터와 사용자의 대화를 통해 작업이 이루어 지는 것
- 1960년대 초반에 키보드와 모니터가 등장하며 이루어짐
➡️ 작업 중간에 사용자가 입력을 하거나 사용자에게 중간 결과값을 보여줄 수 있게 됨
: 중간값을 출력하여 프로그램에 이상이 있느지 혹은 프로그램이 정상적으로 진행되고 있는지도 확인할 수 있게 됨
- 문서 편집, 게임 등과 같은 다양한 종류의 응용프로그램을 만들 수 있게 됨
* 입출력 집중 작업(I/O bound job)
: 대화형 시스템 에서는 프로그램이 실행되는 동안에 입출력이 가능하면서 생겨남
- 대부분의 작업 시간을 주변장치의 입력과 출력에 사용함
ex. 동영상 플레이, 데이터 베이스
📍 시분할 시스템(time sharing system) [다중 작업(multitasking)] (1960년대 후반)
: 하나의 CPU로 여러 작업을 동시에 실행하는 기술
: CPU 사용 시간을 잘게 쪼개어 작업들에 나누어줌으로써 모든 작업이 동시에 처리되는 것 처럼 보임
(ex. 영화 필름 한장한장 -> 움직임)
- 시분할 시스템의 단점
: 여러 작업을 동시에 처리하기 위한 추가 작업이 필요함
: 시스템 내에 많은 양의 작업이 공존할 경우, 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못함
* 타임 슬라이스(time slice) [타임 퀀텀(time quantum)] : 잘게 나뉜 시간 한 조각
* 멀티프로그래밍 수준(level of multiprogramming) [멀티 프로그래밍 정도(degree of multiprogramming)]
: 시분할 시스템에서 동시에 실행되는 작업의 개수
➡️ 하나의 컴퓨터에서 여러 명이 작업할 수 있는 다중 사용자 시스템(multi-user system)이 가능해짐
* 유닉스Unix
: 멀티프로그맹과 다중 사용자를 지원하는 운영체제
- 소스코드를 공개하고 다양한 업체 및 프로그래머와 공동 작업 끝에 탄생한 작고 안정적인 운영체제
📍분산시스템(1970년대 후반)
: 개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만든 것
➡️ 네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구상한 시스템
- 분산 시스템의 단점
: 시스템에 참가하는 모든 컴퓨터가 동일한 지위이기 때문에 컴퓨터가 고장나거나 추가되면 작업을 분배하고 결과를 모으기가 쉽지 않음
* LAN (Local Area Network) : 서로 호환되지 않음
- LAN을 묶기 위해 아르파넷ARPanet이 만들어짐
- 아르파넷이 대중에게 개방되면서 컴퓨터간의 네트워킹을 위한 TCP/IP (Transmission Control Protocol / Internet Protocol) 라는 프로토콜을 정의함.
📍 클라이언트/서버 시스템(1990년대 후반~ 현재)
: 분산 시스템의 단점을 극복하기 위한 기술로
- 모든 컴퓨터의 지위가 동일한 분산 시스템과 달리 작업을 요청하는 클라이언트
- 거기에 응답하여 요청받은 작업을 처리하는 서버의 이중구조로 나뉨
-클라이언트/서버 시스템의 단점
- 서버 과부하
: 모든 요청이 서버로 집중되기 때문에 수십만 명의 클라이언트를 처리하기 위해서는 많은 서버와 큰 용량의 네트워크가 필요함
* 데몬 Daemon
: 클라이언트/서버 시스템에서 서버가 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리하기 위해 계속 작동하는 프로그램
서버 | 웹 서버 | FTP 서버 | 이메일 서버 |
데몬을 가진 컴퓨터 | 웹 데몬이 설치된 컴퓨터 *웹 데몬 - 아파치 톰캣 Apache Tomcat - IIS Internet Information Services |
FTP 데몬이 설치된 컴퓨터 | 이메일 데몬이 설치된 컴퓨터 |
📍 P2P(Peer-to-Peer system) 시스템(2000년대 초반 ~ 현재)
: P2P 시스템은 기술 규제로 발전하지 못하다가 메신저 프로그램이 도입되어 큰 발전을 이루었다
: 메신저에 로그인하면 먼저 서버에 접속하여 사용자 인증(certification)과 출석(presence)등의 정보를 받는데 이 절차가 완료되면 서버를 거치지 않고 직접 채팅을 하거나 데이터를 전달할 수 있다
서버가 없는 P2P 시스템 | 서버가 있는 P2P 시스템 |
- 메신저 : 사용자 인증, 출석 정보, 과거 데이터 보관 등 |
- 비트코인 Bitcoin의 블록체인 Block chain |
📍그리드 컴퓨팅 grid computing
: 컴퓨팅 자원을 구매하여 사용하는 컴퓨팅 환경
: 분산 시스템의 한 분야, 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀Computer pool을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경
➡️ 대용량 데이터의 연산을 소규모 연산으로 나누어 여러 대의 컴퓨터로 분산시킨다는 점에서 분산 시스템이라고 볼 수 있음
- CPU 관리, 저장소 관리, 보안 조항, 데이터 이동, 모니터링과 같은 서비스를 위한 표준 규약 생성에 기여함
* 그리드 딜리버리 grid delevery
: 웹하드를 운영하는 측에서 데이터를 사용자의 컴퓨터에 분산 저장하여 서버에서 파일을 주는 것이 아니라 전에 해당 파일을 내려받은 컴퓨터로부터 몰래 데이터를 빼와서 전달하는 것
➡️ 웹하드 서비스 업체가 무료로 웹 하드 이용권을 나누어주는 것은 서비스 가입자 몰래 그리드 딜리버리 프로그램을 깔아서 서버의 부하를 줄이기 위함
↔️ SaaS(Software as a Service)
: 사용자가 필요할 때 소프트웨어 기능을 이용하고 그만큼만 비용을 지불하는 개념
- 필요한 기능을 모아 서버에서 실행하고 사용자는 인터넷을 통해 필요한 서비스만 제공받으며 월별, 혹은 서비스를 이용한 만큼 비용을 지불함
📍 클라우드 컴퓨팅 Cloud Computing
: 언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨터 환경 (그리드 컴퓨팅 + SaaS)
: 하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨터 환경이라는 의미
- PC, 휴대전화, 스마트 기기등을 통해 인터넷에 접속하고, 다양한 작업을 수행하며, 기기 간의 데이터 이동이 자유로운 컴퓨팅 환경
📍 사물인터넷 Internet of Things IoT
: 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
인터넷으로 연결된 산업들이 데이터를 주고 받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출함
- 인공지능, 로봇 공학, 무인 운송수단, 3D 인쇄,나노 기술 등에 사용
'코딩공부 > OS' 카테고리의 다른 글
04. 컴퓨터의 기본 구성 (0) | 2022.12.26 |
---|---|
03. 운영체제의 구조 (0) | 2022.12.23 |
CPU bound, io bound (0) | 2022.12.20 |
운영체제란 (0) | 2022.12.20 |
URL, URL, URN (정리중) (0) | 2022.06.23 |