SSブログ

ESP32でマルチタスクを行う為の、とりあえずここまで判った事 by freeRTOS 25タスク目 [ESP32]

現在実用ガイドを読みながら編集中、、、ある事ない事書いちょりまっす!
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf

ESP32はRTOSができるらしい、、、

排他制御について
〇 ミューテックス(とバイナリーセマフォ)、、、4

● デッドロック
デッドロックは排他制御をした時の他の落とし穴である。デッドロックは別名”Deadly Embrace”(死の抱擁)とも呼ばれる、、、らしい。日本なら「5人の哲学者」であろう。

デッドロックは資源を共有している2つ以上のタスクが、自分でトークンを持ちながら相手のトークンを待つ様な状況の時に発生する。
以下の様な状況を考えてみよう。タスクAとタスクBはそれぞれmutexXとmutexYを待っている。
1.タスクAはmutexXのTakeに成功する。

2.タスクAはタスクBによりプリエンプトされる。

3.タスクBはmutexXのTakeを試みる前に、mutexYのTakeに成功する。しかしmutexXはタスクAが持ったままであり、タスクBはmutexXのTakeは叶わない。この為タスクBはmutexXの待ち状態に入る。

4.タスクAの実行が続けられる。タスクAはmutexYのTakeを試みる、が、mutexYはタスクBが持ったままであり、タスクAはmutexYのTakeは叶わない。この為タスクAはmutexYの待ち状態に入る。

5.全員寝たままで誰も起こさない。


デッドロックを避ける最良の方法は、設計時に充分考慮する事である。また問題が起きないようにシステムをシンプルにすることである。実際には小規模な組込みシステムではデッドロックは大きな問題ではない。何故ならシステム設計者はアプリケーション全体をよりよく知り、デッドロックを起こす様な領域を認識し、避ける事ができるからである。

※大きな組込みシステムでは問題にならない!とは言っていない?

※言うまでも無いだろうけれど、セマフォなりミューテックスをTakeする際に待ち時間の上限時間を設定できるので、かならず上限設定を行って、戻って来た時に戻り値を確認すべき。そうすればデッドロックは避けられる。


ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/23
  • メディア: Kindle版



図解 μITRONによる組込みシステム入門(第2版)

図解 μITRONによる組込みシステム入門(第2版)

  • 作者: 武井 正彦
  • 出版社/メーカー: 森北出版
  • 発売日: 2018/02/17
  • メディア: 単行本(ソフトカバー)



μITRON4.0標準ガイドブック

μITRON4.0標準ガイドブック

  • 作者:
  • 出版社/メーカー: パーソナルメディア
  • 発売日: 2001/11/01
  • メディア: 単行本(ソフトカバー)



リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

  • 作者: 高田 広章
  • 出版社/メーカー: CQ出版
  • 発売日: 2004/02
  • メディア: 単行本



nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。