발전과정

구분 시대 특징
제0세대 1940년대 운영체제 없음, 기계어 사용
제1세대 1950년대 IBM 701(운영체제 효시) 작업간의 원활한 변환, 버퍼링, 스풀링, 일괄처리시스템
제2세대 1960년대 초 고급언어로 운영체제 작성, 장치 독립성, 다중프로그래밍, 다중처리분할시스템
제3세대 1960년대 중반 ~ 1970년대 중반 IBM 360 시리즈, 유닉스 범용 시스템, 다중모드시스템
제4세대 1970년대 중반 ~ 현재 네트워크 시스템, 가상머신, 분산데이터처리, 개인컴퓨터

1세대

1952년 초, 자동차 제조회사 GM의 연구실에서 IBM 701 운영체제를 개발했다. 이것이 운영체제의 효시로 꼽힌다. 1955년에는 GM과 North American Aviation(NAA)이 공동으로 IBM 704 컴퓨터를 위한 운영체제 GM-NAA I/O를 개발했는데, 여기서 오늘날 운영체제가 갖춘 기본적인 기능들이 처음 갖춰졌다. IBM 사용자 협회 SHARE는 운영체제에 관한 토론회를 이끌었고, 1957년까지 IBM 704를 위한 자체 운영체제를 개발했다. 다만 IBM 1400 계열 같은 소형 컴퓨터는 아직 운영체제 없이 작동했고, 대신 입출력 제어 시스템 IOCS(Input/Output Control System) 패키지를 사용했다.

2세대

2세대는 일괄처리 형태로 처리량을 끌어올렸고, 장치 독립성이라는 개념 덕분에 하드웨어 관리가 한결 편리해졌다. 다중프로그래밍은 여러 프로그램이 메인 메모리에 공존하며 프로세서를 작업 간에 수시로 번갈아 할당받는 방식이고, 다중처리시스템은 시스템의 처리 능력을 끌어올리기 위해 한 컴퓨터에 여러 프로세서를 사용하는 방식이다. 시분할시스템은 사용자가 터미널을 통해 컴퓨터와 직접 접촉할 수 있도록 개발되어, 사용자가 요구사항을 입력하면 컴퓨터가 이를 처리해 터미널로 응답하는 대화 방식으로 작동한다. 실시간시스템은 즉시 응답한다는 특징이 있어 가솔린 정제 같은 공정 제어에 쓰이며 발전했고, 군용 실시간 시스템은 적의 공중 공격에 대비해 수천 지점을 동시에 감시하기 위해 개발되었다. 필요할 때 즉시 사용할 수 있고 빠른 응답이 중요한 만큼 평상시 활용도는 높지 않으면서 비용은 많이 드는 시스템이었다. 미국 항공사의 SABRE 예약 시스템은 2세대의 가장 중요한 성과 중 하나로, 멀리 떨어진 사용자가 단말기로 중앙 컴퓨터와 통신하는 트랜잭션 처리 시스템의 효시가 되었다. 트랜잭션처리시스템은 사용자가 비교적 간단한 요구를 하면 컴퓨터가 빠르게 응답하는 대화형 시스템으로, 사용자 단말기는 컴퓨터에 온라인으로 연결된다.

3세대

3세대에는 일괄처리, 시분할처리, 실시간처리, 다중처리를 모두 지원하는 다중모드시스템이 등장했고, 사용자와 하드웨어 사이에 소프트웨어 계층이 도입되었다.

4세대

통신 기술이 발달하면서 컴퓨터 네트워크와 온라인 처리가 본격적으로 쓰이기 시작했다. 개인용 컴퓨터(Personal Computer)는 데이터통신 인터페이스를 갖춰 터미널로도 쓰일 수 있었고, 시분할 모드 덕분에 한정된 컴퓨터에만 묶이지 않고 지역적으로 멀리 떨어진 여러 시스템과도 통신할 수 있게 되었다. 1980년대에는 “사용자에게 친숙한 시스템”이라는 문구와 함께 메뉴지향적시스템이 등장해, 1960~1970년대의 텍스트(명령) 중심 사용법을 대체했다. 1990년대에는 GUI(Graphical User Interface) 시스템이 자리 잡았고, 운영체제가 만들어낸 가상 환경이라는 관점에서 가상머신(Virtual Machine) 개념도 함께 등장했다.

기능

운영체제는 프로그램 실행에 필요한 환경과 자원을 제공하고 관리하는 크고 복잡한 시스템이다. 논리적으로 작은 모듈들로 구성되며, 각 부분의 역할이 명확히 정의되어 있다. 대부분의 시스템에서 운영체제는 크게 자원 관리와, 프로그램을 위한 인터페이스라는 두 가지 역할을 수행한다.

자원관리 기능

  • 메모리 관리: 프로세서 이용률과 컴퓨터 응답 속도를 높이기 위한 다양한 기법이 존재한다.
  • 보조기억장치 관리: 메인 메모리의 공간이 제한적이므로, 컴퓨터 시스템은 보조기억장치를 이용해 메인 메모리의 내용을 저장한다.
  • 프로세스 관리: 프로세스 하나가 자신의 업무를 수행하려면 프로세서 점유, 메모리, 파일, 입출력 장치 같은 다양한 자원이 필요하다.
  • 장치 관리: 운영체제는 사용자가 특정 하드웨어 장치의 세세한 특성을 몰라도 포괄적인 기계로 인식할 수 있도록 그 특성을 감춘다.
  • 파일 관리: 가장 많이 쓰이는 요소로, 물리적으로는 다양한 형태로 정보를 저장하면서도 효율적인 사용을 위해 단일화된 정보 저장 형태를 제공한다.
  • 시스템 보호: 한 프로세스를 다른 사용자의 프로그램으로부터 보호한다.
  • 네트워킹: 시스템 안의 프로세서들은 다양한 방식으로 구성될 수 있는 통신 네트워크를 통해 연결된다.