Lec 02. OS Overview

jj·2021년 1월 3일
0

HPC 운영체제 강의

목록 보기
2/4
post-thumbnail

출처:
https://www.youtube.com/watch?v=nxl_cUd55Ag&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=2

Lec 02. OS overview
운영체제의 역할
운영체제의 구분
운영체제의 구조
운영체제의 기능

운영체제의 역할

  • user interface (편리성)
    • CUI (Character User Interface)
    • GUI (Graphical User Interface)
    • EUCI (End-Usr Comfortable Interface)
  • Resource Management (효율성)
    • HW resource (processor, memory, I/O devices...)
    • SW resource (file, application, message, signal...)
  • Process and Thread Management: 프로그램을 실행하는 주체(프로세스)를 관리
  • System Management

컴퓨터 시스템의 구성


운영체제: 하드웨어를 관리하면서 사용자에게 서비스를 제공
kernel: 운영체제의 핵심
system call interface (시스템 라이브러리):

  • 사용자가 직접 커널을 접근해서 조작하면 하드웨어에 문제가 생길 수 있음
    필요한게 있으면, 커널에게 요청을 보내게 되고, 그 때 필요한 통로이다
  • 커널이 제공하는 것들 기능 중에서 사용자가 사용할 수 있는 기능을 모아놓은 것들

운영체제의 구분

동시 사용자수에 따라 (이 운영체제를 혼자 쓰는지/ 여러명이서 쓰는지)

(1) single-user system

  • 단 한명의 사용자만 시스템 사용 가능
  • 한 명의 사용자가 모든 시스템 자원독점
  • 자원관리 및 시스템 보호 방식이 간단함
  • 개인용 장비(pc, mobile)등에 사용 (windows 7/10, android, MS-DOS)

(2) multi-user system

  • 동시에 여러 사용자들이 시스템 사용
    • 각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요
    • 기본적으로 multi-tasking 기능 필요
    • os의 기능 및 구조가 복잡
  • 서버, 클러스터 장비등에 사용 (unix, linux, windows server)

동시 실행 프로세스 수에 따라

(1) 단일작업(single tasking system)

  • 시스템내에 하나의 작업(프로세스 -> 일단은, program이라고 생각하자)만 존재
  • 하나의 프로그램 실행을 마친 뒤 다른 프로그램 실행
  • 간단한 운영체제 구조 (예. MS-DOS)

(2) 다중작업(multi tasking system)

  • 동시에 여러작업(프로세스)의 수행 가능
  • 작업들 사이의 동시수행, 동기화 관리 필요
  • 복잡한 운영체제의 기능, 구조 (예. unix/linux, windows)

작업 수행 방식에 따라

순차처리 (feat. 운영체제 발전 역사)

  • 운영체제 개념이 존재하지 않음
    • 사용자가 기계어로 직접 프로그램 작성
    • 컴퓨터에 필요한 모든 작업 프로그램에 포함(프로세서에 명령어 저장 방법, 계산 대상 등)
  • 실행하는 작업별 순차처리
    • 각각의 작업에 대한 준비시간이 소요

(1) Batch processing system (1950-60)

  • 모든 시스템을 중앙(전자 계산소 등)에서 관리 및 운영
  • 사용자의 요청작업(천공카드 등)을 일정 시간 모아두었다가 한번에 처리
  • java -> 파이썬으로 전환되는 준비 시간이 100번 해야될 것 한 번으로 줄어들게 됨
    예. java로 짠 프로그램들 모이놓고, 파이썬으로 짠 프로그램들 모아놓고... 이렇게 각 언어별로 만든 뭉탱이 배치들을 모아놨다가 실행함
  • 시스템 지향적
  • 장점
    • 많은 사용자가 시스템 자원 공유
    • 처리 효율 향상
  • 단점
    • 생산성 저하; 같은 유형의 작업들이 모이기를 기다려야 함
      • 개인적인 관점으로 보면, 나는 프로그램을 시스템에 한번 제출해놓고, 이게 언제 실행될지 모르니까
    • 긴 응답시간; 약 6시간

(2) Time-sharing system (1960-70)

  • 시분할 시스템
  • 여러 사용자가 자원을 동시에 사용
    • os가 파일 시스템 및 가상 메모리 관리
  • 사용자 지향적
    • 대화형 시스템
    • 단말기 사용
  • 장점
    • 응답시간 단축
    • 생산성 향상; 프로세서 유휴시간 감소
  • 단점
    • 통신 비용 증가 (단말기를 통해서 접속해야하므로)
      • 통신선 비용, 보안 문제
    • 개인 사용자 체감 속도 저하
      • 동시 사용자 수 증가 -> 시스템 부하 증가 -> 속도 저하

이렇게 하나의 컴퓨터를 나눠쓰니까 답답쓰~
-> personal computing의 시작!

  • 개인이 시스템 전체 독점
  • cpu활용률이 중요 고려대상이 아님
  • os가 단순함 -> 그러나 편리한 사용
  • 빠른 응답시간 but 낮은 성능

Parellel Processing system

  • 병렬 처리 시스템
  • 단일 시스템 내에서 둘 이상의 프로세서 사용
    • 동시에 둘 이상의 프로세스 지원
  • 메모리 등의 자원 공유 (tightly-coupled system)
    • cpu외의 자원들
  • 사용목적
    • 성능향상
    • 신뢰성 향상 (cpu중 하나가 고장나도 정상 동작 가능)
    • 프로세서 간의 관계 및 역할 관리 필요

(3) Distributed processing system

  • 병렬 처리 시스템에서 발전됨 (그냥 컴퓨터를 여러대 붙이자)
  • 네트워크(통신)를 기반으로 구축된 병렬 처리 시스템 (loosely coupled system)
  • 물리적인 분산, 통신망을 이용한 상호 연결 (붙이기 쉬움)
  • 각 노드 (붙어있는 컴퓨터들)은 각각 자기만의 os를 탑재한 다수의 범용 시스템으로 구성됨-> 각자 관리하면 힘드니까
    • 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성)
  • 각 구성요소들 간의 독립성 유지, 공동작업 가능
    예. cluster system, client-server system, P2P 등
  • 장점
    • 자원 공유를 통한 높은 성능
    • 고신뢰성, 높은 확정성
  • 단점
    • 구축 및 유지보수/관리가 어려움

(4) real-time system

  • 작업 처리에 제한 시간을 갖는 시스템
    • 제한 시간내에 서비스를 제공하는 것이 자원활용 효율보다 중요
  • 작업의 종류
    • hard real-time task
      • 시간제약을 못지키면 시스템에 치명적 영향
        예. 원자력 온도 체크를 해서 1초만에 알려줘야 하는 시스템이 있다고 가정 -> 1초라는 제한 시간을 못지키면 큰일남!!
    • soft real-time task
      • 동영상 재생
    • non real-time task

운영체제의 구조

  • 커널
    • os의 핵심 부분(메모리에 항상 올라가있다)
    • 가장 빈번하게 사용되는 기능들을 담당
      • 시스템 관리(processor, memory...)
    • 동의어
      • 핵, 관리자(supervisor) 프로그램, 상주(resident) 프로그램, 제어(control) 프로그램 등
  • 유틸리티
    • 비상주 프로그램
    • UI등 서비스 프로그램

단일 구조

운영체제 기능들을 하나의 거대한 커널로 모아놓은 것 -> 메인함수 안에 모든 것을 다 짜놓은 것이로 비유가능

  • 장점
    • 커널 내 모듈간 직접 통신가능 -> 빠르고 효율적으로 자원관리 및 사용 가능
  • 단점
    • 커널의 거대화 (기능이 추가됨에 따라...)
      • 오류 및 버그, 추가/유지보수 어려움
      • 동일 메모리에 모든 기능이 있어, 한 모듈의 문제가 전체 시스템에 영향을 줌 (예. 악성코드)

계층 구조

기능 별로 따로 떼어서 계층적으로 묶자!

  • 장점
    • 모듈화: 계층간 검증 및 수정 용이
    • 설계 및 구현의 단순화
  • 단점
    • 단일 구조 대비 성능저하
    • 원하는 기능 수행을 위해 여러 계층을 거쳐야함

마이크로 커널 구조

커널이 점점 커지니까 문제가 생겨서, 커널에는 진짜 필수적인 요소만 넣고 나머지는 사용자 영역에서 응용 프로그램처럼 실행을 하자

운영체제의 기능

프로세스 관리

  • 프로세스란? (=/= 프로세서!!)
    • 커널에 등록된 실행 단위 (실행 중인 프로그램)
    • 사용자 요청/프로그램의 수행 주체(entity)
  • os의 프로세스 관리 기능
    • 생성/삭제, 상태 관리
    • 자원 할당
    • 프로세스 간 통신 및 동기화
    • 교착상태(deadlock) 해결; 하나의 컴퓨팅 자원을 두고 여러 프로그램이 싸울때
  • 프로세스 정보관리
    • PCB(Process Control Block)

프로세서 관리

  • 프로세서(CPU)를 누구한테 줄 것 인가
  • 프로세스 스케줄링: 시스템 내의 프로세스 처리 순서 결정
  • 프로세서 할당 관리: 프로세스들에 대한 프로세서 할당
    • 한번에 하나의 프로세스만 사용 가능

    메모리 관리

  • 주기억장치: 작업을 위한 프로그램 및 데이터를 올려놓는 공간
  • multi-user, multi-tasking 시스템
    • 프로세스에 대한 메모리할당 및 회수
    • 메모리 여유 공간 관리
    • 각 프로세스의 할당 메모리 영역 접근 보호
  • 메모리 할당 방법(스키마)
    • 전체 적재
      • 장점: 간단한 구형
      • 단점: 제한적 공간
    • 일부 적재(virtual memory concept)
      • 프로그램 및 데이터의 일부만 적재
      • 장점: 메모리의 효율적 활용
      • 단점: 보조기억장치 접근 필요

파일 관리

  • 파일: 논리적 데이터 저장 단위
  • 사용자 및 시스템의 파일 관리
  • 디렉토리 구조 지원
  • 파일 관리 기능
    • 파일 및 디렉토리 생성/삭제
    • 파일 접근 및 조작
    • 파일을 물리적 저장공간으로 mapping
    • 백업

I/O 관리

  • 프로세스가 키보드에 직접 입출력 불가. 반드시 os를 거쳐야함

그 밖에...

  • 디스크
  • 네트워크
  • 보안
  • command interpreter system
  • system call interface
profile
재밌는게 재밌는거다

0개의 댓글