Operating-System Virtualization

  • os level virualization
  • 운영 체제의 커널이 하나의 사용자 공간 인스턴스가 아닌, 여러 개의 격리된 사용자 공간 인스턴스를 갖출 수 있도록 하는 서버 가상화 방식
  • 하나의 물리 머신 상에서 복수의 시스템을 동시 운영
  • CPU, 메모리, HDD 등을 소프트웨어를 통해 논리적으로 생성
  • 물리 서버 단위 → 애플리케이션 단위

 

구성요소

  • Service : 웹사이트와 같이 미들웨어 상에서 구현되는 것, 사용자의 최종 목적
  • Middleware(Application) : 사용자측 - middleware, 서버 측 - application, 프로그램을 의미
  • OS 
  • HDD
  • Memory
  • CPU

 

작동원리

  •  Hypervisor는 물리 리소스를 분할하여 이 리소스를 필요로 하는 VM이 사용하게 해줌
  • 가상환경이 실행중인 상태에서 사용자 또는 프로그램이 추가 리소스를 요구하는 명령을 내리면 하이퍼바이저는 그 요청을 물리 시스템에 전달해 실행

 

Hypervisor

  • 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼
  • virtual machine monitor(VMM), virtual machine manager(VMM)
  • 하이퍼바이저가 설치된 물리 하드웨어를 host, 그 리소스를 사용하는 여러 VM을 guest
  • host는 필요한 리소스가 guest에게 제공될 수 있도록 CPU, 메모리, 스토리지, 기타 리소스의 가상 인스턴스를 제어함
  • 종류
    • Monolithic : 드라이버를 하이퍼바이저 안에 포함시켜 관리, OS가 없음
    • Microkernel : 각 하드웨어에 마이크로커널형 하이퍼바이저를 설치할 때마다 관리 OS 설치 

 

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 2  (0) 2021.08.12
[개념] Memory Management 1  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12
[개념] Threads and Concurrency  (0) 2021.08.12

Inter-Process Communication

os kernel 구조

  • 프로세스들은 유저 공간(user-mode)에서 개별로 os로부터 할당받은 독립된 공간에 존재
  • kernel space에서 IPC기술을 통해 프로세스들 간 통신을 제공

 

종류

  • PIPE
    • 익명의 PIPE를 통해 동일한 PPID를 가진 프로세스들 간에 단방향 통신(Half Duplex)을 지원
    • 송수신을 위해선 2개의 파이프가 필요

 

  • Named PIPE
    • 이름을 가진 PIPE를 통해서 프로세스들 간에 단방향 통신을 지원
    • PIPE이름만 알면 프로세스들이 통신 가능
    • 송수신을 위해선 2개의 파이프가 필요

 

  • Message Queue
    • 메모리를 사용한 PIPE(컨테이너 벨트), 구조체 기반으로 통신
    • 메시지 큐에 쓸 데이터에 번호를 붙임

 

  • Shared Memory
    • 시스템 상의 공유 메모리를 통해 통신
    • IPC들 중에서 가장 빠르게 작동

 

  • Memory Map
    • 열린 파일을 프로세스의 메모리에 일정 부분 매핑시켜서 사용

 

  • Socket
    • 네트워크 소켓통신을 사용한 데이터 공유
    • 원격에서 프로세스간 데이터를 공유할 때
    • 네트워크 프로그래밍

 

  • Semaphore
    • 프로세스 간 데이터를 동기화하고 보호하는데 목적
    • 공유된 자원에 하나의 프로세스만 접근 가능하도록

 

 

참고: https://cho001.tistory.com/42

 

리눅스 IPC 프로그래밍(IPC종류) [1]

IPC(Inter Process Communication) - 프로세스 간 통신에 대하여 종류와 특징들에 대하여 살펴보겠습니다. [리눅스 커널 구조] - 위 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어

cho001.tistory.com

 

❗ 나중에 해당 코드들도 찾아보자...특히 shared memory, socket, semaphore

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12
[개념] Threads and Concurrency  (0) 2021.08.12
[개념] Process Management  (0) 2021.08.12

I/O System

  • OS code의 대부분을 차지
  • User의 체감 성능에 가장 중요한 영향을 미침
  • test하기 힘든 영역
  • Types of I/O Devices
    • Block Device
      • 데이터가 fixed-size block에 저장되고, block은 저마다의 주소를 갖는다
      • 이러한 block address를 통해 independently하게 access하여 R/W한다
      • Disk
    • Character Device
      • 데이터가 Stream 형태로 존재, 이미 처리한 데이터를 다시 처리할 수 없음
      • Address가 없다
      • Printer, Network Interface, Mice 등
    • Others
      • Clocks, Memory-Mapped Screen

 

Device Controller

  • 외부에서 들어온 데이터를 변환하여 Disk에 저장
  • H/W적인 error correction을 수행
  • DMA Operation(Direct Memory Access)
    • Device가 직접 Memory에 Access하는 기능
    • I/O Device에 Access할때, Controller에 있는 data register에 I/O Device가 읽거나 쓸 데이터를 저장하고 control register에 수행할 명령을 저장해 작업을 수행
    • 어떻게 Addressing할 것인가?

  • DMA(Direct Memory Access)
    • DMA Controller는 Physical Address를 바로 사용
    • Virtual Address를 사용하려면 MMU(Memory Management Unit)에 접근할 수 있어야 한다
  • DMA Transfer Mode
    • Cycle Stealing : CPU가 Memory에 Access하지 않는 타이밍에만 I/O Device와 Memory사이로 데이터를 옮김
    • Burst Mode : CPU가 한동안 Bus를 사용하지 못하게 제한, I/O Device가 Bus를 독점

 

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] Threads and Concurrency  (0) 2021.08.12
[개념] Process Management  (0) 2021.08.12

Concurrency

  • 병행성, 병행적인 프로세스들의 집합으로 응용 프로그램을 구조화함으로써 구현됨
  • fork()
  • Overhead in Process Model : 여러 개의 프로세스를 사용하는 모델에서 각각의 프로세스는 독립적, 통신을 위해서는 커널을 통한 IPC(Inter Process Communication)가 필요 + PCB의 크기가 크다 ⇒ 프로세스의 생성과 context switching에 오랜 시간이 걸림

Thread

  • CPU 스케줄링의 기본 단위
  • 한 프로세스 안에서 제어의 흐름
  • pc, registers, stack ( 프로세스보다 작아 오버헤드를 줄임 )
  • 자신만의 레지스터 상태와 스택을 가짐
  • 같은 프로세스 안에서 여러 스레드 생성 가능, 프로세스를 위한 코드와 주소 공간과 운영 자원을 공유 가능
  • 스레드가 실행되는 환경 : task

single은 기존의 process와 같다

 

Multithreading

 

  • Single Processor : Concurrency 달성(병렬적인 것처럼 보임, 계산 속도를 증가)

  • Multiple Processor : Concurrency 달성(동시에 여러 스레드 실행, core의 병렬성)

 

User-level vs Kernel-level

  • User-level threads : 유저 레벨에서 라이브러리 호출을 통해 커널 위에서 유지됨
    • 스레드 관리가 유저 레벨에서 된다.
    • 커널 모드로 전환 불가능, 빠르고 간편
    • 애플리케이션에 특화된 스케줄링
    • Blocking problem : 하나의 스레드에서 I/O처리를 시작했을 때 다른 스레드에서 일 진행 못함, 멀티 프로세서의 concurrency유지 못함(커널이 스레드의 존재를 모름)
  • Kernel-level threads : 운영체제 안, 커널 안의 함수를 사용
    • 커널에 의해 관리된다.
    • 유저레벨에 비해 느리다
    • Blocking problem 없음
    • 현대 OS들은 커널을 지원
  • Multithreading Models(Mapping Model)
    • Thread libraries : 스레드를 생성하고 관리하기 위한 API, 유저 레벨과 커널 레벨의 역할이 서로 다름

user-level : 커널와 1:1 매칭 / kernel level : 다양한 매칭

  • Thread Mapping and scheduling
    • user level에서의 스케줄은 thread library를 통해 kernel level과 매핑되어 수행
    • kernel level의 스케줄은 물리적 cpu와 kernel level 스레드들이 커널을 통해 매핑
    • 병렬 실행 : virtual processor(커널 레벨)에 있는 스레드의 병행성, 물리적 코어들에 있는 스레드의 병행성
    • 실제 병렬성(parallelism) : 하나의 스레드 : 하나의 코어의 1:1 관계(thread pinning)

 

Threading Issues

  • fork() 이후에 exec()이 바로 호출되면, 모든 스레드를 복사할 필요가 없다.
  • Signals(sw interrupt)
    • Synchronous signals : 시그널을 발생시킨 동작을 수행한 프로세스에 전달
    • Asynchronous signals : 동작 중인 프로세스 바깥에서 발생한 이벤트에 의해 발생
  • Thread pools : 할 일을 기다리는 많은 스레드가 존재하는 풀 생성
    • 새 스레드를 생성하는 것보다 요청에 응답하는 게 조금 더 빨라짐
  • Thread Local Storaged(TLS) : 각각의 스레드들이 자기 자신만의 데이터를 가지게끔

 

❗ Concurrency는 한번에 많은 것을 처리(SW) / Parallelism은 한 번에 많은 일을 처리(HW)

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12
[개념] Process Management  (0) 2021.08.12

Process

  • Main Memory에 할당되어 실행 중인 상태인 프로그램
  • job, task 등으로도 불림
  • 상태
    • New, Ready, Running, Waiting, Terminated

Process 상태 전이도

  • PCB(Process Control Block)
    • 프로세스에 대한 모든 정보가 모여있는 곳
    • TCB(Task Control Block)
    • process state, PID, program counter, register값, MMU정보 등이 포함

CPU는 한 프로세스가 종료될 때까지 수행하는 것이 아니라 여러 프로세스를 중간중간 바꿔가며 수행하는데 수행하고 있던 프로세스 정보를 저장하기 위해 필요하다!

 

  • Process Queue
    • 프로세스는 일반적으로 여러 개가 한번에 수행
    • 그에 따른 순서가 필요

Job Queue : 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리의 할당 순서를 기다림

Ready Queue : CPU 점유 순서를 기다림

Device Queue : I/O를 하기 위한 여러 장치가 있는데, 각 장치를 기다림

각 큐 내부에 저장된 실제 데이터는 각 프로세스의 PCB가 저장되어있다. 

순서를 정해주는 알고리즘이 필요 "스케줄링"

Job Queue - Job Scheduler(Long-term)

Ready Queue - CPU Scheduler(Short-term)

Device Queue - Device Scheduler

 

Multiprogramming

  • 멀티프로그래밍은 단일 프로세서(CPU) 환경에서 여러 개의 프로세스가 동시에 실행되는 것
  • Degree of multiprogramming : 현재 메모리에 할당되어 있는 프로세스 개수
  • 프로세스 종류
    • I/O bound process : 해당 프로세스에서 I/O 작업이 차지하는 비중이 높은 프로세스
    • CPU bound process : 해당 프로세스에서 CPU 작업(계산)이 차지하는 비중이 높은 프로세스
      • Job scheduler는 두 프로세스를 적절히 분배해 메모리에 할당해야 한다!
  • Medium-term scheduler : os가 실행하는 동안 주기적으로 메인 메모리에 있는 전체 프로세스를 검사하여 보조기억장치로 옮길 프로세스를 찾아 옮김("Swapping")
    • Swap device = Backing store ( HD = Backing store + File system)
    • Swap out : main memory → HD / Swap in : HD → main memory
  • Context Switching(문맥 전환)
    • CPU가 한 프로세스에서 다른 프로세스로 옮겨가는 것
    • Scheduler : CPU scheduler에 의해 CPU가 어느 프로세스를 선택할지 결정
    • Dispatcher : 현재 CPU 데이터는 이전 프로세스의 PCB에 갱신하고, 새로 시작되는 프로세스의 PCB 데이터를 CPU로 복원(restore)
    • Context switching overhead : context switching이 발생할 때마다, dispatcher에서 수행하는 작업은 매번 수행하는데 이게 overhead(dispatcher구현에 대해 효율성을 최대로)

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12
[개념] Threads and Concurrency  (0) 2021.08.12

+ Recent posts