全2件 (2件中 1-2件目)
1
皆様 こんにちは今回も組み込みシステムのメモを書いておきます。1、同期制御 マルチプログラミングを行う場合あるタスクが 完了するのを待ってから 次のタスクの実行を開始する事。 タスクが完了するのを待たずに開始することを 「非同期」とも言います。 タスク完了の目印を「イベントフラグ」と言い、 これがONになればタスクが スタートするようになります。 ちなみにここでいう「同期」には「コピー」や「足並みを揃える」のような 意味ではありません。ご注意下さい。 2、排他制御 並行して動作する複数のタスクが、 共有のデータ変更を行う場合、 データの読み書きを一時的に制限することです。 例えとしては銀行のATMを考えるとよいでしょう、 仮にAさんがATMで現金を引き落とそうと している途中に、別のBさんからの振込を受付してしまうと Aさんの口座残高の正確な1 金額が分からなくなってしまいます。 そこで、Aさんが引き落とすまでは、Bさんからの振込は受付けないようにします。 Aさんの処理が終わるまでは Bさんという 「他人を排除」=「排他」するのです。 排他制御の代表例には「セマフォ」があります。 セマフォ変数を使用して「1」「0」のいずれかで表し 「1」→実行 「0」→待つ という使い方をします。 なお、排他制御を行う際には お互いが待ち状態となり、処理が進まない 「デッドロック」に注意が必要です。今回はここまでと致します。お疲れ様でした図解でなっとく!トラブル知らずのシステム設計 エラー制御・排他制御編 [ 野村総合研究所 ]価格:2750円(税込、送料無料) (2019/10/10時点)
2019年10月11日
コメント(0)
皆様 こんにちは今回は組み込みシステムの分野のメモです。家電などに組み込まれているシステムのことを言います。過去に試験では携帯端末、タクシーのメーター、オーディオ、などが取り上げられています。他の分野に比べて、日常的に身近な例が多くイメージはしやすいかもしれません。また、組込みシステムの知識とともに、正確に「流れ図」を読み解くことも重要です。1、組込みシステムはリアルタイムで動く例えばタクシーのメータであれば、走る距離に応じて、料金が段階的に加算されていきます。つまり、走った距離がリアルタイムで変化していくので、その変化に対応して料金を表示しいかなければなりません。これを「リアルタイムシステム」といいます。なお、外部からの指示(この場合走った距離)を「イベント」といいます。この、イベントが複数同時に起きた場合、優先度をつけて、優先度の高いタスクから実行するのが「リアルタイムOS」です。2、割込みの手順割込みとは ①割込みの受信 ②実行中のものを「一時的に中断」 ③割込み処理を実行する ④完了後、元の作業に戻る。もう少し細かくみていくと①割込みの信号をMPU(=CPU)が受信する プログラム「割込みハンドラ」を実行する。 ②①と同時に実行中のものを中断する。 MPUの現在のPSW内容を メモリの固定領域に退避させる。 ③「割込みハンドラ」処理が完了④元の作業に戻る ②で退避させていたPSWをMPUに復元され、中断されていたプログラムが再開される。となります。3、割込みの種類さて、割込みが発生すると、現在の処理を中断して、割込み処理を行うことはわかりましたが、どのようなときに割込みが発生するのでしょうか。大きく分けて2種類の割込みがあります。①内部割込み=プログラムが原因②外部割込み=プログラム以外が原因①の内部割込みには主な種類として 下記のようになっています。(1)プログラム割込み (0による除算、オーバーフロー、桁の繰り上げ) (2)ページフォルトによる割込み(メモリに存在しないページにアクセス)(3)SVC(スーパーバイザーコール)割込み (=システムコール) (プログラムからOSに対して入出力処理を要求) ②の外部割込みについて(1)機械チェック割込み(ハードウェアの誤作動や電源異常)(2)タイマ割込み(組込みタイマによるCPU使用可能時間の終了)(3)入出力割込み(内部③のSVC割込みに対する入出力動作の終了)4、タスクの状態遷移 タスクは ①実行可能状態 ②実行状態 ③待ち状態 の3つの状態で遷移(移動)していきます。 ①まずはタスクの生成が行われると →「実行可能状態」となります。 生成段階ではCPUは当然ながら、 まだ割り当てられていないからです。 ②「実行可能状態」から CPUが割り当てられると「実行状態」となります。 これを「ディスパッチング」といいます。 ③「実行状態」の途中で「割込み・プリエンプション」が発生すると「実行可能状態」となります。④「実行状態」から入出力要求がなされて、CPUが放棄されると「待ち状態」となります。 (SVC割込み→入出力終了)→入出力割込み→「実行可能状態」という順番を取り、 「待ち状態」となったものは、いきなり「実行」に行くことはありません。必ず「待ち」→「実行可能」→「実行」となります ①実行可能状態 → ②実行状態 ← ↑ ↓ ③待ち状態 この状態遷移をCPU側からも考えてみます。①実行可能状態 CPUの順番のみ待っている(CPU以外の準備は完了) ②実行状態 = CPUが占領されている③待ち状態 = CPU以外の準備も終わっていない・・・ CPU側から考えると例えば入出力が完了して割込みが発生してもそれは③のCPU以外の準備が終わったにすぎないということのです。この後CPUの順番待ちが発生します。なので、「待ち」から一気に「実行」までいくことはないのです。 5、マルチプログラミング(マルチスレッドプログラミング)そもそも1個のCPUではタスク状態遷移で書いた通り1つのプログラムしか動かすことはできません。しかし、それぞれのプログラムへのディスパッチを繰り返しながら、あたかも複数のプログラムが同時に動いているように見える仕組みを「マルチプログラミング」といいます。また、タスクの実行順についてタスクに優先度をつけて、優先度順に実行させることを「イベントドリブン方式」といいます。 今回はここまでと致します。お疲れ様でしたこれだけ! 組み込みシステム【電子書籍】[ 藤広哲也 ]価格:1584円 (2019/10/9時点)
2019年10月10日
コメント(0)
全2件 (2件中 1-2件目)
1