📖
Mini's Today I Learned
  • Today I Learned
  • 💻Computer Science
    • 🧱Computer Science
      • Computer Architecture
    • 🦕OperatingSystem
      • System Structure
      • 01. 운영체제 역할
      • 02. History로 이해하는 운영체제
      • 03. 운영체제 구조
      • 04. 프로세스 스케쥴링
      • 05. 스케쥴링 알고리즘
      • 06. 프로세스 상태와 스케쥴러
      • 07. 인터럽트
      • 08. 프로세스와 컨텍스트 스위칭
      • 09. 프로세스간 커뮤니케이션(IPC 기법)
      • 10. Thread(스레드)
      • 11. 가상메모리 (Virtual Memory System)
      • 12. 파일시스템 이해
      • 13. 부팅의 이해
      • 14. 가상머신(Virtual Machine)
  • 📈Database
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(정규화)
    • Transaction
    • Transaction
  • 🌐 Network
    • 🔌 TCP&IP Basic
      • 01 TCP/IP 맛보기
      • 02 TCP/IP 개요
      • 03 통신 서비스와 프로토콜
      • 04 애플리케이션 계층
      • 05 트렌스포트 계층
      • 06 네트워크계층
      • 07 데이터 계층과 물리계층
      • 08 라우팅
      • 09 보안
      • 10 HTTP 프로토콜
    • 🐿️HTTP 완벽 가이드 요약
      • 1. HTTP: 웹의 기초
      • 2. URL 과 리소스
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • 🏴Language
    • ☕JAVA
      • Comparable vs Comparator
  • 🛠️ Framework
  • 🧩Design Pattern
    • 객체 지향 설계 원칙 (SOLID)
    • Design Pattern 개요
    • Template method
    • Singleton
  • 🐥FrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(띄움) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(다단)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • 웹팩의 기본 구조
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. 이미지 파일 모듈로 다루어보기(file-loader)
        • 6. 이미지 파일 모듈로 다루어보기(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page

Was this helpful?

  1. Computer Science
  2. 🦕OperatingSystem

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 전반은 가볍게만 알아두기

Previous01. 운영체제 역할Next03. 운영체제 구조

Last updated 4 years ago

Was this helpful?

💻