3. 시대별로 이해하는 운영체제 핵심 개념

1950년대

ENIAC: 첫번째 컴퓨터.
응용 프로그램 돌리기도 바빠 운영체제가 없었음. 응용 컴퓨터가 리소스를 관리.

1960년대 초반

프로그램 종류도 많아지고, 사용자도 늘기 시작.

배치 처리 시스템의 출현(batch processing system)

  • 여러 응용 프로그램을 등록시켜놓으면, 순차적으로 실행시키는 시스템
  • 두 프로그램의 순서를 일직선으로 실행.(하나에 한 프로그램만.)
  • 프로그램을 어떤 순서로 등록하느냐에 따라 응용 프로그램의 실행 시간이 달라진다.
    (긴 프로그램하고 짧은 프로그램하기 vs 짧은 프로그램하고 긴 프로그램하기 였을 때 짧은 프로그램이 끝날때까지 얼마나 걸리나?)

단점

  • 응답시간이 오래 걸릴 수 있다.(내 앞에 오래 걸리는 프로그램이 실행 될 경우)
  • 실행시간도 오래 걸릴 수 있다.(CPU가 필요없는 상황에도 응용프로그램이 CPU를 점유 할 수 있음)

1960년대 후반

응용 프로그램이 CPU를 사용하는 시간을 쪼개서, 여러개의 응용 프로그램이 동시에 실행하는 기법 등장

  • 시분할 시스템(Time Sharing System) : 다중 사용자 지원, 컴퓨터 응답 시간 최소화
  • 멀티 태스킹(Multi Tasking) : 가능한 CPU를 많이 활용하도록 지원(시간 대비 CPU 사용률을 높이자.)

시분할 시스템

컴퓨터 응답시간을 사용자가 요청하고 응답을 받을 때까지 걸린 시간이라고 한다.
여러 사용자가 컴퓨터에 접속해 각 응용 프로그램을 실행하려고 할 때, 응답시간을 줄이는게 가장 중요하다.
시분할 시스템은 시간을 특정 단위로 쪼개, 단위마다 각 프로그램들이 돌아가며 실행하는 방식이다.

멀티 태스킹

단일 CPU에서 여러 응용 프로그램의 병렬 실행을 가능케하는 시스템.
보통은 시분할 시스템과 비슷하게 통용되는 경우가 많음.

멀티 프로그래밍 : 최대한 CPU를 많이 활용하도록 하는 시스템
어떤 프로그램이 CPU를 사용하는 시간 중 CPU가 아무 일도 안하는 시간은 다른 프로그램을 실행하도록 해주는 기능.(파일 입력을 기다리는 시간이 대표적)

1970년대

제대로 된 운영체제 등장

UNIX OS

현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제 (멀티 태스킹, 시분할 시스템, 멀티 프로그래밍)

여기서 잠깐. 왜 C언어가 운영체제 개발에 필요한가?
어셈블리 언어는 CPU와 메모리의 물리적인 주소로 직접 명령을 해서 개발한다. 이러면 각 컴퓨터마다 각각 다시 개발을 해줘야 된다..
그런데 C언어는 컴파일러라는 녀석이 C언어를 해당 컴퓨터에 맞도록 어셈블리 언어로 변환해서 실행한다. 다른 컴퓨터에서 다시 작성할 필요가 없어진다.

1980년대

개인용 컴퓨터 시대

1980년대 이전에는 대형 컴퓨터에 여러 명이 접속해 사용(UNIX)
1980년대 이후에는 PC시대가 시작.

CLI에서 GUI로 전환 시작.

CLI(command line interface) = 터미널 환경 = 키보드, 검은화면
GUI(graphical user interface) = GUI 환경 = 마우스

1990년대

  1. 응용 프로그램 시대 (GUI 환경, PC 사용자 증가)
  2. 네트워크 기술 발전 - 월드와이드웹(WWW) 인터넷 대중화
  3. 오픈 소스 운동 활성화

2000년대 이후

  1. 오픈 소스 활성화(리눅스, 아파치, MySQL 등…)
  2. 가상 머신(가상으로 컴퓨터가 있는 것처럼 가상의 운영체제를 활용), 대용량 병렬 처리 활성화
Share