SlideShare a Scribd company logo
1 of 33
Download to read offline
前回の情報の訂正
● 特権ポート番号 (Privileged ports) は 255 未満ではなく、1024 未満、でした
○ https://stackoverflow.com/questions/10182798/why-are-ports-below-1024-privileged
○ https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the
-root-user-only
● SDN の分類などに関する説明が間違っていました
○ 正しくは、オーバーレイ ネットワークと呼ばれる分野があり、 SDN はその中の一つです。 P2P 通信
や、それに用いる DHT なども、オーバーレイ ネットワーク分野に分類されるようです
前回の情報の補足
● TCP と UDP の性質の差について補足
○ TCP: Stream 通信 … データは流れとして扱われる。分けて送っても、ひとかたまりで届く
○ UDP: Datagram 通信 … データの境界が保存。 10 バイトを 10 回送ったら、そのまま届く
● Mac OS X Yosemite (10.10) では Visual Studio for Mac が使えない
○ 確認が甘かったです、すみません。 El Capitan (10.11) 以降しかサポートされていないようでした。
実機がないのでテストできていないですが、 Mono は 10.7 以降に対応しているようなので、そちら
でお試しください
http://www.mono-project.com/download/stable/
第7回
オペレーティング システム
1. OS の基本
2. 割り込みとシステム コール
3. メモリ管理
詳解 Linuxカーネル
Daniel P. Bovet, Marco Cesati (著)
ISBN: 9784873113135
画像は https://www.amazon.co.jp/dp/487311313X より引用
7-1OS の基本
オペレーティング システム (OS) の役割
● 異なるハードウェアを抽象化する
○ 現代のコンピュータには、多くのハードウェア資源や周辺装置 (NIC, GPU, etc…) が接続されてい
る。これらに共通する入出力方法を規定する必要がある
○ ハードウェア資源を実態よりも仮想的に多く見せ、各プログラムに資源の限界を気にする必要をな
くす
● 複数のプログラムを走れるようにする
○ 専用の計算だけを行う機械としてでなく、任意のプログラムを目的に応じて切り替えられるようにす
る
○ 複数のプログラムを同時に走らせられるようにする
OS が具体的に提供する機能
● マルチタスク機能の提供
○ プロセスのライフサイクルの管理
○ 異なるプロセスの時間多重切り替え
○ プロセス間通信
● メモリ資源の管理
○ カーネル空間とユーザ空間の切り分け
○ 仮想記憶領域 / メモリ保護
● ハードウェアとのやり取り
○ 割り込み処理
● ファイル システム
● ユーザ インタフェース (シェル) キーボード マウス NIC USB …
デバイス ドライバ
システム コール インタフェース
システム サービス, シェル等
ユーザ アプリケーション
メモリ管理
ネットワーク制御
ハードウェア管理
プロセス管理
…
特権モード (カーネル モード)
システムの重要な部分について、ユーザ
アプリケーションが、故意または誤って
メモリ上の状態を書き換えることを防ぐ
ため、特権モードで動作する
ユーザ モードのプログラムは、特権モード
のプログラムが利用するメモリ領域に
アクセスすることはできない
CPU は、特権モードとユーザ モードとの
区別を管理する キーボード マウス NIC USB …
デバイス ドライバ
システム コール インタフェース
システム サービス, シェル等
ユーザ アプリケーション
メモリ管理
ネットワーク制御
ハードウェア管理
プロセス管理
…
モノリシック / マイクロ カーネル
OS の中心的な役割をするソフトウェア群をカーネルと呼ぶ。カーネルの構成の仕方は
大きく以下のようにわけられる
● モノリシック カーネル (Monolithic Kernel)
OS の機能がひとつの巨大なプログラムとして構成され、カーネルのメモリ空間で動作するもの
(例: Linux)
● マイクロ カーネル (Micro Kernel)
メモリ管理やプロセス管理などの最低限をカーネルモードに残し、残りの部分はシステムサー
ビスとして動作させ、アプリケーションとプロセス間通信を行うもの
● ハイブリッド カーネル
上記の折衷 (例: Windows, macOS)
コンピュータが起動するまで
1. 電源が投入される。メモリはまだ空。CPU は ROM
(不揮発性メモリ) 上の BIOS を起動
2. 各機器のテスト (POST) を実施。ブート ローダー
が保存されているデバイスを検索
3. ハード ディスク上に MBR が見つかったら、その
コードを実行し、アクティブ パーティションの
ブート セクタ (IPL) にさらに制御を移す
参考: https://wiki.osdev.org/MBR_(x86)
4. 最終的に OS のコードがメモリに読み込まれ、特権モードで実行される
https://en.wikipedia.org/wiki/BIOS
より引用
マスタ ブート レコード
IBM PC/AT 互換機からの従来のアーキテクチャ
ではハード ディスクなどの補助記憶装置の先頭に
MBR と呼ばれる領域がある
アクティブなパーティションを検索し、そのブート
セクタをメモリに読みこんで、さらに二段階目の
ブートを行う
参考: https://technet.microsoft.com/library/cc976786.aspx
ブート ストラップ コー
ド領域
(446 バイト)
第1 パーティション
第2 パーティション
第3 パーティション
第4 パーティション
終端記号 (0x55AA)
0x000
0x1BE
0x1CE
0x1DE
0x1EE
0x1FE
0x200
パーティション テーブル
(記憶装置上の区切りに関する
情報が格納されている)
その他の現代的な起動方式
● Preboot Execution Environment (PXE)
ネットワーク経由で OS を読み込んで起動する方法。NIC がブート機能を担う。
DHCP で IP を割り当ててもらい、指定された TFTP サーバから OS のイメージを
ダウンロードして、制御を移転する
● Unified Extensible Firmware Interface (UEFI)
BIOS に代わる、現在最新のコンピュータの多くが用いるブート ローダー。記憶装
置の大容量化、周辺装置の高度化に伴い、起動前処理もカスタマイズできるように
する要請から生まれた
OS の役割: プロセス管理
プログラムを実行する単位として、OS はプロセスという単位で管理する。稼働できるプ
ロセスは、スケジューラによって短時間 (クオンタム) ごとに切り替えられながら、順番に
実行される
プロセス A プロセス B プロセス C
オペレーティング システム
OS の役割: メモリ管理
メモリは、コンピュータの開始時は空 (どの番地にも値が
書き込まれていない状態) であるが、OS の起動やプログ
ラムの起動とともに、メモリが順番に割り当てられていく
OS はメモリについて次のような処理を行う
● アプリケーションからのメモリ割り当て要求に応える
● 割り当てられていない領域へのアクセスを取り締まる
● メモリが不足した場合に、補助記憶装置にメモリの一部
を退避させる
アプリ 1 領域
空き
カーネル
領域
アプリ 2 領域
アプリ 3 領域
ストレージ
OS の役割: ファイル システム
アプリケーションは、情報を補助記憶装置にいれることで永続化させる。OS はこれらへ
のインタフェースを提供する
● ファイルの作成、読み書き、削除
● アクセス権限の管理
また、記憶装置の機器の種別に依存せずに
これらの操作を透過的に提供する
bin/
boot
bash
cat
chmod
⋮
⋮
OS の役割: ネットワーク
前回までに話した TCP / IP などの通信は、現代のコンピュータが当然必要な機能とし
て、OS の一部として実装されている。次のような操作が透過的に行える
● NIC の管理
● IP, TCP, UDP, DNS, DHCP などの基本的なプロトコルのサポート
● ソケット通信の提供
OS 界隈の歴史
1969 年に AT&T ベル研究所にてケン・トンプソン、デニス・リッチーらが開発したオペ
レーティング システム。のちに同氏らが C 言語を開発し、ほぼ全面的に C 言語で書き
直す。1980 年後半には、カリフォルニア大学バークレー校から Unix の派生となる
BSD がリリース
1983 年に、リチャード・ストールマンが GNU プロジェクトを創設。エディタや多くのソフト
ウェアがフリー ソフトウェア ライセンスにて開発される
1988 年に、IEEE が各種 OS が備えるべき共通仕様として POSIX を策定
1990 年に、リーナス・トーバルズが Unix と互換性をもちつつ、GPL のもと完全にフリー
な OS として Linux をリリース
7-2割り込みとシステム コール
割り込み (Interrupt)
計算機の動作上、実行中のプログラムを強制的に中断して、特定の処理を要求できる
機構を割り込みと呼ぶ。OS は割り込み時の処理を管理する
● ソフトウェア割り込み
○ システム コール呼び出し (スーパバイザ コール)
○ プログラム割り込み (トラップ, 例外): ゼロ除算, オーバーフロー, ページ フォールト, ブレークポイン
ト
● ハードウェア割り込み
○ 入出力割り込み: マウスやキーボードの入力、周辺機器の IO 完了
○ タイマ割り込み
○ マシン チェック割り込み: 機械異常などの信号
割り込みを利用するメリット
● 毎度チェックするのに代わり、必要な場合だけ呼び出してもらえる
○ 例外: 演算時の異常など
● 他のプログラム実行時にでも、緊急な対応ができる
○ マシン異常に関する場合
○ 死活監視に関する信号など
● 入出力のように長い待ち時間がある場合、終わるまでの間に他のタスクを処理でき
る
割り込み時の処理の流れ
割り込みハンドラ (aka 割り込みサービス ルーチン, ISR) とよばれる特定のコードに飛
び、緊急で必要な処理を実行して、元のコードにもどる
1. 割り込み要求 (IRQ) を受けて特権モードへ移行
2. 割り込みベクタ テーブルから ISR のアドレスを取得
3. 必要に応じて、実行中のレジスタ状態を保存
4. 割り込みへの対応処理
5. 場合によっては、後続処理を予定
6. レジスタ状態を復帰
7. ユーザ モードで元のコードへ戻る
0x1000
…
…
…
…
0x7D
0x7E
0x7F
0x80
0x81
int 0x80
...
x86 プログラム
switch (eax) {
case 0x00:
...
}
割り込みハンドラ
割り込みベクタ
割り込み中の割り込み
割り込み中であっても、他の割り込みが発生する可能性がある。優先度が高い割り込み
であれば、割り込み処理中にもさらに中断をして、他の処理を継続する
割り込みを禁止する場合には IMR (割り込みマスク レジスタ) を編集する。一方、非マ
スカブル割り込み (NMI) では、最重要な割り込みなので、割り込み禁止にすることがで
きない
参考: http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/ch10s05.html
割り込み
ハンドラ
A
割り込み
ハンドラ
B
システム コール
ユーザ プログラムは、ユーザ モードで実行される。以下のような操作を行うためには特
権レベルが必要。OS はシステム コールによってこれらの機能を提供
● プロセス管理 - fork / execve / wait / kill / _exit
● ファイル IO - open / pipe / close / write / read / dup / poll / select / link / unlink
● ソケット通信 - socket / connect / bind / listen / accept / send / recv
● デバイス管理 - ioctl
● 情報 - time / getpid
上記は一部の例。数百の API がある。Manpage Section 2 に載っている
システム コールの実行にも割り込みを利用する (たとえば x86 系アーキテクチャではeax レ
ジスタにシステム コール番号をセットし、0x80 番の割り込みを送る)
7-3メモリ管理
ページング方式
主記憶装置のアドレスを一定の大きさごとに区分し、ページと呼ばれる単位として管理
する方法。OS からプログラムごとに割り当てるメモリ領域の最小単位
Page 0x0000
Page 0x0001
Page 0x0002
0x00000000
0x00001000
0x00002000
0x00003000
カーネルが利用
Program A が利用
Program B が利用
メモリ上の配置
仮想記憶
メモリ資源の上限は主記憶装置の容量に支配される。多くのプログラムが動作できるよ
う補助記憶装置にメモリの一部を置き、メモリ空間を広げる
Page 0x0000
Page 0x0001
Page 0x0002
0x00000000
0x00001000
0x00002000
0x00003000
メモリ上の配置
ストレージ
Page 0x0100
Page 0x0101
Page 0x0102
ページ イン / ページ アウト
仮想記憶を用いる場合、必要なデータが常にメモリ上にあるとは限らない。ページを補
助記憶装置に移すことをページ アウトと呼び、主記憶装置に戻すことをページ インと呼
ぶ。頻繁に起こるとパフォーマンス低下する (スラッシング)
Page 0x0100
Empty
Page 0x0210
0x00000000
0x00001000
0x00002000
0x00003000
ストレージ
Page 0x0101
Page 0x0200
Page 0x0201
ページ フォールト
プログラムがアクセスしたいページが、必ずしもメモリ上にあるとも限らない。この場合、
アクセスすると CPU がページ フォールトの割り込みを起こし、強制的にページ インさせ
る
Page 0x0100
Empty
Page 0x0210
0x00000000
0x00001000
0x00002000
0x00003000
ストレージ
Page 0x0101
Page 0x0200
Page 0x0201
Page 0x0200 使いたい
プログラム
CPU
今ない! フォールト!
割り込み!
ページ インのタイミング
● デマンド ページング
プログラムがメモリの割り当て要求をだしても、実際に割り当てられたページが使わ
れるまでは主記憶装置に読み込まない
● プリ ページング
プログラムがあるページを読むという推測がされたら、実際に読み込み命令が発行
される前に、ページ インさせてしまう
ページ アウトのタイミング
どのページをページ アウトさせるかという判断は、計算機のメモリ アクセスに大きな影
響を与える。ページ置換アルゴリズムとも
● LRU (Least Recently Used)
最後に使われたのが一番古いページからページ アウトしていく方法
● LFU (Least Frequently Used)
単位時間あたりの参照回数が最も少ないページをページ アウトさせる方法
● FIFO (First-In First-Out)
最も古くページ インしたものをページ アウトさせる方法
仮想記憶方式を利用している場合のメモリ アドレスは、実際にメモリから読み出す前に
変換が必要となる
仮想記憶のアドレス方式
制御装置
メモリ管理装置
アドレス変換キャッ
シュ (TLB)
CPU
ページ
テーブル
メモリ
0x0000000000123000
仮想メモリ アドレス
0xABCD000123123000
実際のメモリ アドレス
ページ アクセス違反
プログラムが、自分に割り当てられていないページ (本来アクセスできないページ) を要
求すると、OS は不正なメモリ アクセスと判断し、安全のために例外を発生させる (例:
SIGSEGV - セグメンテーション違反 )
Page 0x0000
Page 0x0001
Page 0x0002
0x00000000
0x00001000
0x00002000
0x00003000
Program A が利用
Program B が利用
ページ違反!
POSIX でのメモリ割り当て方法
プログラミングでメモリ割り当てを行う場合には
● void *malloc(size_t size);
● void free(void *ptr);
を用いて行う
OS は割り当てられるかの可否を確認して、ページを割り当てて、仮想メモリのポインタ
を返すことになる
第7回 まとめ
1. OS の基本
● OS の役割: ハードウェアの抽象化, 任意の複数プログラムの実行
● 機能: マルチ タスク, メモリ管理, ハードウェア管理, ファイル システム, IO
● CPU レベル: 特権モード, ユーザ モード
● モノリシック, マイクロ カーネル
● ブート
2. 割り込みとシステム コール
● 割り込み: ソフトウェア割り込み, ハードウェア割り込み。割り込みベクタ
● システム コール: 特権モードでシステム操作をするためのAPI
3. メモリ管理
● ページング方式: 仮想記憶実現の手段。ページイン / アウト
● ページ アクセス違反, ページ フォールト

More Related Content

What's hot

CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告Kuniyasu Suzaki
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計ShuheiUda
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)NTT DATA Technology & Innovation
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめKenta IDA
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
軽量Kubernetes環境 K3Sのご紹介
軽量Kubernetes環境 K3Sのご紹介軽量Kubernetes環境 K3Sのご紹介
軽量Kubernetes環境 K3Sのご紹介Tetsurou Yano
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
『SHOWROOM』の大規模化に伴う技術課題のソリューション  ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~『SHOWROOM』の大規模化に伴う技術課題のソリューション  ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~DeNA
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)Kentaro Ebisawa
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces についてKazuhiro Nishiyama
 

What's hot (20)

CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめ
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
軽量Kubernetes環境 K3Sのご紹介
軽量Kubernetes環境 K3Sのご紹介軽量Kubernetes環境 K3Sのご紹介
軽量Kubernetes環境 K3Sのご紹介
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
『SHOWROOM』の大規模化に伴う技術課題のソリューション  ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~『SHOWROOM』の大規模化に伴う技術課題のソリューション  ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について
 

Similar to [Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理

Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishYohei Azekatsu
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座sisawa
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティKuniyasu Suzaki
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会Hirotaka Kawata
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...Insight Technology, Inc.
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fixstars Corporation
 
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu HaraD35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu HaraInsight Technology, Inc.
 
SCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだSCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだwind06106
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプTech Summit 2016
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してKazuhiko Kato
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Dai Utsui
 
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔Insight Technology, Inc.
 

Similar to [Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理 (20)

PFI Seminar 2010/01/21
PFI Seminar 2010/01/21PFI Seminar 2010/01/21
PFI Seminar 2010/01/21
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
 
計算機理論入門08
計算機理論入門08計算機理論入門08
計算機理論入門08
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
 
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu HaraD35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
 
SCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだSCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだ
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプ
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指して
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
 
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
[db tech showcase Tokyo 2015] B12:カラムストアデータベースの技術と活用法 by 日本電気株式会社 田村稔
 

More from Yuto Takei

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーションYuto Takei
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門Yuto Takei
 
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦Yuto Takei
 
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ開発チームにおける多様性のススメ
開発チームにおける多様性のススメYuto Takei
 
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?Yuto Takei
 
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来Yuto Takei
 
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用Yuto Takei
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加するYuto Takei
 
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討Yuto Takei
 
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーションYuto Takei
 
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理Yuto Takei
 
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介Yuto Takei
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub についてYuto Takei
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させるYuto Takei
 
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介Yuto Takei
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号Yuto Takei
 
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力Yuto Takei
 
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論Yuto Takei
 
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミングYuto Takei
 
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析Yuto Takei
 

More from Yuto Takei (20)

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
 
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
 
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
 
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
 
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
 
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
 
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
 
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
 
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
 
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
 
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
 

Recently uploaded

リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 

Recently uploaded (10)

リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 

[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理

  • 1. 前回の情報の訂正 ● 特権ポート番号 (Privileged ports) は 255 未満ではなく、1024 未満、でした ○ https://stackoverflow.com/questions/10182798/why-are-ports-below-1024-privileged ○ https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the -root-user-only ● SDN の分類などに関する説明が間違っていました ○ 正しくは、オーバーレイ ネットワークと呼ばれる分野があり、 SDN はその中の一つです。 P2P 通信 や、それに用いる DHT なども、オーバーレイ ネットワーク分野に分類されるようです
  • 2. 前回の情報の補足 ● TCP と UDP の性質の差について補足 ○ TCP: Stream 通信 … データは流れとして扱われる。分けて送っても、ひとかたまりで届く ○ UDP: Datagram 通信 … データの境界が保存。 10 バイトを 10 回送ったら、そのまま届く ● Mac OS X Yosemite (10.10) では Visual Studio for Mac が使えない ○ 確認が甘かったです、すみません。 El Capitan (10.11) 以降しかサポートされていないようでした。 実機がないのでテストできていないですが、 Mono は 10.7 以降に対応しているようなので、そちら でお試しください http://www.mono-project.com/download/stable/
  • 3. 第7回 オペレーティング システム 1. OS の基本 2. 割り込みとシステム コール 3. メモリ管理 詳解 Linuxカーネル Daniel P. Bovet, Marco Cesati (著) ISBN: 9784873113135 画像は https://www.amazon.co.jp/dp/487311313X より引用
  • 5. オペレーティング システム (OS) の役割 ● 異なるハードウェアを抽象化する ○ 現代のコンピュータには、多くのハードウェア資源や周辺装置 (NIC, GPU, etc…) が接続されてい る。これらに共通する入出力方法を規定する必要がある ○ ハードウェア資源を実態よりも仮想的に多く見せ、各プログラムに資源の限界を気にする必要をな くす ● 複数のプログラムを走れるようにする ○ 専用の計算だけを行う機械としてでなく、任意のプログラムを目的に応じて切り替えられるようにす る ○ 複数のプログラムを同時に走らせられるようにする
  • 6. OS が具体的に提供する機能 ● マルチタスク機能の提供 ○ プロセスのライフサイクルの管理 ○ 異なるプロセスの時間多重切り替え ○ プロセス間通信 ● メモリ資源の管理 ○ カーネル空間とユーザ空間の切り分け ○ 仮想記憶領域 / メモリ保護 ● ハードウェアとのやり取り ○ 割り込み処理 ● ファイル システム ● ユーザ インタフェース (シェル) キーボード マウス NIC USB … デバイス ドライバ システム コール インタフェース システム サービス, シェル等 ユーザ アプリケーション メモリ管理 ネットワーク制御 ハードウェア管理 プロセス管理 …
  • 7. 特権モード (カーネル モード) システムの重要な部分について、ユーザ アプリケーションが、故意または誤って メモリ上の状態を書き換えることを防ぐ ため、特権モードで動作する ユーザ モードのプログラムは、特権モード のプログラムが利用するメモリ領域に アクセスすることはできない CPU は、特権モードとユーザ モードとの 区別を管理する キーボード マウス NIC USB … デバイス ドライバ システム コール インタフェース システム サービス, シェル等 ユーザ アプリケーション メモリ管理 ネットワーク制御 ハードウェア管理 プロセス管理 …
  • 8. モノリシック / マイクロ カーネル OS の中心的な役割をするソフトウェア群をカーネルと呼ぶ。カーネルの構成の仕方は 大きく以下のようにわけられる ● モノリシック カーネル (Monolithic Kernel) OS の機能がひとつの巨大なプログラムとして構成され、カーネルのメモリ空間で動作するもの (例: Linux) ● マイクロ カーネル (Micro Kernel) メモリ管理やプロセス管理などの最低限をカーネルモードに残し、残りの部分はシステムサー ビスとして動作させ、アプリケーションとプロセス間通信を行うもの ● ハイブリッド カーネル 上記の折衷 (例: Windows, macOS)
  • 9. コンピュータが起動するまで 1. 電源が投入される。メモリはまだ空。CPU は ROM (不揮発性メモリ) 上の BIOS を起動 2. 各機器のテスト (POST) を実施。ブート ローダー が保存されているデバイスを検索 3. ハード ディスク上に MBR が見つかったら、その コードを実行し、アクティブ パーティションの ブート セクタ (IPL) にさらに制御を移す 参考: https://wiki.osdev.org/MBR_(x86) 4. 最終的に OS のコードがメモリに読み込まれ、特権モードで実行される https://en.wikipedia.org/wiki/BIOS より引用
  • 10. マスタ ブート レコード IBM PC/AT 互換機からの従来のアーキテクチャ ではハード ディスクなどの補助記憶装置の先頭に MBR と呼ばれる領域がある アクティブなパーティションを検索し、そのブート セクタをメモリに読みこんで、さらに二段階目の ブートを行う 参考: https://technet.microsoft.com/library/cc976786.aspx ブート ストラップ コー ド領域 (446 バイト) 第1 パーティション 第2 パーティション 第3 パーティション 第4 パーティション 終端記号 (0x55AA) 0x000 0x1BE 0x1CE 0x1DE 0x1EE 0x1FE 0x200 パーティション テーブル (記憶装置上の区切りに関する 情報が格納されている)
  • 11. その他の現代的な起動方式 ● Preboot Execution Environment (PXE) ネットワーク経由で OS を読み込んで起動する方法。NIC がブート機能を担う。 DHCP で IP を割り当ててもらい、指定された TFTP サーバから OS のイメージを ダウンロードして、制御を移転する ● Unified Extensible Firmware Interface (UEFI) BIOS に代わる、現在最新のコンピュータの多くが用いるブート ローダー。記憶装 置の大容量化、周辺装置の高度化に伴い、起動前処理もカスタマイズできるように する要請から生まれた
  • 12. OS の役割: プロセス管理 プログラムを実行する単位として、OS はプロセスという単位で管理する。稼働できるプ ロセスは、スケジューラによって短時間 (クオンタム) ごとに切り替えられながら、順番に 実行される プロセス A プロセス B プロセス C オペレーティング システム
  • 13. OS の役割: メモリ管理 メモリは、コンピュータの開始時は空 (どの番地にも値が 書き込まれていない状態) であるが、OS の起動やプログ ラムの起動とともに、メモリが順番に割り当てられていく OS はメモリについて次のような処理を行う ● アプリケーションからのメモリ割り当て要求に応える ● 割り当てられていない領域へのアクセスを取り締まる ● メモリが不足した場合に、補助記憶装置にメモリの一部 を退避させる アプリ 1 領域 空き カーネル 領域 アプリ 2 領域 アプリ 3 領域 ストレージ
  • 14. OS の役割: ファイル システム アプリケーションは、情報を補助記憶装置にいれることで永続化させる。OS はこれらへ のインタフェースを提供する ● ファイルの作成、読み書き、削除 ● アクセス権限の管理 また、記憶装置の機器の種別に依存せずに これらの操作を透過的に提供する bin/ boot bash cat chmod ⋮ ⋮
  • 15. OS の役割: ネットワーク 前回までに話した TCP / IP などの通信は、現代のコンピュータが当然必要な機能とし て、OS の一部として実装されている。次のような操作が透過的に行える ● NIC の管理 ● IP, TCP, UDP, DNS, DHCP などの基本的なプロトコルのサポート ● ソケット通信の提供
  • 16. OS 界隈の歴史 1969 年に AT&T ベル研究所にてケン・トンプソン、デニス・リッチーらが開発したオペ レーティング システム。のちに同氏らが C 言語を開発し、ほぼ全面的に C 言語で書き 直す。1980 年後半には、カリフォルニア大学バークレー校から Unix の派生となる BSD がリリース 1983 年に、リチャード・ストールマンが GNU プロジェクトを創設。エディタや多くのソフト ウェアがフリー ソフトウェア ライセンスにて開発される 1988 年に、IEEE が各種 OS が備えるべき共通仕様として POSIX を策定 1990 年に、リーナス・トーバルズが Unix と互換性をもちつつ、GPL のもと完全にフリー な OS として Linux をリリース
  • 18. 割り込み (Interrupt) 計算機の動作上、実行中のプログラムを強制的に中断して、特定の処理を要求できる 機構を割り込みと呼ぶ。OS は割り込み時の処理を管理する ● ソフトウェア割り込み ○ システム コール呼び出し (スーパバイザ コール) ○ プログラム割り込み (トラップ, 例外): ゼロ除算, オーバーフロー, ページ フォールト, ブレークポイン ト ● ハードウェア割り込み ○ 入出力割り込み: マウスやキーボードの入力、周辺機器の IO 完了 ○ タイマ割り込み ○ マシン チェック割り込み: 機械異常などの信号
  • 19. 割り込みを利用するメリット ● 毎度チェックするのに代わり、必要な場合だけ呼び出してもらえる ○ 例外: 演算時の異常など ● 他のプログラム実行時にでも、緊急な対応ができる ○ マシン異常に関する場合 ○ 死活監視に関する信号など ● 入出力のように長い待ち時間がある場合、終わるまでの間に他のタスクを処理でき る
  • 20. 割り込み時の処理の流れ 割り込みハンドラ (aka 割り込みサービス ルーチン, ISR) とよばれる特定のコードに飛 び、緊急で必要な処理を実行して、元のコードにもどる 1. 割り込み要求 (IRQ) を受けて特権モードへ移行 2. 割り込みベクタ テーブルから ISR のアドレスを取得 3. 必要に応じて、実行中のレジスタ状態を保存 4. 割り込みへの対応処理 5. 場合によっては、後続処理を予定 6. レジスタ状態を復帰 7. ユーザ モードで元のコードへ戻る 0x1000 … … … … 0x7D 0x7E 0x7F 0x80 0x81 int 0x80 ... x86 プログラム switch (eax) { case 0x00: ... } 割り込みハンドラ 割り込みベクタ
  • 21. 割り込み中の割り込み 割り込み中であっても、他の割り込みが発生する可能性がある。優先度が高い割り込み であれば、割り込み処理中にもさらに中断をして、他の処理を継続する 割り込みを禁止する場合には IMR (割り込みマスク レジスタ) を編集する。一方、非マ スカブル割り込み (NMI) では、最重要な割り込みなので、割り込み禁止にすることがで きない 参考: http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/ch10s05.html 割り込み ハンドラ A 割り込み ハンドラ B
  • 22. システム コール ユーザ プログラムは、ユーザ モードで実行される。以下のような操作を行うためには特 権レベルが必要。OS はシステム コールによってこれらの機能を提供 ● プロセス管理 - fork / execve / wait / kill / _exit ● ファイル IO - open / pipe / close / write / read / dup / poll / select / link / unlink ● ソケット通信 - socket / connect / bind / listen / accept / send / recv ● デバイス管理 - ioctl ● 情報 - time / getpid 上記は一部の例。数百の API がある。Manpage Section 2 に載っている システム コールの実行にも割り込みを利用する (たとえば x86 系アーキテクチャではeax レ ジスタにシステム コール番号をセットし、0x80 番の割り込みを送る)
  • 26. ページ イン / ページ アウト 仮想記憶を用いる場合、必要なデータが常にメモリ上にあるとは限らない。ページを補 助記憶装置に移すことをページ アウトと呼び、主記憶装置に戻すことをページ インと呼 ぶ。頻繁に起こるとパフォーマンス低下する (スラッシング) Page 0x0100 Empty Page 0x0210 0x00000000 0x00001000 0x00002000 0x00003000 ストレージ Page 0x0101 Page 0x0200 Page 0x0201
  • 27. ページ フォールト プログラムがアクセスしたいページが、必ずしもメモリ上にあるとも限らない。この場合、 アクセスすると CPU がページ フォールトの割り込みを起こし、強制的にページ インさせ る Page 0x0100 Empty Page 0x0210 0x00000000 0x00001000 0x00002000 0x00003000 ストレージ Page 0x0101 Page 0x0200 Page 0x0201 Page 0x0200 使いたい プログラム CPU 今ない! フォールト! 割り込み!
  • 28. ページ インのタイミング ● デマンド ページング プログラムがメモリの割り当て要求をだしても、実際に割り当てられたページが使わ れるまでは主記憶装置に読み込まない ● プリ ページング プログラムがあるページを読むという推測がされたら、実際に読み込み命令が発行 される前に、ページ インさせてしまう
  • 29. ページ アウトのタイミング どのページをページ アウトさせるかという判断は、計算機のメモリ アクセスに大きな影 響を与える。ページ置換アルゴリズムとも ● LRU (Least Recently Used) 最後に使われたのが一番古いページからページ アウトしていく方法 ● LFU (Least Frequently Used) 単位時間あたりの参照回数が最も少ないページをページ アウトさせる方法 ● FIFO (First-In First-Out) 最も古くページ インしたものをページ アウトさせる方法
  • 31. ページ アクセス違反 プログラムが、自分に割り当てられていないページ (本来アクセスできないページ) を要 求すると、OS は不正なメモリ アクセスと判断し、安全のために例外を発生させる (例: SIGSEGV - セグメンテーション違反 ) Page 0x0000 Page 0x0001 Page 0x0002 0x00000000 0x00001000 0x00002000 0x00003000 Program A が利用 Program B が利用 ページ違反!
  • 32. POSIX でのメモリ割り当て方法 プログラミングでメモリ割り当てを行う場合には ● void *malloc(size_t size); ● void free(void *ptr); を用いて行う OS は割り当てられるかの可否を確認して、ページを割り当てて、仮想メモリのポインタ を返すことになる
  • 33. 第7回 まとめ 1. OS の基本 ● OS の役割: ハードウェアの抽象化, 任意の複数プログラムの実行 ● 機能: マルチ タスク, メモリ管理, ハードウェア管理, ファイル システム, IO ● CPU レベル: 特権モード, ユーザ モード ● モノリシック, マイクロ カーネル ● ブート 2. 割り込みとシステム コール ● 割り込み: ソフトウェア割り込み, ハードウェア割り込み。割り込みベクタ ● システム コール: 特権モードでシステム操作をするためのAPI 3. メモリ管理 ● ページング方式: 仮想記憶実現の手段。ページイン / アウト ● ページ アクセス違反, ページ フォールト