[OS] 운영체제의 역사

Operating System Note 2

Posted by Sol on January 04, 2021 · 4 mins read

운영체제의 역사는 컴퓨터의 역사와 함께한다.

1950년대 : ENIAC (에니악) 개발1

  • 당시 에니악은 1개의 응용 프로그램을 실행시키기도 벅찼다.
  • 따라서, 운영체제는 당연히 없었고, 컴퓨터 자원의 관리는 1개의 응용프로그램이 스스로 관리하는 구조였다.

1960년대 초기 : 프로그램의 종류, 사용자 모두 증가하는 시기

  • 예를 들어, A와 B가 각각 10시간짜리 프로그램, 1시간짜리 프로그램을 실행시킨다고 해보자.
  • 당시는 A - B 순서로 프로그램을 돌리던가, B - A 순서로 프로그램을 돌리던가 해야 하는, 한 번에 하나의 프로그램만을 실행시켜야 하는 환경이었다.
  • 그런데 B 프로그램은 1시간만에 끝나기 때문에, A프로그램을 먼저 돌리게 된다면 B는 10시간이나 컴퓨터 옆에서 기다려야하지 않겠는가? –> Very inefficient
  • 따라서, 어떤 프로그램이 종료되면 그 다음 프로그램이 ‘순차적으로’ 실행되도록 하는 기술이 개발되었는데,
  • 이를 배치 처리 시스템(Batch processing system)이라고 한다.
    • 그리고, 이 batch 프로그램을 trigger로 하여 운영체제가 출현하기 시작한다.

1960년대 후기 : 새로운 개념들의 출현

  • 배치 처리 시스템은 단점이 존재한다.

    • 많은 응용프로그램이 대기열에 있을 경우, 컴퓨터의 응답 시간이 오래 걸릴 수 있다.
    • CPU가 필요 없는 경우에도 어플리케이션이 CPU를 점유할 수 있으므로, 프로그램의 실행 시간이 오래 걸린다.

    이러한 문제를 해결하기 위해 새로운 개념이 대두되기 시작했다.

  • 새로운 개념 : 시분할 시스템 (Time Sharing System) / 멀티 태스킹 (Multi-tasking)

    • 시분할 시스템
      • “배치 처리 시스템을 좀 더 효율적으로 만드는 방법이 없을까?” 를 고민하다 고안된 아이디어.
      • CPU가 응용 프로그램을 실행할 때, 시간을 잘개 쪼개어 여러개의 프로그램을 동시에 실행하는 것.

      image_1

      • A, B가 순차적으로 실행되는 배치 프로세싱을 (위), 잘게 쪼개어 여러개로 분할하여 실행시키게 만드는 것(아래)
      • 이 방식으로는 다중 사용자를 지원할 수 있고, 컴퓨터 응답 시간을 최소화 할 수 있다.
    • 멀티 태스킹

      • 단일 CPU에서, 여러 응용 프로그램의 ‘병렬 실행’을 가능케 하는 시스템

      • 사람의 눈에는 마치 여러가지 프로그램이 동시에 실행되는 것처럼 느껴진다.

      • 아주 짧은 시간단위로 여러가지를 번갈아가면서 시행하는 방법이다.

        cf. 멀티 프로그래밍 : 최대한 CPU를 많이 활용하도록 하는 시스템.

1970년대 : 제대로 된 운영체제의 등장!!

  • 최초의 운영체제 : UNIX 의 개발
    • 미국 AT&T 의 Bell lab이 개발함 : 켄 톰슨, 데니스 리치…(참고로 데니스 리치는 C언어를 개발한 사람이다…)
  • 운영체제 개발에 C언어가 필요했던 이유
    • 1970년데 이전에는 소프트웨어 개발에 Assembly언어가 사용되었다. 그야말로 생지옥…왜냐하면 메모리 주소를 직접 명시하고 그걸 전부 계산해야 하기 때문이다…
    • 그리고 더 최악은, 어셈블리어는 컴퓨터마다 각각 다시 개발해줘야 하는 단점이 존재했다.
    • 그런데, 1970년대 C언어가 개발된 이후, 이 생지옥같은 상황이 환상적으로 개선되었다. – 왜냐하면 C언어(High)를 컴파일러가 low레벨 어셈블리어로 번역해주기 때문이다.
    • 즉, 한번 C언어로 만든 코드는, 컴퓨터마다 재작성할 필요가 없게 되었다.
  • UNIX의 특징
    • 현재 운영체제의 기본 기술을 모두 포함한 최초의 운영체제!
    • 멀티태스킹, 시분할시스템, 멀티 프로그래밍, 다중 사용자를 지원한다.

1980년대 : Personal Computer 시대!

  • 1980년대 이전에는 대형 컴퓨터(UNIX)를 여러명이 접속해서 사용하였으나,
  • 1980년대부터는 개인이 컴퓨터를 소유하기 시작하였다.
  • 운영체제는 기본적으로 사용자와 컴퓨터의 커뮤니케이션을 도와주는 역할을 하는데, 두 가지 분류로 그 기능을 한다.
    • 두 가지 분류 - 용어의 이해
      • CLI : Command Line Interface - 터미널 환경 : 키보드로 명령어를 내리는 것.
      • GUI : Graphical User Interface -GUI환경 : 마우스 움직임과 클릭을 통해 명령을 내리는 것.
  • CLI는 1980년대 초반, GUI환경은 1980년대 후반부터 도입되기 시작했다.

1990년대 : The era of application

  • 강력한 GUI환경과 더불어 응용프로그램의 시대가 도래했다.
    • Microsoft의 Excel, word 등의 응용프로그램이 발전…사용자가 급증했다.
  • 네트워크 및 인터넷이 대중화되었다 (WWW).
  • 오픈소스운동이 활성화되었다 : “기술은 공유되어야 한다.” ex) 리눅스

2000년대 이후

  • 오픈소스 활성화 : LINUX, Apache, MySQL
  • Virtual Machine 개발, 활성화
  • 대용량 병렬 처리 활성화 - 다중 코어

위 내용은 ‘패스트캠퍼스’의 컴퓨터공학 강좌 내용을 요약 정리한 것임을 밝힙니다. (https://www.fastcampus.co.kr/)