운영체제의 발전사를 history별로 정리하여 알아보자.
1950년대
- ENIAC이라는 첫번째 컴퓨터가 등장.
- 50년대에는 운영체제라는 개념이 없었으며, 1개의 응용 프로그램 실행도 버거웠음.
- 응용 프로그램이 시스템 자원을 직접 제어했다.
1960년대 초반
- 배치 처리 시스템(batch processing system) 출현
- 여러 응용 프로그램을 등록시켜놓으면, 순차적으로 실행하는 시스템
- 배치 처리 시스템을 기반으로 운영체제가 출현

1960년대 후반
- 시분할 시스템 (Time Sharing System)
- 멀티 태스킹 (Multi Tasking)
위 개념이 제안만 되었으며 운영체제로 구현되지는 않았음.
시분할 시스템과 멀티 태스킹
- 시분할 시스템: 다중 사용자를 지원하고, 컴퓨터 응답 시간을 최소화하는 시스템
- 멀티 태스킹: 단일 CPU에서, 여러 응용 프로그램의 병렬 실행을 가능케 하는 시스템
배치 시스템

시분할 시스템

배치 시스템을 봤을 때 app2가 실행되려면 app1을 모두 기다린 후에 실행할 수 있다.
하지만 시분할 시스템을 적용하면 app2는 app1을 모두 기다리지 않고도 실행이 가능하다.
멀티 태스킹은 시분할 시스템과 매우 유사한 원리이다.
여러개의 작업을 시간 단위로 잘게 쪼개서 실행하는 원리로, 여러 작업이 동시에 실행되게끔 한다.
1970년대
UNIX (유닉스) OS 등장
- 1970년대 이전: Assembly 언어로 소프트웨어 개발
- CPU(명령어), Memory(주소)를 직접 지정함.
- 컴퓨터마다 각각 다시 개발해줘야함.
- 프로그래밍의 복잡도가 높음
- 1970년대 C언어가 개발된 후
- 컴파일러 등장으로 컴퓨터마다 다시 개발할 필요가 없어짐
- 컴파일러가 각각의 컴퓨터에 맞는 어셈블리어로 변환해주기 때문
- 프로그래밍의 복잡도가 상대적으로 낮음
UNIX 특징
- 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제
- 멀티 태스킹, 시분할 시스템, 멀티 프로그래밍 적용
1980년대
개인용 컴퓨터 시대
- 1980년대 이전: 대형 컴퓨터를 여러 명이 접속해서 사용 (UNIX)
- 1980년대 ~: Personal Computer (PC)
컴퓨터를 사용하는 사람 사이에 OS가 있다.
OS는 크게 CLI와 GUI를 지원하는데,
- CLI (Command Line Interface): 터미널 환경
- GUI (Graphical User Interface): GUI 환경
1980년대에 CLI -> GUI로 넘어가는 시대였다.
1990년대
- GUI환경 구성으로 응용 프로그램의 시대.
- Windows OS(window 95)의 대중화.
- 네트워크 기술 발전 - 월드와이드웹(WWW) 인터넷의 대중화
- 오픈 소스 운동 활성화 시작
- UNIX 계열 OS와 응용 프로그램 자체 개발하고 소스를 공개
- LINUX (리눅스) 운영체제 개발, 소스 공개, 무료
2000년대
- 오픈 소스 활성화
- LINUX (리눅스) 운영체제
- Apache (아파치, 웹서버)
- MySQL (데이터베이스)
- 안드로이드, 딥러닝, 데이터사이언스, IoT 관련
- 가상 머신, 대용량 병렬 처리 등 활성화