CS/OS

2. 운영체제 개요(2) - 운영체제의 구분

🥭맹2 2021. 3. 11. 21:04

강의 링크(1) : https://www.youtube.com/watch?v=nxl_cUd55Ag
강의 링크(2) : https://www.youtube.com/watch?v=hzXVQIlSSos&t=1s

강의에서는 운영체제의 구분에서 작업 수행 방식만 따로 했지만 저는 한 포스팅에 정리하겠습니다요 ~!

아 근데 왜 자꾸 깨질까욧 . . . .. 흑흑

이제는 li태그와 ol태그에 문제가 생기네욧 .. 조만간 언능 수정하겠습니다 ㅇ<-<

운영체제의 구분

총 세가지로 분류

1. 동시 사용자 수

1) Single-user system (단일 사용자)

한 순간에 한 명의 사용자만 시스템 사용 가능

  • 한 명의 사용자가 모든 시스템 자원 독점

    • 비교적 간단히 OS를 만들기 쉬움
  • 자원관리 및 시스템 보호 방식이 간단함

    • 한 명만 쓰기 때문에 자원관리, 시스템 보호 용이
  • ex. 개인용 장비(Windows PC, android, MS-DOS 등)

2) Multi-user system

동시여러명이 사용하는 시스템

  • 각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요

    • 여러명이 사용하기 때문 --> 복잡
  • 기본적으로 Multi-tasking 기능 필요

    • 여러 개의 프로그램을 돌릴 수 있어야 함 --> 복잡
  • OS의 기능 및 구조가 복잡

  • ex. 서버, 클러스터(cluster (a.k.a 슈퍼컴퓨터)) 장비 등에 사용 (Unix, Linux, Windows server 등)

    • 어떤 서버가 존재하고, 여기에 우리(host)가 연결해서 해당 서버의 시스템을 사용하는 형태 --> 결국 이 시스템 내에서는 여러개의 프로그램이 동시에 돌아가는 형태 == 여러명의 호스트가 동시에 사용하는 것

2. 동시 실행 프로세스 수

1) Single-tasking system (단일작업)

  • 시스템 내에 하나의 작업(프로세스)만 존재

    • 하나의 프로그램 실행을 마친 뒤에 다른 프로그램의 실행
  • 운영체제의 구조가 간단

  • ex. MS-DOS (제일 비슷한 것은 Windows의 cmd창)

    • 실행되고 있는 프로그램이 끝날 때까지 다른 프로그램 실행 불가

2) Multi-tasking system (Multiprogramming system) (다중작업)

  • 동시에 여러 작업(프로세스)의 수행 가능

    • Windows 창을 여러 개 띄워놓고 실행 가능 !

    • 작업들 사이의 동시 수행, 동기화 등을 관리해야 함

  • 운영체제의 기능 및 구조가 복잡

  • ex. Unix/Linus, Windows 등

3. 작업 수행 방식 (사용자가 느끼는 사용 환경)

  • Batch processing system (일괄처리 시스템)
  • Time-sharing system (시분할 시스템)
  • Distributed processing system (분산처리 시스템)
  • Real-time system (실시간 시스템)

작업 수행 방식 종류

1. 순차처리 (No OS ~ 1940s)

  • 운영체제가 존재하지 않음

    • 사용자가 기계어로 직접 프로그램 작성 -> 운영체제가 존재하지 않기 때문에 사용자가 하드웨어를 직접 기계어로 관리해야함
    • 컴퓨터에 필요한 모든 작업 프로그램에 포함
      • 프로세서에는 명령어 저장 방법, 계산 대상, 결과 저장 위치와 방법, 출력 시점, 위치 등
  • 실행하는 작업 별 순차처리

    • 각각의 작업에 대한 준비 시간이 소요 (각각 다른 방식으로 프로그램을 짜왔을 때 컴퓨터를 셋팅하는데 소요되는 시간)

천공카드를 쓰던 그 시절 ,,⭐

2. 일괄 처리시스템 (Batch System) (1950s~1960s)

순차 처리 방식이 각각의 작업에 대한 준비 시간이 소요되는 것을 해결한 방식

  • 모든 시스템을 중앙(전자계산소 등)에서 관리 및 운영
  • 사용자의 요청 작업(천공카드 등)을 일정 시간 모아두었다가 한 번에 처리
    • ex. A라는 방식으로 만든 사람이 100명 이상일 때 -> A 처리, B라는 방식으로 만든 사람이 100명 이상일 때 -> B 처리

일정 이상의 작업이 모이면 그 때 작업을 수행하는 배치 시스템 !

  • 시스템 지향적 ( System-oriented )
    • 모아뒀다가 한 번에 처리하기 때문에 시스템을 효율적으로 이용할 수 있음
  • 장점
    • 많은 사용자가 시스템 자원 공유
    • 처리 효율(throughput) 향상
  • 단점
    • 각각의 작업 생산성(productivity)은 저하
      • 같은 유형의 작업들이 모이기를 기다려야 함
    • 긴 응답시간 (turnaround time)
      • 약 6시간 (작업 제출에서 결과 출력까지의 시간)

3. 시분할 시스템 (Time Sharing System) (1960s ~ 1970s)

시간을 분할해서 사용하는 시스템

시분할 시스템을 빨리 발음하면 ? ^^~ 시분할 시스템 ~

  • 여러 사용자가 자원을 동시에 사용
    • OS가 파일 시스템(여러 사용자와 함께 하기 때문에 어떤게 내 파일인지 구별해야하기 때문) 및 가상 메모리 관리 기능을 하게 된 계기
  • 사용자 지향적 (user-oriented)
    • 대화형 (conversational, interactive) 시스템
      • 반응이 있기 때문에 대화형 시스템이라고 함.
    • 단말기 (CRT terminal) 사용
      • 단말기(화면을 그려주고 입력을 전달해주는 것)를 사용해서 시스템에 접근.

여러 사용자가 동시에 자원을 사용한다는 것을 표현하고 싶었던 사진 ~! 시분할시스템~!

  • 장점
    • 응답시간(response time) 단축 (약 5초)
    • 생산성(productivity) 향상
      • 프로세서 유휴 시간 감소
  • 단점
    • 통신 비용 증가
      • 통신선 비용, 보안 문제 등
    • 개인 사용자 체감 속도 저하
      • 동시 사용자 수 증가 -> 시스템 부하 증가 -> 느려짐 (개인 관점)

4. Personal Computing

  • 개인이 시스템 전체 독점 -> CPU 활용률 (utilization)이 고려의 대상이 아님

  • 개인이 시스템 전체 독점 -> OS가 상대적으로 단순함

    • 하지만, 다양한 사용자 지원 기능 지원 (사용자 편의성 증가)
  • 장점

    • 빠른 응답시간 (혼자쓰기 때문)
  • 단점

    • 성능(performance)이 낮음 (혼자쓰니까 성능이 막 좋은 것은 필요 없음)

5. 병렬 처리 시스템 (Parallel Processing System)

Personal Computing이 되면서 혼자쓰니까 CPU 자체의 성능이 막 좋은 것을 쓸 필요 없음 -> 그럼 CPU를 여러 개 써볼까 ? -> 병렬 처리 시스템

  • 하나의 시스템에 여러 개의 프로세서를 사용하는 것
  • 단일 시스템 내에서 둘 이상의 프로세서 사용

    • 동시에 둘 이상의 프로세스 지원
  • 메모리 등의 자원 공유 (tightly-coupled system)

    • CPU는 여러 개인데, 기타 자원들은 공유하는 형태
  • 사용 목적

    • 성능 향상
    • 신뢰성 향상 (하나가 고장나도 정상 동작 가능)
  • 프로세서간 관계 및 역할 관리 필요

여러 CPU가 기타 자원을 공유하는 시스템, 병렬 처리 시스템

6. 분산 처리 시스템 (Distributed Processing System)

병렬처리 시스템을 쓰면서 컴퓨터 한 개에 여러 개의 CPU를 넣음 -> 확장하는데 물리적으로 제한이 있음 (ex. 100개 CPU) -> 그럼 컴퓨터를 여러 대 붙이는 건 어떨까 ? -> Distributed Processing System

  • Network을 사용해 여러 대의 컴퓨터를 하나로 묶은 병렬 처리 시스템

네트워크를 기반으로 구축된 시스템, 병렬 처리 시스템, 네트워크 기반이라 Loosely하게 couple되었다

  • 네트워크를 기반으로 구축된 병렬 처리 시스템 (Loosely-coupled system)

    • 물리적인 분산, 통신망 이용한 상호 연결
    • 각각의 노드(컴퓨터를 의미)는 운영체제 탑재한 다수의 범용 시스템으로 구성
    • 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성, transparency)
    • 각 구성 요소들간의 독립성 유지, 공동작업 가능
    • Cluster system(ex. 슈퍼컴퓨터), client-server system, P2P 등
  • 장점

    • 자원 공유를 통한 높은 성능
    • 고신뢰성, 높은 확장성
  • 단점

    • 구축 및 관리가 어려움

분산처리 시스템을 사용하는 대표적인 예시 : 슈퍼 컴퓨터, 선 정리 아찔 ~!

7. 실시간 시스템 (Real-time Systems)

  • 작업 처리에 제한 시간(deadline)을 갖는 시스템

    • 제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요
  • 작업 (task)의 종류

    크게 두 가지 : Hard real-time task / Soft real-time task

    • Hard real-time task

      • 시간 제약을 지키지 못하는 경우 시스템에 치명적 영향
      • ex. 발전소 제어를 위한 실시간 온도 체크 시스템, 무기 제어 등 -> 큰 문제를 일으킬 수 있는 것
    • Soft real-time task

      • 동영상 재생(ex. 1초에 30장 but 네트워크가 느려지면 아래 사진처럼 뜨는 경우가 있음) 등

      • 깨져버린 영상 사실은 네트워크 문제였다 흥
        • 요런 것처럼 큰 문제를 일으키지 않는 것
    • ​Non real-time task