본문 바로가기

Study/OS

Chapter 02. OS Overview

운영체제의 역할

  • User Interface (편리성)
    • CUI (Character user interface)
    • GUI (Graphical UI)
    • EUCI (End-User Comfortable Interface) : ex) MP3화면
  • Resource management (효율성)
    • HW resource (processor, memory, I/O devices, Etc)
    • SW resource (file, application, message, signal, Etc)
  • Process and Thread management
    실행의 주체
  • System management (시스템 보호)

컴퓨터 시스템의 구성

사용자 / Application이 OS 내부에 Kernel에 직접 접근할 수 없다.
그럼 어떻게 하냐? System Call Interface를 통해 요청하라

즉, System Call Interface란 Kernel이 제공하는 기능들 중에서 사용자가 사용할 수 있는 기능을 모아놓은 것


운영체제의 구분

  1. 동시 사용자 수
    1. Single-user system : 한명이 모든 시스템 자원 독점 ex) Windows, android
    2. Multi-user system : 동시에 여러 사용자들이 시스템을 사용 ex) Unix, Linux
      • 각종 시스템 자원(파일 등)에 대한 소유 권한 관리 필요
      • 기본적으로 Multi-tasking 기능 필요
  2. 동시 실행 프로세스 수
    1. 단일작업 (Single-tasking system)
      • 시스템 내에 하나의 작업(프로세스)만 존재
      • 하나의 프로그램 실행을 마친 뒤에 다른 프로그램의 실행
      • 예) MS-DOS, cmd
    2. 다중작업 (Multi-tasking system)
      • 동시에 여러 작업(프로세스)의 수행 가능
      • 예) Unix/Linux, Windows, 창 여러개 띄우기
  3. 작업 수행 방식 (사용자가 느끼는 사용 환경)
    1. Batch processing system (일괄처리 시스템)
    2. Time-sharing system (시분할 시스템)
    3. Distributed processing system (분산처리 시스템)
    4. Real-time system (실시간 시스템)

작업 수행 방식의 역사

순차처리 (~1940s)
  • 운영체제 개념 존재하지 x
  • 사용자가 기계어로 직접 프로그램 작성
  • 각각의 작업에 대한 준비 시간 소요
  • (Java 작업하고~ 다음 작업이 왔는데 Python이야 이거 대로 또 준비하고 돌리고 다음 작업은 C언어야? 계속 반복...)
Batch Systems (1950s~1960s)
  • 모든 시스템을 중앙에서 관리 및 운영

  • 사용자의 요청 작업을 일정 시간 모아 두었다가 한번에 처리

  • (Java로 짠거 다 모아두고 100개가 모이면 얘네 작업 시작)

  • 시스템 지향적 (System-oriented)

  • 장점

    • 많은 사용자가 시스템 자원 공유
    • 처리 효율 (throughput) 향상
  • 단점

    • 생산성 (productivity) 저하 : 같은 유형의 작업들이 모일 때까지 기다려야됨..

    • 긴 응답시간 (turnaround time)

      • 작업 제출에서 결과 출력까지의 시간 (약 6시간)
Time Sharing System (1960s~1970s)
  • 여러 사용자가 자원을 동시에 사용

    • OS가 파일 시스템 및 가상 메모리 관리
  • 사용자 지향적 (User-oriented)

    • 대화형 (conversational, interactive) 시스템 : 예전과 달리 응답을 중간 중간에 받을 수 있었다.
    • 단말기(CRT) 사용
  • (CPU에서 프로그램 A, B, C를 시간을 쪼개서 실행)

  • 장점

    • 응답시간 (response time) 단축 (약 5초)
    • 생산성 (productivity) 향상 : 작업이 끝나면 반응을 바로 받을 수 있으니
      • 프로세서 유휴 시간 감소 : cpu를 쉬지 않고 돌릴 수 있다.
  • 단점

    • 통신 비용 증가

      • 통신선 비용, 보안 문제

      • 개인 사용자 체감 속도 저하

        • 동시 사용자 수 ↑ => 시스템 부하 ↑ => 느려짐 (개인관점에서)
Personal Computing
  • 개인이 시스템 전체를 독점
  • (이전에는 cpu를 쉬지 않고 돌려서 cpu활용률을 높히는 데 주력함)
  • CPU 활용률(utilization)이 고려의 대상이 아님
    사용자가 얼마나 편하게 사용하는지!!
  • 장점
    • 빠른 응답시간
  • 단점
    • 성능(performance)이 낮음 (혼자쓸거니까)
Parallel Processing System (병렬 처리 시스템)
  • (컴퓨터안에 cpu를 여러개 박자)
  • 단일 시스템 내에서 둘 이상의 프로세서 사용
  • Tightly-coupled system : 여러개의 CPU들이 기타 자원(기억장치, 주변장치)들을 공유해서 사용
  • 사용 목적
    • 성능 향상
    • 신뢰성 향상
      • 왜 신뢰성? cpu 여러개니까 하나고장나도 다른 cpu에서 대신 일해주니까
  • 프로세서간 관계 및 역할 관리가 필요됨
Distributed Processing Systems
  • (컴퓨터에 100개 cpu를 넣을 순 없으니 컴퓨터를 여러개 붙이자)

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

  • 각 node들을 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성, transparency)

  • 각 구성 요소들간의 독립성 유지, 공동 작업 가능

  • 장점

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

    • 구축과 관리(유지보수)가 어려움
  • ex) cluster system(슈퍼컴), client-server system, p2p 등

Real-time System (실시간 시스템)
  • 작업 처리에 제한 시간(deadline)을 갖는 시스템
  • 작업(task)의 종류
    • Hard real-time task
      • 시간 제약을 지키지 못하는 경우 시스템에 치명적인 영향이 있는 작업
      • 예를들어, 1초에 온도를 측정하는 발전소가 있는데, 1초내에 온도를 측정 못해서 발전소가 폭발되는 재앙
    • Soft real-time task
      • 동영상 재생
      • youtube 1초에 30장 지켜야하는데, 안되면 화질깨지는 가벼운 경우

운영체제의 구조

  • 커널 (Kernel)
    • OS의 핵심 부분
      • 가장 빈번하게 사용되는 기능을 담당
      • 시스템 관리(processor, memory 등) 등
    • 동의어
      • 핵(nucleus), 관리자(supervisor) 프로그램, 상주 프로그램 (resident program), 제어 프로그램(control program) 등
  • 유틸리티 (Utility)
    • 운영체제에서 kernel을 제외한 나머지
    • 대표적으로 UI
    • 비상주 프로그램(메모리에 항상 올려놓지 않는다)

단일구조

커널 또는 운영체제 기능을 하나의 거대한 커널로 모아놓은 것

(main() 안에 코드 다짜버리기)

  • 장점
    • 커널 내 모듈 간 직접 통신
      • 효율적 자원 관리 및 사용
  • 단점
    • 커널의 거대화
      • 오류 및 버그 발생
      • 유지보수가 어려움
      • 동일 메모리에 모든 기능이 있으니까, 한 모듈의 문제가 전체 시스템에 영향을 줄 수 있음

계층구조

기능 별로 따로 나눠서 계층적으로 묶은 것

  • 장점
    • 모듈화
      • 계층간 검증 및 수정이 용이
    • 설계 및 구현의 단순화
      • (각각의 기능에만 집중하면 되니까~)
  • 단점
    • 단일구조 대비 성능 떨어진다
      • 원하는 기능을 수행하기 위해 여러 계층을 거쳐야한다...

마이크로 커널 구조

  • 커널의 크기 최소화
    • 필수 기능만 포함!
      • 메모리관리, 프로세스 간 통신, 프로세스관리
    • 기타 기능은 사용자 영역에서 수행

운영체제의 기능

  1. 프로세스(Process) 관리
  2. 프로세서(Processor) 관리
  3. 메모리(Memory) 관리
  4. 파일(File) 관리
  5. 입출력(I/O) 관리
  6. 보조기억 장치 및 기타 주변 장치 관리 등

Process Management

  • 프로세스(Process)

    • 커널에 등록된 실행 단위 (실행 중인 프로그램)
    • 사용자 요청/프로그램의 수행 주체
  • OS의 프로세스 관리 기능

    • 생성/삭제, 상태관리
    • 자원 할당
    • 프로세스 간 통신 및 동기화(synchronization)
    • 교착상태(deadlock) 해결
      • 여러개의 프로세스가 하나의 자원을 쓰려고 할때 = deadlock
  • 프로세스 정보 관리

    • PCB (Process Control Block) 이라는 것도 갖고 있다.

Processor Management

  • 헷갈리면 CPU라 생각해라
    • 프로그램을 실행하는 핵심자원
  • 프로세스 스케줄링 (Scheduling)
    • 시스템 내의 프로세스 처리 순서를 결정
  • 프로세서 할당관리
    • 프로세스들에 대한 프로세서 할당
      • (프로세서를 어떤 프로세스한테 줄지)

Memory Management

  • 일반적으로 메모리라하면은 주기억장치
  • Multi-user, Multi-tasking 시스템
    • 프로세스에 대한 메모리 할당 및 회수
    • 메모리 여유 공간 관리
    • 각 프로세스의 할당 메모리 영역 접근 보호
  • 메모리 할당 방법(scheme)
    • 전체 적재
    • 일부 적재

File Management

  • 파일 : 굳이 정의하자면 논리적 데이터 저장 단위. 그냥 파일

I/O Management

  • 입출력(I/O) 과정

    • OS를 반드시 거쳐야함

Others

  • DISK
  • Networking
  • Security and Protection system
  • Etc

'Study > OS' 카테고리의 다른 글

Chapter 05. Process Scheduling (2of4) - FCFS, RR  (0) 2021.06.23
Chapter 05. Process Scheduling (1of4)  (0) 2021.06.23
Chapter 04. Thread Management  (0) 2021.06.23
Chapter 03. Process Management  (0) 2021.06.17
Chapter 01. Computer System Overview  (0) 2021.06.15