お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2017-09-23 07:19:15

ottan3104
メンバ
登録日: 2016-01-29

適切なスレッドでは、ないんですが・・・

私は若い頃、UNIXワークステーションで仕事をしていたのですが、先輩からファイル関係の関数を勉強しろと言われて、簡単なアプリを作っていました。
その時は、不思議で仕方がなかったんですが、今になって質問することにしました。
UNIX-Cには、fseekなどの関数がありますが、マルチユーザーマルチタスクの環境でヘッドの位置を固定するような関数がなぜ呼べるのか不思議で仕方がなかったです。
今時のプログラミングでは確かにこういう関数を呼び出すプログラムは珍しくなっているのかもしれませんが、結局これらベースの関数を呼び出している可能性が高いと
思います。
だれか、この件に詳しい方おられますでしょうか?

オフライン

 

#2 2017-09-23 07:51:37

ry
メンバ
登録日: 2008-07-30

Re: 適切なスレッドでは、ないんですが・・・

ottan3104 による投稿:

fseekなどの関数がありますが、マルチユーザーマルチタスクの環境でヘッドの位置を固定するような関数

fseek はファイル内で次に読み込む/書き込む位置を指示する関数です。
ほとんどのデバイスは、ランダムアクセスが可能なので、各ユーザー毎にその位置を保存し、読み込み/書き込みの実行時にファイル内のその位置に対して処理を行うようにしています。
このような仕組みでは、アクセスの都度 ヘッドをその位置に移動させる必要が生じますが、メモリの一部をキャッシュとして利用することで、ヘッドの移動を抑えるようになっています。

# そういえば、2-30年前はこういった動きの解説をよく見かけたけど、最近はまったくと見なくなったな。

オフライン

 

#3 2017-09-23 07:56:52

ottan3104
メンバ
登録日: 2016-01-29

Re: 適切なスレッドでは、ないんですが・・・

確かに、その説明で理屈としてはあってそうな気がしますが、マルチユーザーでマルチタスクの環境でデーモンも一杯起ち上がっている環境ではハードディスクが吹き飛びそうな気がします(笑)。
なぜ、動いているんでしょうね?不思議です。

オフライン

 

Board footer

Powered by FluxBB