65
オペレーティングシステム 加藤 真平 東京大学 大学院情報理工学系研究科 [email protected] 2018/4/9 1 1オペレーティングシステム .PFLab(加藤研)のウェブサイトからダウンロードできます。 ⇒http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ .紙資料も配布します。

オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

オペレーティングシステム

加藤 真平

東京大学 大学院情報理工学系研究科

[email protected]

2018/4/9 1第1回 オペレーティングシステム

1.PFLab(加藤研)のウェブサイトからダウンロードできます。⇒http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/

2.紙資料も配布します。

Page 2: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 2

加藤真平東京大学大学院情報理工学系研究科 准教授名古屋大学未来社会創造機構 客員准教授株式会社ティアフォー 創業者

慶應大学 Carnegie Mellon University UC Santa Cruz東京大学

Ph.D.

2004 2006 2008 2010 20122005 2007 2009 2011

リアルタイム処理用LSI

オペレーティングシステム

マルチコア

自動運転

GPGPU クラウドストレージ

スパコン

Hardware Platform

App1 App2 App3 App4 App5 App6

安全! 安全! 安全! 安全! 安全! 安全!

セーフティクリティカルシステム

応用

コア領域

Page 3: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 3

加藤真平東京大学大学院情報理工学系研究科 准教授名古屋大学未来社会創造機構 客員准教授株式会社ティアフォー 創業者

2013 20152014

Page 4: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 4

株式会社ティアフォーhttp://www.tier4.jp

共有利用型の自動運転カー

個人所有型の自動運転カー

大学発ベンチャー

オープンソースの自動運転システムhttps://github.com/cpfl/autoware

Page 5: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

プラットフォーム研究室(PFLab)東京大学大学院情報理工学系研究科コンピュータ科学専攻

2018/4/9 第1回 オペレーティングシステム 5

http://www.pf.is.s.u-tokyo.ac.jp

Page 6: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

主要な研究テーマ

2018/4/9 第1回 オペレーティングシステム 6

リアルタイムシステム

オペレーティングシステム 並列分散システム

組込みシステム

センサネットワーク

ストレージシステム

Page 7: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

メンバー構成

准教授:加藤 真平

特任講師:千代 浩之

修士2年:5人

修士1年:5人

留学生:2人

メキシコ

カザフスタン

Page 8: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

プラットフォーム研究

8

ハイパフォーマンス系✓システム全体のスループット重視✓長時間にわたる計算が主体✓ネットワーク・ストレージにも依存✓ジョブ投入によるバッチ処理

リアルタイム系✓個々のタスクのタイミング重視✓マイクロ・ミリ秒単位の計算が主体✓センサ・アクチュエータにも依存✓周期的なストリーム処理

Page 9: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

分散データ処理システム

大規模データベース

インメモリデータベース

オペレーティングシステムの重要性

2018/4/9 第1回 オペレーティングシステム 9

HDF5File

NetCDFFile

XMLFile

File Interface (e.g., MPI-IO)

Cache &Index

Query Processor

UDF &Analysis

Storage Management

ComputationInterface

Virtualized Single-ImageMany-Core Device

Virtualized Single-ImageCPU

Many-Core ProgrammingInterface (e.g., CUDA)

App App App App

HDF5API

NetCDFAPI

XMLAPI

Data M

anagem

ent

Co

mp

utatio

n

・・・

Compute Notes

Virtual Network

Virtualization

Provenance, Sustainability, & Performance Management

ハイパフォーマンス系

Page 10: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

オペレーティングシステムの重要性

2018/4/9 第1回 オペレーティングシステム 10

Machine Learning/Deep Learning

Many-Core CPUs GPUs

Embedded OS RTOS and Real-Time Linux

ROSCUDA

ECUECU

ECUECU

CAN

Camera GNSS

LIDARRadar

OpenCVPCL

Monitoring

ADAS SafetyControlControl

ControlControl

Perception Planning ControlDriver Interface

Car

Driver

Distributed Data

Proceesing

Large-scaleDBMS

In-memoryDBMS

Pedestrian

FPGAs

Statistical Analysisリアルタイム系

Page 11: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

【アルゴリズムを改良】計算量を減らすアプローチ

【ASIC(専用LSI)化】汎用性を妥協するアプローチ

【FPGA(プログラマブルLSI)化】小規模な機能向けアプローチ

【GPU・メニーコアで並列化】スケーラブルなアプローチ

Page 12: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

スーパーコンピューティング

Memory

CPUMemory

NIC NIC NIC NIC

Memory

Storage Cluster

Many

CoresMany

Cores

Network

Flash Memory

CPU

GPU

NetCDF

GeoTIFF GRIBHDF5

Bitmap

File Formats

Page 13: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

組込みコンピューティング

Kalray MPPAプロセッサ ARMプロセッサ GPU

イーサネット/CAN

PCI~1000コア 1000コア~4~8コア

商用RTOS商用

RTOSLinux

Linuxドライバ通信

ソケット通信 ソケット通信

ROS

自動運転ソフトウェア(例)

プロセッサ

OS

CUDAOpenCV PCLライブラリ

画像認識

位置推定

物体検出

行動計画

経路計画

走行制御

Page 14: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

共有メモリ型のマルチコア

MemoryL3 Cache

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

高々10個程度のCPUコアが、1つの共有メモリに、均一的にアクセスする。

✓ 1つのOSカーネルで済む✓ 開発環境が整っている✓ 並列化の性能が出やすい

ソフトウェア的視点

Page 15: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

マルチコアからメニーコアへ

L2 Cache

L1 L1 L1 L1 L1 L1 L1L1

Memory

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

Memory Memory

Memory Memory

Page 16: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

マルチコアからメニーコアへ

バス型(SMP)

Intel Xeon:15コア×8ソケット(2014~)

AMD Opteron:16コア×4ソケット(2014~)

ネットワーク型(NoC)

Tilera TILE-GX:8×9コアのメッシュ(2013~)

➢10×10のメッシュをリリース予定

Intel Xeon Phi:8 x 9コアのメッシュ(2016~)

➢72コアの非対称メッシュ

CPUコアを複数並べる形のメニーコア(100±Xコア)

Page 17: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

アクセラレータとしてのメニーコア

2018/4/9 第1回 オペレーティングシステム 17

Many-Core

AcceleratorHost Memory

L3 Cache

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

I/Oバス

Host CPU

Page 18: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

デバイスドライバが重要

2018/4/9 第1回 オペレーティングシステム 18

Host MemoryL3 Cache

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

I/Oバス

Host CPUL2 Cache

L1 L1 L1 L1 L1 L1 L1L1

Device Memory

μC

μC

μC

μC

μC

BAR0

BAR1

BAR2

Contro

l Regis

ters

コマンド書き込み

DMA転送

Page 19: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

Graphics Processing Unit (GPU)

2018/4/9 第1回 オペレーティングシステム 19

L2 CacheL1 L1 L1 L1 L1 L1 L1

Device Memory

Host MemoryCPU

Page 20: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

GPGPU

2008 2010

3000コア500コア

250コア

Tesla FermiKepler

Maxwell

C言語

C++Java

General-Purpose computation on Graphics Processing Units

Pascal

省電力化

20123000コア

20145000コア

Page 21: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

GPGPUGeneral-Purpose computation on Graphics Processing Units

2018/4/9 第1回 オペレーティングシステム 21

8800 GTX9800 GTX

GTX 285GTX 480

GTX 580

GTX 680

GTX Titan

GTX Titan Black

GTX Titan X

X7350X7460 X7560

E7-8870E7-8890

0

1000

2000

3000

4000

5000

6000

7000

8000

2006 2008 2010 2012 2014 2016

GF

LO

PS

RELEASE YEAR

Single Precision Performance

NVIDIA GTX

Intel Xeon

0

5

10

15

20

25

30

2006 2008 2010 2012 2014 2016

GF

LO

PS

/WA

TT

RELEASE YEAR

Performance per Watt

NVIDIA GTX

Intel Xeon

絶対性能、性能対電力比でもGPUはCPUを圧倒

http://www.itmedia.co.jp/news/articles/1704/06/news056.htmlGoogleはTensor Processing Unit (TPU)を発表

Page 22: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

GPGPUの組込みシステム化

2018/4/9 第1回 オペレーティングシステム 22

ワンルーム1300m2

6000KW

ワンボックス1m2

2KW

ワンチップ1cm2

6W

1000倍

3000倍

100倍

300倍

2002年 2014年 2020年~

地球シミュレータ40TFLOPSを達成した当時世界最速のスパコン開発費用600億円

今日のGPU8個のGPUを並べると40TFLOPSを達成可能開発費用100万円+α

将来の組込みシステムスマートフォン程度のチップで地球シミュレータ相当の性能を達成可能?

Page 23: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

NEDOプロジェクト (2017年7月~)独自チップ・OS開発

ヘテロジニアスSoC

I/OCPUMain MemoryVide Memory

SYSTEM BUS

Accelerator(NDT)

DDR4SDRAM

DDR4SDRAM

DDR4SDRAM

DDR4SDRAM

Memory Controller

Accelerator(CNN)

DDR4SDRAM

MemoryController

On-chipI/O

PeripheralDevices

AcceleratorManager

DMAController

CPU(ARM)

BusEmulator

PCIe

PC(x86)

or

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

ManycoreCluster

Scratchpad Memory

PU 0 PU N

LOCAL BUS

NetworkIF

DMASystemRegister

・・・

・・・

NoCBridge

NoC Router

REGISTER BUS

VRAM BUS

Page 24: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

CRESTプロジェクト (2016年12月~)ロボットカー開発

Page 25: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

MIRAIプロジェクト (2017年12月~)社会サービス開発

Page 26: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2016年度の卒論

不均一点群地図作成のためのインクリメンタルレジストレーション手法

タイル構造のメニーコアアーキテクチャ向けのスケーラブルなロックアルゴリズム

並列化された畳み込みニューラルネットワークのスケーラビリティに関する研究

Page 27: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2017年度の卒論

グルーピングされた有向非巡回グラフタスクのリアルタイムスケジューリング

Normal Distributions Transformアルゴリズムを用いた3次元自己位置推定のGPU実装

逐次的手法を用いた疎な点群の3次元メッシュの作成

3次元物体検出のための軽量マルチビューニューラルネットワーク

非対称マルチコアアーキテクチャにおけるスループット指向マルチカーネルの設計と実装

3D-NDTのハードウェアアクセラレータ化に向けたビット長削減手法

Page 28: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

卒論1:リアルタイムシステム

デッドラインミス

次のサイクルに影響なし

既存手法:ノード毎のデッドラインミスを無視して実行

提案手法:指定したノードがデッドラインミスした場合は処理を中断

Page 29: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

卒論2:非対称マルチコアOS

Home Kernelが

全コアで動作

動的なアイレーションとブート

Page 30: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

卒論3:メニーコアOS

タイル DDR

Memoryコアコア

L2 cache

L1

cache

L1

cache

マルチコアCPUに相当 2Dメッシュ状の

インターコネクト

Page 31: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

卒論4:スパコン×深層学習

Page 32: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

卒論5:自動運転×3次元処理

Page 33: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

PFLab拠点

Page 34: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

本郷キャンパス理学部7号館501

加藤先生居室本郷キャンパス理学部7号館502

ミーティング室

浅野キャンパス工学部12号館522

千代先生居室兼ミーティング室浅野キャンパス工学部12号館519

学生居室

浅野キャンパス工学部12号館520

共有スペース

Page 35: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

PFLabフォーラム2017

Page 36: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 36

講義概要

• 受講生に求める基礎知識– C言語の理解

– コンピュータアーキテクチャの基礎の理解• メモリ管理、割り込み、CPUモード

• 参考図書– Silberschatz, Galvin, and Gagne, Operating System Concepts 8th

Edition, Wiley

• 成績– 試験の点数で決定

– 試験は持ち込み不可

– 授業に出席していた人で試験の結果が悪い人は追試験あり• 出席をとるが出席点はなし

第1回 オペレーティングシステム

Page 37: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

講義スケジュール(予定)

1. OSの概要(4/10)

2. プロセス管理(4/17)

3. プロセス間交信、スレッド(4/24)

4. プロセス同期(5/1)

5. CPUスケジューリング 1(5/8)

6. 休講予定(5/15)

7. CPUスケジューリング 2 & トランザクション処理&メモリ管理1(5/22)

8. メモリ管理2(5/29)

9. メモリ管理&I/Oシステム(6/5)

10. I/Oシステム(6/12)

11. 休講予定(6/19)

12. ファイルシステム(6/26)

13. プロテクション&セキュリティ (7/3)

14. バッチシステム&分散システム&まとめ(7/10)

15. 試験(7/24)

2018/4/9 第1回 オペレーティングシステム 37

Page 38: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

初期の計算機の使われ方• 裸の計算機の時代 (1950年代)

– プログラム次第でどのような計算も可能(内蔵プログラム方式; フォン・ノイマン方式)

–(相対的に)高価なハードウェア(真空管等)と安価な人的資源

–目的ごとに個別のプログラムを作成

– 計算機を占有して1つのプログラムを実行

2018/4/9 38第1回 オペレーティングシステム

ENIAC(最初の電子計算機 1946)

・パッチボードによるプログラム

・17,468本の真空管

・24 m x 0.9 m x 2.4 m

・30トン

・150 KW

Page 39: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 39

Page 40: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

OSの役目

• 仮想化&抽象化によるハードウェア資源の有効利用

– ハードウエア資源を仮想化し、実際より多く見せる

・例 仮想メモリ

– 機器の違いを抽象化して隠蔽し、統一インターフェイスを提供

・多くのデバイスをopen, read, write, closeで操作可能

• 管理対象のハードウェア

– メモリ

– ディスク

– プロセッサ

– ネットワークI/O機器 etc…

2018/4/9 第1回 オペレーティングシステム 40

Page 41: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

プログラム実行方式

• マルチプログラミング(マルチタスク)

– 複数のプロセスをメモリ上に配置

– プロセスがI/O要求等に基づき、実行するプロセスを変更

– CPUを効率的に利用可能

• バッチシステム

– プログラム実行の流れをファイルに格納しておき、一括で実行

– 現在もスパコンで使用

• タイムシェアリング

– CPUが複数のプロセスを短い間隔で実行

– ユーザは複数のプロセスをインタラクティブに操作可能

2018/4/9 41第1回 オペレーティングシステム

Page 42: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

ユーザインターフェイス

• Batch

– 一連のプログラム実行の流れをファイルに格納しておき、一括実行

• CLI (Command Line Interface)

– シェル

• GUI (Graphical User Interface)

2018/4/9 第1回 オペレーティングシステム 42

Page 43: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 43

OSから見たコンピュータシステム• I/OデバイスとCPUは同時に動作• 各デバイスコントローラはそのデバイスのみを制御

– そのためにバッファ領域を保持

• デバイスコントローラの状態を把握する方法– ポーリング

• CPUが逐一状態をチェック– 割り込み

• コントローラがCPUに対してI/O処理完了を通知

• データの転送– CPUがデバイスコントローラのバッファ領域から読み書き (PIO)

– デバイスコントローラが主記憶に読み書き (DMA)

CPU

Memory

Ready Flag

Data

I/Oデバイス

Memory

DiskController

Memory Controller

CPUPrinter

Controller

System Bus

Page 44: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 44

CPUとI/O

Page 45: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 45

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

キーボード ディスク EthernetUSBグラフィックス

デバイスドライバ群

ファイル管理

I/Oシステム管理

プロセス管理 ネットワーキング

プロテクション

システムコールインターフェイス

システムプロセス群シェル

ユーザアプリケーション

ハードウェアOSカーネル、あるいは、カーネル

主記憶管理

Page 46: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 46

システム構成要素• OSカーネル(あるいは単にカーネル)

– メモリに常駐

– CPU特権モードで実行

• プロセス管理、メモリ管理、ファイルシステム、ネットワーク管理、その他I/O管理

• システムプロセス

– システム機能を実現するプロセス

• シェル

– OS機能を実行するためのユーザーインターフェースを提供

• ウインドウシステム

• コマンド群

• カーネルはCPUの特権モードで動いている(後述)• システムプロセスはCPUのユーザモードで動いているが、特別な権限を持つ

キーボード ディスク EthernetUSBグラフィックス

デバイスドライバ群

ファイル管理

I/Oシステム管理

プロセス管理 ネットワーキング

プロテクション

システムコールインターフェイス

システムプロセス群シェル

ユーザアプリケーション

ハードウェアOSカーネル、あるいは、カーネル

主記憶管理

Page 47: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 47

プロセス管理

• プロセスとは?– プログラムの実行単位

– 次のような資源を使用• CPU時間

• メモリ

• ファイル

• I/Oデバイス

• OSによるプロセス管理の例– プロセス生成・削除

– プロセス停止・再開

– プロセス間同期

– プロセス間通信

– デッドロック処理

ユーザプログラムコード

ユーザデータ領域

プロセス状態格納領域

カーネルプログラムコード

カーネル作業領域

ユーザヒープ領域

ユーザスタック領域 ユ

ーザ空間

カーネル空間

Page 48: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 48

メインメモリ管理

• メインメモリ– 複数のプロセスを展開・実行

– 各プロセスの使用する領域の大きさは動的に変化

– プロセスの生成・消滅を考慮

• OSによるメインメモリ管理– メモリの使用領域管理と未使用領域管理

– 要求に応じたメモリの確保・開放

Page 49: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 49

ファイル管理

• 情報を格納する様々なデバイスの管理– フラッシュメモリ、磁気ディスク、光ディスク、磁気テープ

• ファイルとは– 記憶デバイスの差に関係なく情報を格納するもの

– ファイルにはプログラムそのものやデータを格納• Windows系では、ファイル識別子によりファイルの種類が決定

• Unix系では、ファイル属性として実行可能なプログラムかどうか決定

• OSによるファイル管理の例– ファイル生成・削除

– ディレクトリ(フォルダ)生成・削除

– ファイル、ディレクトリ操作

– ファイルをディスクに格納

– バックアップ機能

Directory

File

File

Directory

Partition 1

Partition 2

Page 50: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 50

I/Oシステム管理

• バッファ、キャッシュシステム

• 汎用デバイスドライバインターフェイス

• デバイス依存ドライバ

Page 51: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 51

2次記憶管理

• メインメモリ(主記憶)は揮発性で容量も小さい

– 現在の主記憶の容量: パソコン 512MB~32GB

– 現在の2次記憶の容量: パソコン 100GB~数TB

• 2次記憶(ディスク)へのバックアップ機能が必要

• OSによるディスク管理の例

– ディスク内の未使用領域管理

– 領域の配布

– I/Oスケジューリング

Page 52: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 52

ネットワーキング

• コンピュータ同士のデータ交換が可能

• インターオペラビリティが重要– Sun Sparc系ワークステーションとIntel系PCとの間での通信

– UnixとWindowsとの間での通信

• ネットワークプロトコル– 一般的には複数機器間で通信を行うために

• フォーマット

• 手順

を決めた規約

• OSはネットワークプロトコルに基づく通信機構を提供

Page 53: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 53

プロテクションシステム• プログラムが使用する資源のアクセス制御

• アクセス制御の例– デバイスのread/write

– 共有メモリ領域のread/write

– ファイルのread/write/delete

– ディレクトリのlookup/create/delete

– コマンド実行

• 権限を与える相手の例– ユーザ

– グループ

– プロセス

Page 54: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 54

コマンドインタープリタシステム(シェル)

• 文字ベースでのユーザインターフェイスを提供

• 例

– UNIX系OSではシェル

• sh, csh, zsh, bash

– IBM Mainframe系OSではJCL

• ユーザが入力した指示文を解釈実行する% cat >/tmp/foo

This is a test.

% cat /tmp/foo

This is a test.

Cntrol-D

Page 55: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 55

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

キーボード ディスク EthernetUSBグラフィックス

デバイスドライバ群

ファイル管理

I/Oシステム管理

プロセス管理 ネットワーキング

プロテクション

システムコールインターフェイス

システムプロセス群シェル

ユーザアプリケーション

ハードウェアOSカーネル、あるいは、カーネル

主記憶管理

Page 56: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 56

OS基本サービス

• OSが提供するサービスのうち基本となるもの– プログラム実行

• ディスク上のファイルを主記憶に持ってきて実行

– I/O操作• ユーザが直接I/Oをアクセスせずに、OSがI/Oを処理

– ファイルシステム操作• ファイルのread/write/create/delete

– 交信• プロセス間交信、コンピュータ間交信

– エラー検出• CPU・メモリエラー、I/Oデバイスのエラーを検出

• このためのハードウエア規格としてIPMIが存在

Page 57: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 57

OSサービス

• 組み込み系OSでは基本サービスだけで十分

• サーバや計算センタで使用されるOSではさらに以下のサービスも必要

– マルチユーザ・ジョブのための資源管理

– アカウンティング

– 資源保護

Page 58: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 58

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

キーボード ディスク EthernetUSBグラフィックス

デバイスドライバ群

ファイル管理

I/Oシステム管理

プロセス管理 ネットワーキング

プロテクション

システムコールインターフェイス

システムプロセス群シェル

ユーザアプリケーション

ハードウェアOSカーネル、あるいは、カーネル

主記憶管理

Page 59: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 59

CPU実行モード

• スーパバイザモード(別名:特権モード)

– 危険な操作は特権モードのみ可能

• 例1入出力デバイスの操作

• 例2 タイマ、MMU(Memory Management Unit)など共通システム資源の操作

• ユーザモード

– 特権モードでないモードは、ユーザモード

root権限で動いているプロセスがスーパバイザモードで実行されているわけではない

注意

Page 60: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 60

CPU実行モードと割り込み

• 割り込み– ある事象が発生したことにより、実行中の処理を中断し、発生した事象のための処理を実行する機構

– 割り込み処理を行わせるために、割り込み処理用プログラムが格納されているメモリアドレスにプログラムカウントを変更

• 割り込みの種類– 同期割り込み

• 例外処理

• システムコール

– 非同期割り込み• タイマー割り込み

– 複数のユーザプログラムの切り替えに使用

• I/Oデバイス割り込み

• ハードウエア障害

特権 ユーザ

Interrupt/fault

set user mode

Page 61: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 61

システムコール

• システムコール用の特殊命令

– Intel x86系の場合はint命令

割り込みベクタ

0x1000

eax ← systemcall番号

int 0x80

0x1000

0x80*8

switch (eaxの値) {case 0:

…case 1:

…case 2:

….….}iret

Page 62: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 62

システムコール(プリミティブ)

• システムコールはユーザプログラムとOSとのインターフェイス

– 割り込み命令によって実現される

– C,C++などのプログラミング言語向けインターフェイスを提供

– Unix系ではマニュアル2章がシステムコール、3章が言語ライブラリ

• 2章のopen/read/write/closeはシステムコール

• 3章のfopen/fread/fwrite/fcloseはシステムコールを使用し、ライブラリレベルでバッファを処理

Page 63: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 63

システムコールの種類

• プロセス制御

– fork, kill

• ファイル管理

– create, delete, open, read/write, close, link

• デバイス管理

– open, read/write, close, ioctl

• 情報管理

– time, date, getpid

• 交信

– message passing

– Shared memory

Page 64: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 64

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

キーボード ディスク EthernetUSBグラフィックス

デバイスドライバ群

ファイル管理

I/Oシステム管理

プロセス管理 ネットワーキング

プロテクション

システムコールインターフェイス

システムプロセス群シェル

ユーザアプリケーション

ハードウェアOSカーネル、あるいは、カーネル

主記憶管理

Page 65: オペレーティングシステム - PFLab...オペレーティングシステムの重要性 2018/4/9 第1回 オペレーティングシステム 10 Machine Learning/Deep Learning

2018/4/9 第1回 オペレーティングシステム 65

システムプログラム群(コマンド群)• プログラム開発、プログラム実行のための利便性のある環境を提供

• コマンド群– File manipulation

– Status information

– File modification

– Programming language support

– Program loading and execution

– Communications

– Application programs

• ユーザにとっては、どのようシステムプログラムが提供されているか=OSの特徴– システムコールはほぼ無関係