6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.

Slides:



Advertisements
Similar presentations
μT-Kernel講習会 初級編 第1編:組込みリアルタイムOS入門
Advertisements

Samba日本語版の設定と運用のノウハウ 応用編
Curlの特徴.
多入力パルス波高分析システムの開発 環境計測 小栗 康平  京都府立大学 環境情報学科 環境計測 卒論発表会.
【講座3】 MP T-Kernel入門 (株)日立超LSIシステムズ 豊山 祐一
ARTLinuxの特徴 ARTLinux: ハードリアルタイム処理機能を拡張したLinuxカーネル 固定優先度に基づくスケジューリング機能
T-Kernel入門 TRON Forum トロンフォーラム (C) 2010 YRP UNL, All Rights Reserved.
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
USB2.0対応PICマイコンによる データ取得システムの開発
オペレーティングシステム (プロセス管理)
オペレーティングシステムJ/K 2004年10月7日
.NET Frameworkにおける マネージヒープと ガベージコレクション
顧客/コンタクト管理 SAP Best Practices.
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
「まめだくん Ver.1.0」 特徴と利用方法.
オペレーティングシステム (OSの機能と構造)
組込みシステムとは コンピュータ制御システム?
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
講 義 ガ イ ダ ン ス オペレーティングシステム 第1回.
App. A アセンブラ、リンカ、 SPIMシミュレータ
オペレーティングシステム 第6回 プロセス間通信
Linux リアルタイム・プリエンプションとULDDへの影響 - 進捗報告 -
Ibaraki Univ. Dept of Electrical & Electronic Eng.
複数CPU間のための共有メモリ 小島 隆史(中央大学大学院理工学研究科 國井研究室)
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
CONCURRENT PROGRAMMING
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
オペレーティングシステムとは オペレーティングシステム 第3回.
Flyingware : バイトコード変換による 安全なエージェントの実行
オペレーティングシステム 第3回( ) デッドロックと排他制御.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
オペレーティングシステムJ/K (実時間処理システム)
P2P方式によるオンラインゲームの研究、開発
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理)
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
マルチスレッド処理 マルチプロセス処理について
LEGO MINDSTORMの車両の PCによる遠隔操縦
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
ソフトウェア情報学総論 基盤ソフトウェア学講座
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
リモートホストの異常を検知するための GPUとの直接通信機構
オペレーティングシステム イントロダクション
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ゲーム開発モデルの基礎.
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
≅ ≰ ≳ ≗ ≲ ≩ ≴ ≥ ver manual Tanaka.
組込みシステムとは コンピュータ制御システム?
オペレーティングシステム (OSの機能と構造)
オペレーティングシステム (プロセススケジューリング)
オペレーティングシステムJ/K 2004年10月4日
情報処理概論Ⅰ 2007 第6回 2019/5/16 情報処理概論Ⅰ 第6回.
ユビキタスコンピューティング環境 を構築するための 小型無線ネットワークコンピュータの開発
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
ネットワーク・プログラミング デバイスドライバと環境変数.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (プロセススケジューリング)
SMP/マルチコアに対応した 型付きアセンブリ言語
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
オペレーティングシステム (OSの機能と構造)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
デッドロック問題 lock-r2 lock-r1 (blocked)   lock-r2 (blocked) lock-r1  
オペレーティングシステム (プロセス管理)
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
Presentation transcript:

6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称

バイナリセマフォ ブロックタスク ありの場合の release 使用可能 使用不可 作成(1) acquire 作成(0) release

排他制御 AccessTask() { … acquire(); 共有資源に排他的にアクセス release(); }

ウェイト&シグナル同期 Signaling Task release acquire Waiting Task1 バイナリセマフォ Signaling Task release acquire Waiting Task1 初期値:使用不可(acquire は ブロック)

ウェイト&シグナル同期 WaitingTask() { … acquire(); } SignalingTask() { … release(); }

バイナリセマフォ ブロックタスク ありの場合の release 使用可能 使用不可 作成(1) acquire 作成(0) release オプション機能  flush: すべてのブロックタスクをブロック解除

マルチタスク-ウェイト&シグナル同期 Waiting Task1 acquire Signaling Task flush Waiting バイナリセマフォ Signaling Task flush Waiting Task2 acquire Waiting Task3 初期値:使用不可

mutex(mutual exclusion)セマフォ ブロックタスク ありの場合の unlock unlocked locked lock 作成 unlock (オーナーのみ) オプション機能  再帰lock-unlock: lockカウンタ  優先度継承プロトコル、シーリング優先度プロトコル

カウンティングセマフォ acquire (カウント--) acquire 作成(𝑛) カウント=𝑛 作成(0) カウント=0 使用可能 使用不可 release release (カウント++)

6.6 その他のタスク間通信オブジェクト

イベントレジスタ(フラグ) set(ビットパターン) clear(ビットパターン) 1 1 1 receive-and(ビットパターン) 1 1 1 receive-and(ビットパターン) receive-or(ビットパターン)

ウェイト&シグナル同期 WaitingTask() { … receive(パターン); } SignalingTask() { … set(パターン); }

メッセージキュー(メールボックス) メッセージキュー send(m) receive() 送信待ち タスク 受信待ち タスク

非インターロック型メッセージ通信 SourceTask() { … send(); } SinkTask() { … recieve();

インターロック型メッセージ通信 SourceTask() { … send(); acquire(); } SinkTask() { … recieve(); release(); }

アプリケーション初期化タスク ApplicationInitializing() { Create kernel objects; Create&Start ApplicationTasks; Delete itself; }

6.7 メモリ管理

内部断片化と外部断片化 割り当て失敗 ブロックサイズ=32 A= malloc(120) free(D) B= malloc(20) E=malloc(40) 割り当て失敗 C= malloc(50) D= malloc(32) free(B)

コンパクション(外部断片化の解消) E= malloc(40) ⇒ コンパクション起動(移動ブロックへのアクセス不可)  ⇒ コンパクション起動(移動ブロックへのアクセス不可) メモリブロックの割当て

メモリプール方式 32 50 128

6.8 組み込みシステムの開発環境

通常のソフトウェアの開発環境 コンパイラ エディタ デバッガ 標準ライブラリ 汎用オペレーティングシステム 開発環境 汎用CPU 開発ソフトウェア 標準ライブラリ 汎用オペレーティングシステム 実行環境 サーバーCPU

組込みソフトウェアの開発環境 コンパイラ エディタ デバッガ 標準ライブラリ 汎用オペレーティングシステム 開発環境 汎用CPU 開発ソフトウェア(ROM) 特化されたライブラリ リアルタイム組込みOS 実行環境 専用CPU(開発中?)

テストとデバグ テスト開始 テスト実行 Yes OK? No No 原因究明 十分? デ バ Yes 対策実施 グ テスト終了 テストへの反映 十分? No デ バ グ Yes テスト終了

ターゲットデバグエージェント クロスプラットフォーム開発環境 e.g. 開発ホスト: Linux ターゲットシステム: Andoroid ホストシステム上でのソースレベルデバッグに必要な情報を提供するターゲットデバグエージェント ・メモリ、レジスタのR/W ・ブレークポイントの設定・削除 ・シングルステップ実行 ・ホストデバッガとの通信

ターゲットデバグエージェント ターゲットプログラム ホストデバッガ ・実行制御のための書換え ・デバッガインタフェース デバグエージェント ・参照、変更 ・ホストとの通信 ホストデバッガ ・デバッガインタフェース ・高級言語インタフェース ・ユーザインタフェース