排他制御

CP/M エミュレータはマルチタスクをサポートしていますが、CP/M は本来シングルタスクですので、排他制御は行われていません。したがって、CP/M エミュレータでも排他制御は行っていません。しかし、ファイルアクセスに関しては若干問題が生じます。基本的にはすべてのファイルは共有モードでオープンされます。前述のように排他制御は行わないため、同じファイルを同時にアクセスすると問題が発生する場合があります。(たとえ排他制御を行ったとしても、問題を完全に防ぐことはできません)

問題はまだあります。通常のファイルの場合はユーザがファイル名を指定するので、ユーザが注意することで問題を避けることができます。問題はユーザが直接指定しないファイル、つまり、ワークファイルが存在することです。この場合はユーザがいくら注意しても問題を避けることはできません。CP/M エミュレータではこの問題を次のように処理しています。まず、CP/M のファイル名の規約では、ワークファイルの拡張子は .$$$ であるとしています。そこで、拡張子が .$$$ のファイルをプロセス毎に管理することで最低限の防御を行います。具体的には、ファイル名の先頭に ‾1 のようにプロセス番号を付加します。

それでも問題は残ります、ネットワークドライブを使用した場合は、プロセス番号がユニークである保証がありません。これはすべてのドライブで問題になるのですが、当面、いちばん問題になるドライブ A: でのネットワークドライブの使用を禁止します。


戻る