02. History로 이해하는 운영체제

  • 1950년대

    • ENIAC: 첫 번째 컴퓨터

    • 운영체제가 없었음.

    • 1개의 응용 프로그램만 실행

    • 응용 프로그램이 시스템 자원을 직접 제어

  • 1960년대 초기

    • 실행할 프로그램, 사용자가 많아짐

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

    • 배치 처리 시스템(batch processing system)

      • 여러 응용 프로그램을 등록 시켜 놓으면, 순차적으로 실행하는 시스템

      • 배치 처리 시스템을 기반으로 운영체제가 출현

  • 1960년대 후반

    • 새로운 개념이 제안 됨

      • 시 분할 시스템 (Time Sharing System)

      • 멀티 태스킹 (Multi Tasking)

    • 실제 구현은 1970년대에 진행됨

  • 시분할 시스템과 멀티 태스킹

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

    • 시분할 시스템: 다중 사용자를 지원하고, 컴퓨터 응답 시간을 최소화하는 시스템

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

    • 보통은 시분할 시스템 = 멀티 태스킹

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

  • 배치 처리 시스템의 단점

    • 컴퓨터 응답 시간 (response time)이 오래 걸릴 수 있다. (앞 단에 실행 시간이 많이 필요로 하는 응용 프로그램이 실행될 경우)

    • 실행 시간도 오래 걸릴 수 있다. (CPU가 필요 없음에도 응용 프로그램이 CPU를 점유할 수 있기 때문.)

  • 시분할 시스템과 배치 처리 시스템

    • 시분할 시스템/멀티 태스킹

      • 핵심 기술: 시간을 잘게 쪼개서, 여러 응용 프로그램을 실행

        • 컴퓨터 응답 시간을 줄일 수 있음 (시분할 시스템, 다중 사용자를 지원)

        • 전체 응용 프로그램의 실행 시간도 줄일 수 있음(멀티 프로그래밍)

        • 결과적으로, 사용자가 느낄 때에는, 여러 응용 프로그램이 동시에 실행되는 것처럼 보인다. (멀티 태스킹)

  • 1970년대

    제대로된 운영체제가 나왔다

    • UNIX (유닉스) OS

      • 미국 AT&T 사의 벨 연구소

        • 켄톰슨, 데니스 리치

        • 데니스 리치: C언어를 개발

  • 쉬어가기: 운영체제 개발에 C 언어가 필요했던 이유

    • 1970년대 이전: Assembly 언어로 소프트웨어 개발

      • CPU(명령어), Memory(주소) 직접 작성

      • 컴퓨터마다 각각 다시 개발해줘야 하는 단점

      • 프로그래밍 복잡도가 높음

    • 1970년대 C언어가 개발된 후:

      • 컴파일러: 컴퓨터별로 다시 작성할 필요가 없음

      • 프로그래밍 복잡도는 낮음

        C 언어를 기반으로 운영체제를 개발했다

    • UNIX 특징

      • 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제

        • 멀티 태스킹, 시분할 시스템, 멀티 프로그래밍

          • 다중 사용자 지원

  • 1980년대

    • 개인용 컴퓨터 시대

    • 1980년대 이전: 대형 컴퓨터를 여러 명이 접속해서 사용 (UNIX)

    • 1980년대 ~: Personal Computer (PC)

      • 용어 이해: CLI와 GUI

        • CLI (Command Line Interface): 터미널 환경

        • GUI (Graphical User Interface): GUI 환경

        • CLI vs GUI

          • CLI: 키보드, 검은 화면

          • GUI: 마우스

    • 1980년대: 인터페이스 변화(CLI --> GUI)

      • 1980년대 초반: 아직 터미널 환경

      • 1980년대 중후반: GUI 환경 (마우스)

  • 1990년대

    1. 응용 프로그램 시대 by GUI 환경, 개인용 컴퓨터 (사용자 증대)

      • 엑셀, 워드 프로세서 등등

      • Windows OS 대중화

        참고 (쉬어가기) :Killer Application 1. 위닝(축구 게임) 게임 프로그램을 위해 플레이스테이션 기기를 구매 2. 엑셀 프로그래밍을 사용하기 위해, Windows 컴퓨터를 구매.

    2. 네트워크 기술 발전 - 월드와이드웹(WWW) 인터넷 대중화

    3. 오픈 소스 운동 활성화 시작

      • UNIX 계열 OS + 응용 프로그램 자체 개발, 소스 오픈

      • LINUX (리눅스) 운영체제, 소스 오픈, 무료

  • 2000년대 이후

    1. 오픈 소스 활성화

      • LINUX (리눅스) 운영체제

      • Apache (아파치, 웹서버)

      • MySQL (데이터베이스)

      • 요즘... 안드로이드, 딥러닝, 데이터사이언스, IoT 관련

    2. 가상 머신, 대용량 병렬 처리 등 활성화

정리1

  • 1950년대: 운영체제 없음 (프로그램이 시스템 자원 직접 제어)

  • 1960년대: 배치 처리 시스템

  • 1970년대: 시분할 시스템/멀티 태스킹 시스템 - UNIX OS (C 언어)

  • 1980년대: GUI, 개인용 컴퓨터

  • 1990년대: 다양한 응용 프로그램, 인터넷 발달, 오픈 소스 운동 활성화

  • 2000년대: 오픈 소스 활성화, 가상 머신, 대용량 병렬 처리 등

정리2

  • 운영체제는 응용 프로그램과 시스템 자원을 제어하고, 관리한다.

  • 응용 프로그램(Application) 용어 이해

  • 배치 처리 시스템, 시분할 시스템, 멀티 태스킹 개념

  • CLI(터미널) vs GUI 환경 용어 이해

  • History 전반은 가볍게만 알아두기

Last updated