[운영체제] ch1. Introduction

황인권·2024년 6월 20일

운영체제

목록 보기
1/10

1. OS(Operating System)

Operating System

  • 하드웨어를 관리하는 프로그램
  • 컴퓨터 하드웨어와 컴퓨터 사용자 사이의 중개인 역할을 하는 프로그램

애플리케이션에는 하드웨어를 관리하는 기능이 없다.
그래서 OS <- -> APP 상호 작용이 있는것

OS의 목표

  • User Program 실행
  • User Problem을 더 쉽게 해결
    (사용자의 컴퓨터 사용을 도움 == 컴퓨터 사용을 더 쉽게 만듬)
  • 하드웨어를 더 효율적인 방식으로 사용
    • CPU, Memory -> 소중한 자원이다.
    • App은 메모리 관리 의무 X, HW 관리는 OS의 몫이다.

Computer System

Four Computer System Components

  • User
  • System/application Programs
  • OS
  • Computer HW
  • 오직 OS만이 하드웨어와 직접 소통할 수 있다.
  • OS는 하드웨어와 시스템, 애플리케이션 사이를 중개한다.

OS View Points

사용자 시점

  • Home PC User : 주요 목표는 쉬운 사용이다. 리소스 활용은 사용자가 생각할게 아니다.

    OS는 User에게 있어 컴퓨터 편하게 쓰게 해주는 도구일 뿐이다.
    유저는 Memory, HW 등을 신경쓰지 않는다.

시스템 시점

  • Resource allocator : OS는 여러 프로그램들에게 리소스를 할당해 준다.

    Resource : CPU, Memory, Stroage, I/O Device, ...
    여러개의 Program 가동 중 -> 각자 리소스 요구 -> OS가 allocator 역할
    또한, 충돌하는 리소스 요청을 핸들링한다.

  • Controal program

    • 에러 방지(동시에 disk write 발생, 권한 관리 등)
    • 컴퓨터의 부적절한 사용을 막는다.

Definition of OS

OS는 느슨하게 정의된다.

  • Diverse HW, various purpose
  • OS = Kernel + System programs

    Kernel : OS의 기본 알고리즘을 구현해둔 로직

Computer System Organization

  • CPU : 연산 수행
  • 입출력 장치 : 디스크, 모니터, 프린터 등 -> Device controller에 의해 관리된다.
    -> Device controller에는 Disk Controller, USB Controller, Graphics adaptor 등이 있다.
  • Memory : CPU와 Device controller는 병렬로 실행되고 있고, 둘다 System bus(Communication channel)로 Memory와 연결되어 있다.

    System bus를 공유하고 있는제 충돌이 일어나면 -> Memory controller가 접근을 동기화한다.

Computer Operations

Start-up

  • Bootstrap program : 컴퓨터가 켜지면 가장 먼저 실행되는 프로그램. OS의 구동을 돕는 프로그램.
    • ROM, EEPROM에 Hard-wired로 저장됨
    • CPU Register, Device controllers, Memory 초기화
    • OS kernel 로드, Kernel 시작
  • System daemons
    • 커널 백그라운드에서 계속 돌아간다.
    • init 프로세스 바로 아래 위치
      (init이 제일 첫 번째 프로세스이고, 이게 다른 daemon들을 시작시킨다.)

Interrupt

  • CPU에게 멈추고 interrput handler를 실행하라고 보내는 event

    Interrupt handler : 함수 하나
    Interrupt vector : Interrupt handler 주소들의 배열

  • H/W interrupts
    • timer, keyboard, mouse moving 등 -> System bus를 통해서 전달된다.(Remind)
  • S/W interrupts
    • System call
  • Interrupt handling은 CPU의 주요 기능 중 하나 (반드시 빨라야 한다.)
  • Interrupt된 Instruction의 현재 주소화, register 상태를 저장해두어야 한다.

Interrupt Timeline


CPU는 두가지 상태를 가진다.

  • User process executing
  • I/O interrupt processing

I/O device : Disk 같은 거라고 생각하면 된다.
1. I/O request : Disk가 idle -> transferring -> idle. Disk에서 Memory로 데이터 가져온 것이다.
2. Transfer done : I/O Interrupt 처리. Memory에서 CPU로 데이터 가져오기
3. 이후 아무것도 안 하다가 (CPU는 계속 User process executing, I/O는 idle)
4. I/O request -> Transfer done -> idle -> ... 반복

I/O가 작업 중이더라도, CPU는 다른 작업을 할 수 있다.
I/O 작업이 완료되면, 그제서야 interrupt가 발생한다.

Storage Structure

모든 프로그램들은 실행되기 전에 (IW/SW instruction 등) 메모리에 로드되어야 한다.

Memory : 보통 RAM을 가리킨다.
Storage : 보통 Disk drive를 가리킨다. (Memory, register 모두 storage인 것은 맞다.)

폰노이만 아키텍처

  • 인스트럭션과 데이터가 같은 메모리에 저장된다. (IM, DM이 나누어져 있지 않다.)
  • CPU는 Memory와 Slingle Cannel로 연결된다.
  • Cache로 메모리 접근을 향상시킬수 있다.
  • CPU
  • 1 Channel이기에 단순하지만, 1 Channel이기에 접근 성능은 조금 나쁘다.

하버드 아키텍처

  • 인스트럭션을 저장하는 메모리와 데이터를 저장하는 메모리가 따로 있다. (IM, DM)
  • 2 Channel로 두개의 분리된 메모리를 사용하기 때문에 더 복잡하다.

    두 아키텍처가 서로 반대 관계 X

Secondary storage : HDD, SDD 등

  • 메모리는 용량이 너무 작고, 휘발성이기 때문에 Secondary storage가 필요하다.

Storage device hierarchy

Memory Hierarchy
위로 갈수록 빠르고 휘발성이다.
아래로 갈수록 느리고 싸고 비휘발성이다.


2. I/O Structure

장치를 관리하는 것은 OS에서 중요한 부분이다.

Device controller

모든 장치는 Device controller를 가지며, CPU는 이것들을 가지고 장치와 communication 한다.
CPU와 Device controller는 공통된 bus를 통해 연결되어 있다.

  • OS는 어떻게 여러 장치를 핸들링하는가?
    • OS는 Device controller와 어떻게 상호작용해야 하는지 적혀있는 Device driver를 가지고 있다.
    • 장치 제조사는 장치에 대한 Device driver를 소프트웨어 형태로 제공해야 한다.
    • Device driver 소프트웨어는 read, write와 같은 기능을 구현하는 함수의 집합이다.

I/O Operations (인터럽트 기반 입출력)

  1. CPU(OS)가 Device controller의 레지스터에 명령을 넣는다.
  2. Device driver가 Device controller의 레지스터 내용을 로드한다.
  3. Device controller가 레지스터 내용을 본다.
  4. Device controller가 데이터 송수신
  5. Device controller가 데이터 송수신을 마치면, 인터럽트를 발생시킨다.
  6. Device driver는 OS에게 control을 돌려준다.

DMA 기반 입출력

  • DMA controller라는 별도의 장치를 통해 I/O 작업
    (OS의 일부가 아니라, 별도의 장치이다.)
  • 실제 CPU가 Control하는 건 DMA를 컨트롤하는 DMAC를 컨트롤하는 것

3. Computer System Architecture

Single-processor systems

  • 하나의 general-purpose processor(현재 작업에 따라 달라진다.) + 많은 special-purpose processors

Multiprocessor systems

  • 2개 이상의 프로세서(CPU)로 구성된 하나의 시스템

    하나의 프로세서로는 성능 개선의 한계가 있기 때문에

  • Throughput 증가(Throughput : 단위시간 동안 얼마나 많은 일이 처리되는가)

    • 프로세서 개수를 늘림으로써, 더 적은 시간에 더 많은 일을 할 수 있다.

그러나, N개의 CPU가 N배의 성능 향상을 의미하지는 않는다!
CPU 개수가 증가해도 throghput도 log scale로 증가하다가 결국 어딘가로 수렴한다.

  • Economy of scale
    • Single-processor system을 여러 개 두는 것보다 비용이 더 적다.
    • 전원, 저장소 등을 여러 프로세서가 공유하기 때문에
  • Increased reliability
    • 하나의 프로세서가 고장나더라도 시스템이 멈추는 일은 없고, 속도만 느려진다.
    • Graceful degradation
      더 많은 하드웨어 컴포넌트의 문제가 생길수록 동작 효율이나 속도가 점진적으로 감소한다.
    • Fault toleance
      여러 개의 하드웨어 컴포넌트 중 일부가 문제가 생기더라도, 전체 시스템의 불능 상태가 일어나지 않고 서비스를 제공한다.
      fault tolerance 시스템은 Graceful degradation 특징을 가진다.

Asymmetric multiprocessing : Master and Slave

  • 하나의 프로세서가 다른 프로세서와 Master-Slave 관계
    • Master 프로세스는 하나의 전체 시스템(다른 프로세스)를 control 한다.
    • 각 Slave 프로세스는 Master 프로세스에게 작업을 할당받아 명령을 수행한다.

Symmetric multiprocessing(SMP)

  • 대칭적인 프로세싱 : 포지션별로 모두 같이 일을 한다.
    • 각 프로세서는 OS의 모든 작업을 같이 수행
  • 모든 프로세서가 하나의 물리 메모리를 같이 공유한다.
    • UMA(Uniform memory access) : 어느 프로세서에서 어느 메모리에 접근하든 동일한 시간이 걸린다.
    • NUMA(Non-UMA) : 메모리 일부분이 다른 부분보다 접근이 더 오래 걸릴 수 있다.

Multicore system

하나의 프로세서 내에 여러 개의 코어가 들어있는 것

  • 하나의 칩 내에서 커뮤니케이션(정보 교환)이 훨씬 효율적
    • CPU 2개 커뮤니케이션보다 CPU 1개 내의 두 개 코어끼리의 커뮤니케이션이 더 효율적이다.
  • 비용이 더 저렴하다.
    • 전력소비가 더 적다. 더 낮은 파워를 사용할 수 있다.

4. OS Structure

OS는 프로그램이 실행될 환경을 제공한다.
OS의 주요 기능들

  • Multi-programming : 여러 개의 작업을 메모리에 유지

it does not mean 'programming coding' -> more like 'Multi-execution'

멀티 프로그래밍의 목적 : CPU 효율성 증대(To increces the CPU utilization)
CPU의 효율성 : 리소스를 얼마나 사용하고 있는지에 대한 정보
-> Ex) 메모리 4GB 중 2GB를 사용하고 있다면 -> utilize 50%
즉, 우리는 CPU를 항상 바쁘게 유지시키려 한다. CPU가 idel인 것을 원하지 않는다.
job scheduling from Job pool : 작업들이 로드되기를 기다리는 개념적 공간

사용자가 수행하고 싶은 프로그램은 많은데 메모리는 그만큼 충분하지 않다.
모든 프로그램이 한번에 로드될 수 없으니, Job Pool에 대기시키고, Job Switching을 통해 Memory에 로드된 프로그램 중 하나를 Job Pool의 프로그램으로 대체하는 것

  • Time sharing(Multitasking)
    • 메모리에 로드된 프로그램들 사이의 교체(Swiching)
    • 빠른 교체 -> 사용자 시각에서 더 interactive하게 보인다.
      ex) 응답 시간이 짧으면 키 입력에 즉각 반응
    • 멀티프로그래밍과 더불어 매우 중요한 기능이다.
  • Process : 메모리에 로드된 프로그램의 running instance
    • Program : 단순한 instruction의 집합. 파일 하나
    • 프로세스는 프로그램과 더불어 추가적인 정보(메모리 사용, 권한, 언제 시작 등)까지 저장하고 있다.
    • Process = Program + State 프로그램은 단순한 instruction set이다.
    • 하나의 프로그램이 여러 프로세스를 만들 수 있다.
  • 여러 프로세스를 처리하면서 메모리가 부족한 경우 : Memory management
    • swapping 또는 Virtual memory -> Ch8,9

5. OS Operations

OS는 Interrupt driven하다.
-> 인터럽트가 없다면, OS는 백그라운드에서 아무것도 하지 않는다.

Trap : User process의 exceptrion

  • Trap은 Software interrupt 형태로 나타난다.
    • Div by zero, Invaild addr, Crtl-C, Child process ended, ...
  • Interrupt Service Routine(ISR)
    • 특정한 종류의 인터럽트를 핸들링하는 커널 내부에 있는 함수의 집합
    • "이 인터럽트가 발생하면, 이렇게 처리해라"

Kernel mode VS User mode

  • Kernel mode : Supervisor mode, System mode, Privileged mode
  • User mode : 커널 모드보다는 제한적이다.
  • CPU는 현재 모드를 나타내기 위한 mode bit을 제공한다.
    (Kernel mode = 0, user mode = 1)
    (Remind : CPU Register 내에는 많은 특수 목적 레지스터들이 있다.)

  1. User process가 실행 중 -> System call을 호출한다.(Trap이 발생)
  2. Mode switch : mode bit가 0으로 바뀌고, kernel mode가 된다.
  3. System call 수행
  4. Mode switch : mode bit가 1로 바뀌고, User mode가 된다.
  5. User process가 system call로부터 돌아왔고, 계속해서 실행한다.

Privileged instructions(특권명령)

  • 시스템에 악영향을 끼칠 수 있는 일부 instruction들
  • 오직 크널 모드에서만 실행시킬 수 있다.
  • 유저 모드에서 실행시키고 하면 -> Trap 발생
profile
inkwon Hwang

0개의 댓글