-1950년대
*ENIAC, 첫 번째 컴퓨터이자, 운영체제가 없음. 1개의 응용 프로그램을 실행시키기도 힘든 수준이었고,
운영체제가 없어서 응용 프로그램이 시스템 자원을 제어하는 형태였다.
-1960년대 초반
*프로그램 종류도 많아지고, 사용자도 점차 증가했던 시기
*배치 처리 시스템(Batch Processing System) 출현 (여러 응용 프로그램을 순차적으로 실행하는 시스템)
*배치 처리 시스템을 기반으로 운영체제가 출현
*배치 처리 시스템은 순차적으로 실행할 프로그램을 등록(순서 포함), 순차적 실행
*단 배치 처리 시스템은 컴퓨터 응답 시간(response time)이 오래 걸릴 수 있음.
(프로그램1은 12시간, 2는 1분 소요되고, 1, 2 순서로 실행될 경우 2는 1분밖에 안걸림에도 12시간을 기다려야 함.)
-1970년대 후반
*새로운 개념이 제안됨, 실제 운영체제로 구현되지는 않음
*시분할 시스템(Time Sharing System)
-응용 프로그램이 CPU를 사용하는 시간을 잘개 쪼개서 여러 응용프로그램을 동시에 실행하는 기법
(프로그램1이 모두 끝난 후 2가 실행되는 것이 아니라, 1, 2, 1, 2 이렇게 실행됨)
-다중 사용자를 지원하고, 컴퓨터 응답시간을 최소화하는 시스템을 목적으로 함.
*멀티 태스킹(Multi Tasking)
-단일 CPU에서 여러 응용프로그램의 병렬 실행을 가능케 하는 시스템
-특정 시점에 실행되는 응용프로그램은 1개이나, 굉장히 시간을 짧게 쪼개서 여러 응용프로그램을 실행하면
마치 동시에 실행되는 것처럼 보이는 시스템을 구축하는 것.
-보통은 시분할 시스템과 멀티 태스킹이 동일한 의미로 사용된다.
*TIP : 멀티 프로그래밍 : 최대한 CPU를 많이 활용하도록 하는 시스템(시간 대비 CPU 활용도를 높이는 것)
즉, 시분할 시스템은 다중 사용자의 지원을 위해 응답 시간을 최소화 하는 시스템이며,
멀티 태스킹은 단일 CPU에서 여러 응용프로그램이 동시에 실행되는 것처럼 보이는 시스템입니다.
그래서 컴퓨터 응답 시간을 줄일 수 있습니다.
멀티 프로그래밍은 CPU의 활용시간을 최대한 높이는 것으로 유휴시간에 다른 응용 프로그램을 실행하는 것입니다.
따라서 전체 응용 프로그램의 실행 시간을 줄일 수 있습니다.
-1970년대
- 비교적 제대로 된 운영체제 등장
- UNIX OS, 미국 AT&T사의 벨 연구소에서 개발됨.
켄 톰슨, 데니스 리치 (C언어의 개발자이며, C언어를 개발한 후 UNIX OS를 개발)
*TIP : 운영체제 개발에 C언어가 필요했던 이유
>1970년대 이전 : 어셈블리어(기계어)로 소프트웨어 개발
>컴퓨터마다 CPU, Memory가 다를 수 있는데 컴퓨터마다 각각 개발해줘야 하는 단점이 있음.
>프로그래밍의 복잡도가 높음
>1970년대 C언어가 개발된 후 : 컴파일러가 C언어 코드를 어셈블리어(기계어)로 변환함.
>따라서 다시 작성할 필요가 없고, 프로그래밍 복잡도가 비교적 낮아
-UNIX의 특징 : 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제
(멀티 태스킹, 시분할 시스템, 멀티 프로그래밍 구현)
-1980년대
*개인용 컴퓨터 시대
*1980년대 이전에는 대형 컴퓨터를 여러 명이 접속해서 사용(UNIX)
*1980년대 부터는 Personal Computer(PC)가 보급, 대중화되기 시작한 시점
*CLI 환경에서 GUI 환경으로 바뀌는 시점(1980년대 초 - 터미널 환경, 중반부터 점차 변화 시작)
>CLI(Command Line Interface) : 터미널 환경으로, 키보드로 입력하는 검은 화면의 환경
>GUI(Graphical User Interface) : GUI 환경, 우리가 쓰는 windows처럼 마우스로 버튼을 누르거나 하는 환경
-1990년대
*응용 프로그램의 시대 (GUI환경, 개인용 컴퓨터의 보급으로 인한 사용자 증대)
*엑셀, 워드 프로세서 등
*Windows 95 Commercials 대중화
*네트워크 기술 발전 - 월드와이드웹(WWW) 인터넷 대중화
*오픈소스 운동 활성화 시작(UNIX 계열 + 응용 프로그램 자체 개발, 소스 오픈)
LINUX 운영체제, 소스 오픈, 무료
-2000년대
*오픈 소스 활성화
>LINUX 운영체제
>Apache(웹서버)
>MySQL(데이터베이스)
>요즘의 안드로이드, 딥러닝 기술, 데이터사이언스 등 관련 최신기술이 대부분 오픈소스
*가상 머신, 대용량 병렬 처리(여러 코어를 사용) 등 활성화
마지막 정리
-운영체제는 응용 프로그램과 시스템 자원을 제어하고, 관리한다.
-운영체제 위에서 돌아가는 응용 프로그램(Application)이 있고, 우리가 사용하는 프로그램은 대부분 응용 프로그램이다.
-가볍게 흐름을 알아두면 좋다.
다음 시간부터는 하나하나 공부해보도록 합시당.
출처
이 글의 상당 부분은 패스트캠퍼스 컴퓨터 공학 기초 강의를 참고하였습니다.
개인 학습, 복기용이기 때문에 복제를 금합니다.
관심이 있으시다면 같이 공부하시거나, 해당 관련 강의를 직접 수강하시는 것을 추천합니다!
도움이 되시거나 더 좋은 지식을 공유하고 싶으시다면
아래의 댓글로 자유롭게 남겨주세요.
'운영체제' 카테고리의 다른 글
6. 운영체제 - 스케쥴링 알고리즘 (0) | 2019.12.27 |
---|---|
5. 운영체제 - 스케쥴링 (배치 처리, 시분할 시스템, 멀티 프로그래밍) (0) | 2019.12.26 |
4. 운영체제 - 사용자 모드와 커널 모드 (0) | 2019.12.24 |
3. 운영체제 - 시스템 콜(System Call) (0) | 2019.12.24 |
1. 운영체제의 역할 (0) | 2019.12.23 |