オペレーティングシステム - pflab...rtos rtos linux linuxドライバ通信...

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

Upload: others

Post on 05-Apr-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

加藤 真平

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

[email protected]

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

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

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

Page 2: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

慶應大学 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...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

加藤真平

2013 20152014

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

Page 4: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

Page 5: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

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

Page 6: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

メンバー構成

准教授:加藤 真平

特任講師:千代 浩之

博士1年:1人

修士2年:7人

修士1年:6人

留学生:1人

秘書:2人

Page 7: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

プラットフォーム研究

7

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

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

Page 8: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

ハイパフォーマンス系

Memory

CPUMemory

NIC NIC NIC NIC

Memory

Storage Cluster

ManyCores

ManyCores

Network

Flash Memory

CPU

GPU

NetCDF

GeoTIFF GRIBHDF5

Bitmap

File Formats

Page 9: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

リアルタイム系

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

イーサネット/CAN

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

RTOS RTOS LinuxLinuxドライバ通信

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

ROS

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

プロセッサ

OS

CUDAOpenCV PCLライブラリ

画像認識

位置推定

物体検出

行動計画

経路計画

走行制御

Page 10: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

MemoryL3 Cache

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

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

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

ソフトウェア的視点

Page 11: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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 12: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

バス型(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 13: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

OS&SoC研究NEDOプロジェクト1 (2017/7~2019/3)

NEDOプロジェクト2(2019/4~2023/3)

コア

カーネル

アプリサーバ

コア

カーネル

アプリ

モノリシックカーネル

マイクロカーネル

コア

カーネル

アプリサーバ

コア

カーネル

アプリ

モノリシックカーネル

マイクロカーネル

動作中に切り替え可能

マルチカーネル(メッセージ通信)

Mcube Kernel

・ ・ ・

コア

カーネル

アプリサーバ

コア

カーネル

アプリ

モノリシックカーネル

マイクロカーネル

(1)

(3)

(2)

Page 14: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

OS&SoC研究NEDOプロジェクト1 (2017/7~2019/3)

NEDOプロジェクト2(2019/4~2023/3)

テストチップ製造および

実証実験

4~5年度

FPGAプロトタイピング

~3年度

完全自動運転に向けた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

PC

Ie

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

32(1

6)G

bps

VRAM BUS

システムオンチップ(SoC)研究 オペレーティングシステム(OS)研究

Page 15: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

AIクラウド研究CRESTプロジェクト1 (2016/12~2019/3)CRESTプロジェクト2(2019/4~2022/3)

Page 16: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

研究体制

システム(コンピュータ科学)

オペレーティングシステム(OS)

クラウドコンピューティング

リアルタイムシステム

VLSI/FPGA/ASIC

データ(創造情報学)

3次元情報処理

ディープラーニング

ロボティクス

Page 17: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

修論・卒論

IPCを考慮したメニーコア向けCPU資源管理

単眼カメラと3次元地図を用いた環境認識システム

部分的やり直し操作のためのデータ構造

メモリ共有による高速なUnikernelプロセス間通信

ランタイムの共有によるユニカーネルのメモリ効率の向上

キャッシュを考慮したスプリットカーネル

二次元的プロセッサ配列を用いたスキャンマッチング用連立方程式ソルバ

スパースな畳み込みによるマルチクラス物体検出

雨中における単眼カメラを用いた視覚ベースの自己位置推定

Page 18: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

PFLab拠点

Page 19: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

ミーティング室

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

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

学生居室

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

共有スペース

Page 20: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

PFLabフォーラム2017

Page 21: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

PFLabフォーラム2018

Page 22: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

主要な研究テーマ

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

リアルタイムシステム

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

組込みシステム

センサネットワーク

ストレージシステム

Page 23: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 23

講義概要

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

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

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

Edition, Wiley

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

– 試験は持ち込み不可

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

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

Page 24: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

1. OSの概要(4/8)

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

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

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

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

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

7. メモリ管理2(6/3)

8. 休講予定(6/10)

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

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

11. ファイルシステム(7/1)

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

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

14. 試験(7/29)

2019/4/8 第1回 オペレーティングシステム 24

Page 25: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

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

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

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

2019/4/8 25第1回 オペレーティングシステム

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

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

・17,468本の真空管

・24 m x 0.9 m x 2.4 m

・30トン

・150 KW

Page 26: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 26

Page 27: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

OSの役目

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

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

・例 仮想メモリ

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

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

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

– メモリ

– ディスク

– プロセッサ

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

2019/4/8 第1回 オペレーティングシステム 27

Page 28: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

プログラム実行方式

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

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

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

– CPUを効率的に利用可能

• バッチシステム

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

– 現在もスパコンで使用

• タイムシェアリング

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

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

2019/4/8 28第1回 オペレーティングシステム

Page 29: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

ユーザインターフェイス

• Batch

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

• CLI (Command Line Interface)

– シェル

• GUI (Graphical User Interface)

2019/4/8 第1回 オペレーティングシステム 29

Page 30: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 30

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 31: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 31

CPUとI/O

Page 32: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 32

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

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

デバイスドライバ群

ファイル管理

I/Oシステム管理

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

プロテクション

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

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

ユーザアプリケーション

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

主記憶管理

Page 33: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 33

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

– メモリに常駐

– CPU特権モードで実行

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

• システムプロセス

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

• シェル

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

• ウインドウシステム

• コマンド群

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

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

デバイスドライバ群

ファイル管理

I/Oシステム管理

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

プロテクション

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

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

ユーザアプリケーション

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

主記憶管理

Page 34: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 34

プロセス管理

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

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

• メモリ

• ファイル

• I/Oデバイス

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

– プロセス停止・再開

– プロセス間同期

– プロセス間通信

– デッドロック処理

ユーザプログラムコード

ユーザデータ領域

プロセス状態格納領域

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

カーネル作業領域

ユーザヒープ領域

ユーザスタック領域 ユ

ーザ空間

カーネル空間

Page 35: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 35

メインメモリ管理

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

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

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

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

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

Page 36: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

2019/4/8 第1回 オペレーティングシステム 36

ファイル管理

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

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

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

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

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

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

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

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

– バックアップ機能

Directory

File

File

Directory

Partition 1

Partition 2

Page 37: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

I/Oシステム管理

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

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

• デバイス依存ドライバ

Page 38: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

2次記憶管理

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

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

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

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

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

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

– 領域の配布

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

Page 39: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

ネットワーキング

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

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

– UnixとWindowsとの間での通信

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

• フォーマット

• 手順

を決めた規約

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

Page 40: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

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

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

– ファイルのread/write/delete

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

– コマンド実行

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

– グループ

– プロセス

Page 41: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

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

• 例

– 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 42: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

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

デバイスドライバ群

ファイル管理

I/Oシステム管理

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

プロテクション

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

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

ユーザアプリケーション

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

主記憶管理

Page 43: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

OS基本サービス

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

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

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

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

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

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

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

Page 44: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

OSサービス

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

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

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

– アカウンティング

– 資源保護

Page 45: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

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

デバイスドライバ群

ファイル管理

I/Oシステム管理

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

プロテクション

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

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

ユーザアプリケーション

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

主記憶管理

Page 46: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

CPU実行モード

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

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

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

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

• ユーザモード

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

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

注意

Page 47: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

CPU実行モードと割り込み

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

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

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

• 例外処理

• システムコール

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

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

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

• ハードウエア障害

特権 ユーザ

Interrupt/fault

set user mode

Page 48: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

システムコール

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

– Intel x86系の場合はint命令

割り込みベクタ

0x1000

eax ← systemcall番号

int 0x80

0x1000

0x80*8

switch (eaxの値) {

case 0:…

case 1:…

case 2:….

….}iret

Page 49: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

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

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

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

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

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

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

Page 50: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

システムコールの種類

• プロセス制御

– fork, kill

• ファイル管理

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

• デバイス管理

– open, read/write, close, ioctl

• 情報管理

– time, date, getpid

• 交信

– message passing

– Shared memory

Page 51: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

OSの構造

• システム構成要素

• OSサービス

• システムコール

• システムプログラム群

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

デバイスドライバ群

ファイル管理

I/Oシステム管理

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

プロテクション

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

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

ユーザアプリケーション

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

主記憶管理

Page 52: オペレーティングシステム - PFLab...RTOS RTOS Linux Linuxドライバ通信 ソケット通信 ソケット通信 ROS 自動運転ソフトウェア(例) プロセッサ

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

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

• コマンド群– File manipulation

– Status information

– File modification

– Programming language support

– Program loading and execution

– Communications

– Application programs

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