History로 이해하는 운영체제

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

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

1950년대

ENIAC: 첫 번째 컴퓨터

운영체제가 없었습니다.

  • 1개의 응용 프로그램만 실행
  • 응용 프로그램이 시스템 자원을 직접 제어

1960년대 초기

  • 실행할 프로그램이 많아짐
  • 배치 처리 시스템(batch processing system) 출현

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

  • 여러 응용 프로그램을 등록시켜놓으면, 순차적으로 실행하는 시스템
  • 배치 처리 시스템을 기반으로 운영체제가 출현

1960년대 후반

  • 새로운 개념이 제안됨
    • 시분할 시스템 (Time Sharing System)
    • 멀티 태스킹 (Multi Tasking)

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


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

  • 응용 프로그램이 CPU를 사용하는 시간을 잘개 쪼개서, 여러 개의 응용 프로그램을 동시에 실행하는 기법
  • 시분할 시스템: 다중 사용자를 지원하고, 컴퓨터 응답 시간을 최소화하는 시스템
  • 멀티 태스킹: 단일 CPU에서, 여러 응용 프로그램의 병렬 실행을 가능케 하는 시스템
  • 보통은 시분할 시스템 = 멀티 태스킹

멀티 프로그래밍: 최대한 CPU를 많이 활용하도록 하는 시스템 (이후 강의에서 설명)


배치 처리 시스템의 단점

  1. 컴퓨터 응답 시간 (response time)이 오래 걸릴 수 있다. (앞단에 실행시간이 많이 필요로 하는 응용 프로그램이 실행될 경우)
  2. 실행 시간도 오래걸릴 수 있습니다. (CPU가 필요없음에도 응용 프로그램이 CPU를 점유할 수 있기 때문입니다.)

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

  • 시분할 시스템/멀티 태스킹
    • 핵심 기술: 시간을 잘게 쪼개서, 여러 응용 프로그램을 실행
      • 컴퓨터 응답 시간을 줄일 수 있음 (시분할 시스템, 다중 사용자를 지원)
      • 결과적으로, 사용자가 느낄 때에는, 여러 응용 프로그램이 동시에 실행되는 것처럼 보인다. (멀티 태스킹)

1970년대

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

UNIX (유닉스) OS

  • 미국 AT&T 사의 벨 연구소
    • 켄톰슨, 데니스 리치
    • 데니스 리치: C언어를 개발

데니스 리치 출처: https://youtu.be/H4YRPdRXKFs


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

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

    • CPU(명령어), Memory(주소)
    • 컴퓨터마다 각각 다시 개발해줘야 하는 단점
    • 프로그래밍 복잡도가 높음
  • 1970년대 C언어가 개발된 후:

    • 컴파일러: 다시 작성할 필요가 없음
    • 프로그래밍 복잡도는 낮음

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


UNIX 특징

  • 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제
    • 멀티 태스킹, 시분할 시스템, 멀티 프로그래밍
      • 다중 사용자 지원

UNIX는 어떻게 생겼나? 출처: https://youtu.be/Aj1n2_qEq5k


1980년대 - 개인용 컴퓨터

  • 개인용 컴퓨터 시대
    • 1980년대 이전: 대형 컴퓨터를 여러 명이 접속해서 사용 (UNIX)
    • 1980년대 ~: Personal Computer (PC)

출처: http://seorenn.blogspot.com/2012/12/iq-2000.html


1980년대

  • 용어 이해: CLI와 GUI
    • CLI (Command Line Interface): 터미널 환경
    • GUI (Graphical User Interface): GUI 환경

CLI vs GUI

  • CLI: 키보드, 검은 화면
  • GUI: 마우스

1980년대: CLI --> GUI

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

Apple VS Microsoft OS 출처: https://youtu.be/f_Q0XPher3o

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

Macintosh: 마우스를 사용한 OS 출처: https://www.youtube.com/watch?v=cvjLc24VbI8

Apple Macintosh Commercials 출처: https://www.youtube.com/watch?v=I1YTahnDy1Y


1990년대

  1. 응용 프로그램 시대 by GUI 환경, 개인용 컴퓨터 (사용자 증대)
    • 엑셀, 워드 프로세서 등등
    • Windows OS 대중화

Windows 95 Commercials 출처: https://www.youtube.com/watch?v=lAkuJXGldrM

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

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

    • UNIX 계열 OS + 응용 프로그램 자체 개발, 소스 오픈
    • LINUX (리눅스) 운영체제, 소스 오픈, 무료

쉬어가기: Killer Application

  1. 위닝(축구 게임) 게임 프로그램을 위해 플레이스테이션 기기를 구매했습니다.
  2. 엑셀 프로그램을 사용하기 위해서, Windows 컴퓨터를 구매했습니다.

2000년대 이후

  1. 오픈 소스 활성화

    • LINUX (리눅스) 운영체제
    • Apache (아파치, 웹서버)
    • MySQL (데이터베이스)
    • 요즘... 안드로이드, 딥러닝, 데이터사이언스, IoT 관련
  2. 가상 머신, 대용량 병렬 처리 등 활성화


정리1

  1. 1950년대: 운영체제 없음 (프로그램이 시스템 자원 직접 제어)
  2. 1960년대: 배치 처리 시스템
  3. 1970년대: 시분할 시스템/멀티 태스킹 시스템 - UNIX OS (C 언어)
  4. 1980년대: GUI, 개인용 컴퓨터
  5. 1990년대: 다양한 응용 프로그램, 인터넷 발달, 오픈 소스 운동 활성화
  6. 2000년대: 오픈 소스 활성화, 가상 머신, 대용량 병렬 처리 등

정리2

  1. 운영체제는 응용 프로그램과 시스템 자원을 제어하고, 관리한다.
  2. 응용 프로그램(Application) 용어 이해
  3. 배치 처리 시스템, 시분할 시스템, 멀티 태스킹 개념
  4. CLI(터미널) vs GUI 환경 용어 이해
  5. History 전반은 가볍게만 알아두기