📀 운영체제

02. 운영체제의 개념과 구조

락꿈사 2022. 5. 9. 20:43

Introduction

  • 운영체제
    • 컴퓨터 하드웨어를 관리하는 소프트웨어
    • 응용 프로그램을 위한 기반을 제공
    • 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 함

 

1.1 운영체제가 할 일

  • 컴퓨터 시스템의 4가지 구분
    1. 하드웨어
    2. 운영체제
    3. 응용 프로그램
    4. 사용자
  • 운영체제는 컴퓨터 시스템이 동작할 때 이들 자원을 적절하게 사용할 수 있는 방법을 제공함
  • 운영체제의 정의
    • 컴퓨터에서 항상 실행되는 프로그램(커널)
    • 커널 + 커널의 일부가 아닌 시스템 프로그램 + 시스템 작동과 관련있지 않은 모든 프로그램을 포함하는 응용 프로그램

 

1.2 컴퓨터 시스템의 구성

  • 일반적인 컴퓨터 시스템은 하나 이상의 CPU와 구성요소와 공유 메모리 사이의 액세스를 제공하는 공통 버스를 통해 연결된 여러 장치 컨트롤러로 구성됨
  • 각 장치 컨트롤러는 특정 유형의 장치(ex. 디스크 드라이브, 오디오 장치, 그래픽 디스플레이)를 담당함
  • 운영체제에는 각 장치 컨트롤러마다 장치 드라이버가 있음
  • 컨트롤러는 장치 드라이버에게 작업을 완료했다는 사실을 인터럽트를 통해 알림

 

인터럽트 개요

  • 하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있음
  • 인터럽트는 다른 많은 목적으로도 사용되며 운영체제와 하드웨어의 상호 작용 방식의 핵심 부분임

  • 인터럽트 과정
    • CPU 인터럽트 발생
    • CPU는 하던 일 중단하고 고정된 위치로 실행을 옮김 (고정된 위치는 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 갖고 있음)
    • 인터럽트 서비스 루틴이 실행
    • 인터럽트 서비스 루틴 실행 완료
    • CPU는 인터럽트 되었던 연산 재개

 

인터럽트 구현

  • 인터럽트 메커니즘
    • 장치 컨트롤러가 인터럽트 요청 라인에 신호를 선언하여 인터럽트 발생raise
    • CPU는 인터럽트 포착catch 후 인터럽트 핸들러로 디스패치dispatch
    • 핸드러는 장치를 서비스하여 인터럽트를 지움clear

 

 

저장장치 구조

  • CPU는 메모리에서만 명령을 적재할 수 있으므로 실행하려면 먼저 메모리에 적재해야함
  • 부트스트랩 프로그램: 컴퓨터 전원을 켤 때 가장 먼저 실행되는 프로그램
  • RAM은 휘발성이므로 부트스트랩 유지 불가
    • 휘발성: 전원이 꺼지거나 손실될 때 내용이 손실됨
  • EEPROM이라는 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리 및 기타 형태의 펌웨어를 사용함
    • 펌웨어: 쓰기 작업이 자주 발생하지 않고 비휘발성인 저장장치
    • EEPROM은 변경할 수는 있지만 자주 변경할 수는 없음
  • 메모리와 CPU의 상호작용은 특정 메모리 주소들에 대한 일련의 적재load, 저장store 명령을 통해 이루어짐
    • 적재load: 메인 메모리로부터 CPU내부의 레지스터로 한 바이트 또는 한 워드를 옮기는 것
    • 저장store: 레지스터의 내용을 메인 메모리로 옮기는 것
  • 명시적인 적재, 저장 명령 외에, CPU는 프로그램 카운터에 저장된 위치부터 실행하기 위해 메인 메모리에서 명령을 자동으로 적재함
  • 폰 노이만 구조 시스템(기본적인 컴퓨터 구조 시스템)에서 실행되는 명령-실행 사이클
    • 폰노이만 구조: 메모리로부터 명령어를 가져오는 fetch, 명령어의 의미를 해석하는 decode, 명령어를 실행하는 execute, 결과를 저장하는 store의 순서로 처리되는 구조
      • 먼저 메모리로부터 명령을 인출
      • 명령을 명령 레지스터에 저장
      • 이어서 명령 해독
      • 메모리로부터 피연산자를 인출
      • 내부 레지스터에 저장

  • 다양한 저장장치 시스템은 저장 용량 및 액세스 시간, 휘발성/비휘발성에 따라 계층 구조로 구성될 수 있음
  • 메모리가 작고 빠를수록 CPU에 가까움

 

입출력 구조

  • 인터럽트 구동 I/O 형태는 소량의 데이터를 이동하는데는 좋지만 대량 데이터 이동에 사용될 때는 높은 오버헤드가 유발됨
  • DMA(직접 메모리 액세스): CPU의 개입 없이 자신의 버퍼 장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송함

 

1.3 컴퓨터 시스템 구조

컴퓨터 시스템 구성요소의 정의

  • CPU: 명령을 실행하는 하드웨어
  • 프로세서processor: 하나 이상의 CPU를 포함하는 물리적 칩
  • 코어core: CPU의 기본 계산 단위
  • 다중 코어mulicore: 동일한 CPU에 여러 컴퓨팅 코어를 포함함
  • 다중 처리기multiprocessor: 여러 프로세서를 포함함

 

단일 처리기 시스템

  • 단일 처리 시스템: 단일 코어를 가진 하나의 CPU를 포함하는 단일 프로세서가 있는 시스템
    • 코어: 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성요소

 

다중 처리기 시스템

  • 다중 처리기 시스템: 각각 단일 코어 CPU가 있는 두 개 이상의 프로세서가 있는 시스템
  • SMPsymmetric multiprocessing: 각 피어 프로세서가 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업을 수행하는 구조
    • 각 CPU 처리기에는 개별 또는 로컬 캐시 뿐만 아니라 자체 레지스터 세트가 있음
    • 그러나 모든 프로세서는 시스템 버스를 통해 물리 메모리를 공유

  • 다중 코어 시스템: 여러 개의 컴퓨팅 코어가 단일 칩에 상주하는 시스템

 

1.4 운영체제의 작동

다중 프로그래밍과 다중 태스킹

 

  • 하나의 프로그램은 일반적으로 항상 CPU나 I/O 장치를 바쁘게 유지할 수 없으므로, 여러 프로그램을 실행함
  • 다중 프로그래밍: CPU가 항상 한 개는 실행할 수 있도록 프로그램을 구성하여 CPU 이용률을 높이는 것
    • 프로세스: 다중 프로그램 시스템에서 실행중인 프로그램
    • 다중 프로그래밍을 하기 위해 운영체제는 여러 프로세스를 동시에 메모리에 유지하고, 운영체제는 이러한 프로세스 중 하나를 선택하여 실행함
  • 다중 태스킹: CPU가 여러 프로세스를 전환하며 프로세스를 실행하여 사용자에게 빠른 응답을 제공하는 것
    • 동시에 여러 프로세스를 메모리에 유지하려면 메모리 관리 방식이 필요함
    • CPU 스케쥴링: 여러 프로세스가 동시에 실행할 준비가 되었을 때 다음에 실행할 프로세스를 선택하는 것

 

이중 모드와 다중 모드

  • 다양한 실행 모드를 차별화 할 수 있는 하드웨어를 제공하여 독립된 연산 모를 제공함
    • 사용자 모드
    • 커널 모드
  • 시스템 부트 시, 하드웨어는 커널모드에서 실행
  • 운영체제가 적재되면 사용자 모드에서 사용자 프로세스가 시작
  • 트랩이나 인터럽트가 발생할 때마다 하드웨어는 사용자 모드에서 커널 모드로 전환 (운영체제가 컴퓨터의 제어를 얻을 때마다 커널 모드에 있게 됨)
  • 동작의 이중 모드는 잘못된 사용자로부터 운영체제와 잘못된 사용자 서로를 보호함

 

1.7 가상화

하나의 운영체제와 3개의 가상머신을 실행시키는 컴퓨터

  • 가상화: 단일 컴퓨터(CPU, 메모리, 디스크 드라이브, 네트워크 인터페이스 카드 등)의 하드웨어를 여러 가지 실행 환경으로 추상화하여 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만드는 기술
  • 가상머신의 사용자는 단일 운영체제에서 동시에 실행되는 다양한 프로세스 간의 전환과 동일한 방식으로 다양한 운영체제 간에 전환이 가능함
  • 가상화에서는 측정 CPU를 위해 컴파일 된 운영체제가 동일 CPU용의 다른 운영체제 내에서 수행됨
  • 예) macOS에서 VMWare를 사용하여 windows를 실행
    • macOs: 호스트 운영체제
    • VMWare: 가상 머신 관리자VMM
    • windows: 게스트 운영체제

 

1.10 계산 환경 

  • 전통적인 계산
  • 모바일 컴퓨팅
    • 스마트폰, 태블릿 컴퓨터
    • 이동 가능하고 가벼움
  • 클라이언트 서버 컴퓨팅
    • 다양한 계산 환경
    • 서버 시스템이 클라이언트 시스템이 생성한 요청을 만족시키는 배치를 특징으로 하는 네트워크 구조

  • 피어-투-피어 계산
    • 클라이언트와 서버가 서로 구별되지 않고 시스템 상의 모든 노드가 피어로 간주되고 각 피어는 서비스를 요청하느냐 제공하느냐에 따라 클라이언트 및 서버로 동작함

  • 클라우드 컴퓨팅 
    • 계산, 저장장치는 물론 응용조차도 네트워크를 통한 서비스로 제공하는 계산 유형
    • 유형
      • public cloud:  서비스를 위해 지불 가능한 사람은 누구나 인터넷을 통해 사용 가능한 클라우드
      • private cloud: 한 회사가 사용하기 위해 운영하는 클라우드
      • hybrid cloud: public과 private 부분을 모두 포함하는 클라우드
      • SaaS, Software as a Service: 인터넷을 통해 사용 가능한 하나 이상의 응용(ex. 워드프로세서, 스프레드시트)
      • PaaS, Platform as a Service: 인터넷을 통해 사용하도록 응용에 맞게 준비된 소프트웨어 스택(ex. 데이터베이스 서버)
      • IaaS, Infrastructure as a Service: 인터넷을 통해 사용 가능한 서버나 저장장치(ex. AWS Ec2, Google GCE)

  • 실시간 내장형 시스템
    • 자동차 엔진, 공장용 로봇에서 사용
    • 아주 특정한 작업만 수행

 

2.1 운영체제 서비스

  • 운영체제는 프로그램 실행 환경을 제공하고 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공함
    • 사용자 인터페이스
      • GUI
        • 그래픽 기반 인터페이스
        • 사용자 친화적
      • CLI
        • 명령형 인터페이스
        • 셸Shell: 명령 인터프리터를 제공하는 시스템의 해석기
      • TSI
        • 터치 스크린 인터페이스
        • 모바일 환경에서 주로 사용
        • 사용자의 제스처로 조작
    • 프로그램 수행
    • 입출력 연산
    • 파일 시스템 조작
    • 통신
    • 오류 탐지
    • 자원 할당
    • 기록 작성
    • 보호와 보안