今回は、タスクの排他処理と同期制御をまとめました。タスクとは、コンピュータで処理される作業の最小単位になります。タスクが複数同時実行される場合、互いの干渉を避けるために排他制御が必要になります。協調動作のための同期制御も必要になります。タスクは、その生成時に記憶領域を割り当てられて動作します。この記憶領域は、タスク内で用いられる変数や関数呼び出しに必要な情報などを格納する「スタック領域」とメモリを確保する命令を用いることでその都度必要に応じて動的に確保する「ヒープ領域」とがあります。排他制御とは、例えば複数のタスクが共通の領域で処理を行う場合、先に参照するタスクがその領域にロックをかけて占有する状態を言います。処理が完了した後にそのタスクはロックを解除します。一連の処理の中で、2つ以上のタスクが同時にリソースを奪い合うことで処理に不都合が生じる箇所を、クリティカルセクションと言います。このクリティカルセクションに入る前後で、問題が生じないように行う処理が排他制御になります。排他制御には、セマフォという概念があります。セマフォ変数にリソースの共有状態を記録し、空いていない場合は待ち行列に並びます。セマフォ変数の入力には、以下の専用の命令を使用します。P操作リソースをロックする手続きを行います。セマフォ変数S(初期値は「1」になります)の値が「1」以上のとき、Sを1減算してタスクの実行を継続します。セマフォ変数Sの値が「0」のとき、実行を中断して待ち行列に並びます。資源のロックを解除します。セマフォ変数Sの中身を「1」加算します。待ち行列の先頭タスクを実行可能状態に遷移させます。以下に、タスクAとタスクBを走らせた場合の例を表にしました。【V操作】を行うS=1になる(ロック解除)今回の一言・・・プログラムやソフトウェアが同時に処理を行なっているように見えても、裏では複数のタスクがロックを掛けたり解除したり、待ち行列に並んだりで処理を行なっています。排他制御もプログラムを効率よく動かす上で必要な考えなので、理解を深めておきたいと思います。ここまで読んでくれてありがとう。今回は、業務をモデル化する手法に関してまとめました。システムに対する要求を明確にするために、対象となる業務をモデル化して分析することが必要になります。そのために、業務の流れを把握することが大事になります。前回、言語プロセッサをまとめた際に翻訳の1つとしてコンパイラ方式がありましたが、今回はそのコンパイラ方式の実行の手順をみていきます。今回は、モジュールの分割についてまとめました。プログラム作成歴も長いですが、改めて調べてみるとモジュール分割をあまり理解していなかったので、基本を整理してみました。モジュールとは、「部品」を意味します。ここ数年話題になっているIT用語として、AI・IoTとさらにRPAと言うのがあります。RPAとは、簡単に言うと自動化です。実はmacOSにも「Automator」と言うRPAのアプリがあります。今回は、データ誤り制御に関してまとめました。データはネットワーク上で「0」か「1」を電気信号で送るわけですが、電気信号の波形の乱れでデータ誤りが発生することがあります。以前、データを探索するアルゴリズムをみてみました。今回は、データを整列させるアルゴリズムをみてみます。整列とは、主にデータの昇順や降順の並べ替えを指します。3...スポンサーリンクコメントコメントを書き込むコメントをどうぞメールアドレスが公開されることはありません。名前メールサイトΔホームIT入門プロフィールK.K10年ほどITの仕事をしています。Javaでの開発が長いです。体動かすのも好きです。this.handlersList)if(!0===this.handlersList[r].over)try{this.handlersList[r].blurCallback(e)}catch(e){}}},e(document).ready(function(){e.iframeTracker.init()})}(e)})タイトルとURLをコピーしました。