19/01/24 04:53:04.36 Ew3xyhWw0.net
出来上がったビット列は、そのままメモリの一部としてCPUがダイレクトにアクセスします。
ところが入力センサがメモリのどの番地に入るのか(どの番地が空いているのか)が解りません。
そもそも今時のOSでは「メモリの番地」そのものが仮想化されているので、訳がわかりません。
そこで「とりあえず0番地にしといて、あとでソフトが番地書き換えるようにしたらいんじゃね?」
という発想になり、メモリサイズや入力方法(0~1023、0~1000、0~2000、0~4095:12ビットなど)の
違いを吸収して、0℃~100℃に変換するソフトを作ることになりました。これを「デバイスドライバ」と呼びます。
更に、CPUのバスラインに直接センサを繋ぐのはナンセンスじゃね?ということになり、
HP-IB(=GP-IB)やUSB、Bluetoothなどの、センサ類を統一したシンプルな通信で繋ぐ方法が考案されました。
センサ値(ビット列)→シリアル変換(USBもBluetoothもシリアルATAも、同じシリアル信号です)
最後に受け取った通信信号を「CPUのバスラインに直で繋がっているメモリー値」と同じように扱える
ソフトウェアを噛ませて、ソフトで読み取れるようにしました。これを「仮想デバイスメモリ」と呼びます。
Windowsのデバイスマネージャからドライバの詳細を見てみてください。
「割り当てアドレス」などのソレっぽい単語が出てくると思います。
>>451さんが仰っている「血液センサ」というのがどういう形で何を検出しているのかは解りません。
導電率(抵抗計)や透過率(照度センサ)などの簡単な方法だけでなく、クロマトグラフや
画像センサや逆フーリエ変換が必要な場合は、更に複雑な前処理が必要です。
ですが、外部信号をコンピュータに取り込んで、プログラムからアクセスするという流れは
概ねこの流れは変わりません。ご理解の一助となれば幸いです。
私がコンピュータに始めて触れた35年前は、コンピュータなんてもっとスカスカでした。
「これがメモリ」「これがI/O」「これがCPU」「これがアドレスバス」「これがデータバス」
などなど、中学生がはんだこてで改造できたレベルです。
そこから今までの進化の歴史を見続けていたからこそ簡単に理解できることなのですが、
逆に複雑怪奇に進化しすぎた現在のコンピュータをイチから学ばなければいけない
今の若い方々の方が遥かに大変だと思います。
がんばってください。
スレタイに戻りますが、コンピュータの根本的な動きを理解するにあたって、
言語の優劣議論など無意味だということをご理解頂ければ幸甚に存じます(スレ違い防止w)。