OS | Chapter1 : Introduction

Yunny.Log ·2022년 10월 16일
0

OS

목록 보기
1/8
post-thumbnail
post-custom-banner

1.1 운영체제가 할 일

  • 운영체제는 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조종
  • 컴퓨터 하드웨어를 관리하는 프로그램
  • 응용 프로그램을 위한 기반을 제공
  • 컴퓨터 사용자& 컴퓨터 하드웨어 사이에서 중재자 역할

Operating System Definition

  • 유저 : program for ease of use and performance.
  • System : program for resource allocation and control
    • 자원 할당자(resource allocaation & control) 로서의 역할
    • 모든 자원을 manage
    • 효율적 자원 사용을 위한 결정을 내림

1.2 컴퓨터 시스템의 구성 (Computer System Organization)

  • Computer-system operation
    • One or more CPUs, device controllers connect through common bus
      (address/data/control bus) providing access to shared memory.
    • Each device is connected through a specific device controller.
    • Concurrent execution of CPUs and devices competing for memory cycles.
  • 현대의 범용 컴퓨터 시스템은
    • 하나 이상의 CPU와 구성요소 &
    • 공유 메모리 사이의 액세스를 제공하는 공통 버스(bus)를 통해 연결된 여러 장치 컨트롤러로 구성
  • 각 장치 컨트롤러마다 장치 드라이버 有
    • 장치 드라이버
      • 장치 컨트롤러의 작동을 잘 알고 있고 나머지 운영체제에 장치에 대한 일관된 인터페이스(명세)를 제공
  • 각 device controller (장치 컨트롤러)는 제어 담당
    • device 만을 위한 버퍼메모리 가짐 <- device driver 라는 운영체제 의해 관리
  • CPU는 메인메모리 값과 컨트롤러의 로컬 메모리 값을 서로 주고 받기 가능
  • device controller 는 CPU와 데이터 전송을 interrupt 로 주고받음 (제어 주고받음)
    • device controller 는 자신의 operation을 끝냈다는 것을 interrupt통해서 CPU에게 알린다.
  • CPU와 장치 컨트롤러는 병렬/동시동작(concurrent) 으로 실행되어 메모리 사이클을 놓고 경쟁

1.2.1 인터럽트 - Interrupt Handling

  • 인터럽트 : 하드웨어가 운영체제에 보내는 전기적 신호(입출력이 대표적)
  • 운영체제의 커널은 이 신호를 받아 그 상황에 따른 대처, 일을 처리
  • 하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있음
  • CPU가 인터럽트 되면 CPU는 하던 일을 중단하고 즉시 고정된 위치로 실행을 옮김
  • 이러한 고정된 위치는 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 가짐 & 인터럽트 서비스 루틴 실행
  • 인터럽트 서비스 루틴이 실행이 완료 => CPU는 인터럽트 되었던 연산 재개

<인터럽트 연산의 시간 일정 - Interrupt Timeline (Single Process)>

  1. 하드웨어에서 물리적 전기신호의 형태로 발생
  2. 인터럽트 컨트롤러의 입력 핀으로 전달
  3. 컨트롤러는 프로세서에 전달
  4. 인터럽트를 감지한 프로세서는 진행중이던 일 중지
  5. 운영체제에 인터럽트 발생 전달
  6. 운영체제의 인터럽트 처리
  7. 중단되었던 프로세스 재개

  • 장치 컨트롤러가 인터럽트 요청 라인에 신호를 선언하여
  • 인터럽트를 발생(raise)시키고
  • CPU는 인터럽트를 포착(catch)하여
  • 인터럽트 핸들러로 디스패치(dispatch)하고
  • 핸들러는 장치를 서비스하여 인터럽트를 지운다(clear).
    => 이 기본 인터럽트 기법은 비동기 이벤트에 CPU가 대응할 수 있게 함

Interrupt Handling (HW Perspective)

  • Old : I/O devices have IRQ
  • Advacned Features : PIR, MSI

Interrupt Handling (SW Perspective)

  • Interrupt transfers control to the interrupt service routine (or interrupt handler), through the interrupt vector, which contains the addresses of all the service routines (generally stored in low memory)
  • Interrupt handler is generally a part of the operating system
  • Interrupt architecture must save the address of the interrupted instruction
  • A trap (or an exception) is a software-generated interrupt caused either by an error or a user request

  • 인터럽트는 모든 서비스 루틴의 주소를 포함하는 인터럽트 벡터를 통해 인터럽트 서비스 루틴(또는 인터럽트 핸들러)으로 제어 권한을 전송 (일반적으로 낮은 메모리에 저장됨)
  • 인터럽트 핸들러는 일반적으로 운영 체제의 일부
  • 인터럽트 아키텍처는 중단된 명령의 주소를 저장 NEEDED
  • trap(또는 예외)는 오류 또는 사용자 요청에 의해 발생하는 소프트웨어 생성 인터럽트

Classes of Interrupts

① Program (Trap or Software Interrupt)

  • arithmetic overflow
  • division by zero
  • execute illegal instruction
  • reference outside user’s memory space
  • by user’s request (e.g. system call or monitor call)
    ② Timer
    ③ I/O
    ④ Hardware failure

1.2.2 저장장치 구조 (Storage Structure)

메인 메모리(Random-Access Memory : RAM)

  • 휘발성 메모리 (VOLATILE)
  • 용량 대비 가격 저렴, FAST

보조 저장장치

(+) 대부분의 프로그램은 메모리에 적재될 때까지 보조저장 장치를 사용 , 보조저장장치는 메인 메모리보다 훨씬느리기 때문에, 보조저장장치의 올바른 관리는 컴퓨터 시스템에서 매우 중요

  • 비휘발성 (NON-VOLATILE)
  • ① 하드 디스크 드라이브 (HDD)
    • 마그네틱 디스크를 이용해서 데이터 읽어냄,
    • 디스크 표면은 논리적으로 트랙으로 구분되며, 섹터로 세분화
    • 디스크 표면은 논리적으로 트랙으로 구분되며, 섹터로 세분화
  • ② SOLID STATE DISKS (SSD)
    • 전자장치 이용한 비휘발성 메모

CACHING

  • 메인메모리에 저장된 내용의 일부를 임시로 저장해두는 기억장치

MIGRATION of A from Disk to Register

=> CPU가 하나씩 불러와 옮기는 방법 : 너무 단순해서 CPU가 할 필요 없고, CPU 본업 챙기지 못할지도

  • Multitasking : 메인메모리에 동시에 여러 프로세스가 올라가있는 환경
  • 하나의 cpu가 여러 process 왔다갔다하는 환경에서는 가장 최신의 value 를 쓰는 것이 중요
  • Multiprocessor environment : cache coherency 제공해야 함
    • 변수 A 복사본이 여러 로컬캐시 저장 -> 동일성 보장 어려울지도

1.4 운영체제의 작동 (Operating-System Operations)

Direct Memory Access Structure (DMA)

  • CPU 는 하던 일 계속하고, 다이렉트로 데이터를 옮기는 방식
  • CPU 개입 없이 디바이스 컨트롤러는
  • 버퍼 스토리지로부터 데이터를 메인메모리로 옮긴다.

1.4.1 Multiprogramming & Multitasking

Multiprogramming

  • Multiprogramming : CPU가 항상 한 이상의 프로그램을 실행할 수 있도록하여 CPU 이용률을 높이고 사용자의 만족도를 높이는 프로그래밍

    JOB SCHEDULING 에 의해 job 의 실행 순서와 형태를 잘 조직해 CPU가 항상 하나의 job을 실행할 수 있게 함

  • 2개 이상의 작업을 동시에 수행하는 과정
  • 운영체제는 여러 개의 작업을 메모리에 동시에 유지함으로서,
  • 현재 실행중인 작업이 I/O를 할 경우, 다음 작업을 순차적으로 실행
  • 여러 프로세스를 동시에 메모리에 유지

Multitasking (Time Sharing)

여러개의 task를 자주 번갈아가며 수행하다보니 사용자는 동시에 여러 task가 수행되고 있다고 느낌

  • 다중 프로그래밍의 논리적 확장
  • Timesharing (multitasking) : job이 실행중일 때라도 어떤 근거에 기반해 빠르게, 자주 교체해서 실행
    => 시간이 모두 끝나서 교체될 수도, 중간마다 교체될 수도 있음
  • 프로세스 : 메모리에 탑제된 프로그램
  • 여러개 준비되어 있으면 CPU 스케쥴링에 의해 해당 프로세스를 선택
  • swapping : 메모리를 너무 많이 차지하면 외부로 내보내거나 가져오기도 함
  • 가상메모리 (virtual memory) : 메모리에서 마무리되지 않은 process 의 수행을 허용

멀티 프로그래밍 (Multi-programming) VS 멀티 태스킹 (Multi-tasking)

✔️ 멀티 프로그래밍 (Multi-programming)

  • 초기의 컴퓨터에서는 하나의 프로그램이 메모리에 올라가면 하나의 프로그램만 CPU가 처리를 진행할 수 있었음
  • 이 과정에서 프로세서의 처리 속도와 입출력 속도 간의 차이로 인해, 입출력이 완료될 때까지 프로세서는 idle한 상태
  • 따라서 이는 프로세서의 자원 낭비 !

    프로세서가 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있도록 하는 것이 멀티프로그래밍이다.

✔️ 멀티 태스킹 (Multi-tasking)

  • Task란 운영체제에서 처리하는 작업의 단위 또는 정해진 일을 수행하기 위한 명령어 집합을 뜻 (process 보다 확장된 개념)
  • 멀티 태스킹은 task를 OS의 스케쥴링에 의해 task를 번갈아가며 수행하는 것
  • 여러개의 task를 자주 번갈아가며 수행하다보니 사용자는 동시에 여러 task가 수행되고 있다고 느끼게 된다.
    (+) Multiprocessor vs Multitasking
    multitasking: 하나의 CPU가 여러개의 Process를 실행하는 것
    Multiprocessor: 하나의 Computer안에 여러개의 CPU가 있는 것

멀티프로그래밍 vs 멀티태스킹

  • 멀티 프로그래밍은 프로세서의 자원낭비를 막기 위함
  • 멀티태스킹은 정해진 시간동안 각각의 task를 번갈아가며 수행하는 것


① Dual-Mode Operation
② I/O Protection
③ Memory Protection
④ Timer


① Dual-Mode Operation

  • 운영체제는 적어도 두 개의 독립된 연산 모드 - 사용자 모드 & 커널 모드 필요!
  • 이 모드 비트(mode bit)는 하나의 비트가 현재의 모드를 나타내기 위해 컴퓨터의 하드웨어에 추가 (커널 / 유저 구분시켜주는 코드)
    • 유저 모드는 1, 커널 모드는 0
  • 운영체제를 위하여 실행되는 작업과 사용자를 위해 실행되는 작업을 구분 가능
  • 즉, 사용자 Application이 운영체제로부터 서비스를 요청하면(시스템 콜) 이 요청을 수행하기 위해서는 사용자 모드에서 커널 모드로 전환
  • 이중 모드는 잘못된 사용자로부터 운영체제를, 그리고 잘못된 사용자 서로를 보호하는 방법을 제공

② I/O Protection

  • I/O(Port) Register들을 모두 Privileged Instruction으로 만들기
  • I/O와 관련된 모든 함수들은 커널 내부로 들어가야 한다는 의미

③ Memory Protection

  • 프로그램에서 메모리 보호를 위해서는 프로그램이 접근해야 하는 legal 주소 결정하는 두 register 사용
    • (1) Base register
      • 가장 작은 legal physical memory address
    • (2) Limit register
      • 레지스터 크기의 범위 포함

④ Timer

  • 타이머는 운영 체제가 제어 상태를 유지하도록 지정된 기간 후에 컴퓨터를 중단

    os가 control을 지속한다는 것을 보장하기 위해 specified period 후 컴퓨터를 인터럽트 하도록 설정

    • Timer is decremented every clock tick
    • value 가 0이 되면 interrupt 발생
  • 우리는 사용자 프로그램이 무한루프(infinite loop)에 빠지거나
  • 시스템 서비스 호출에 실패하여, 제어가 운영체제로 복귀하지 않는 경우가 없도록 반드시 방지
    => 해당 목적을 달성하기 위해 타이머(Timer)를 사용
  • Load-timer is a privileged instruction
post-custom-banner

0개의 댓글