2020-12-02

最近コンピュータ環境は複雑なので初学者には理解しづらい可能性がある

例えば、黒い画面に白い1ドットの点を打つとする

ここでハードウェアのVRAMと画面が直結していれば分かりやす

VRAMのメモリ領域の中で1ビット立てればいい

Cで言うなら、メモリを確保するとポインタが取得できる

ポインタには確保したメモリ領域の先頭のアドレス番地が入っている

ちょっと語弊があるけど、そのアドレス番地に1を入れれば画面に白い点が表示される、みたいな感じである

自分子供の頃のMSXとかZX Spectrumだったらそうだった

あと、PC-9801文字のためのVRAMと画像のためのVRAMがあったんだったか

98も同じようにメモリに何か直接書けば画面に表示されたはず

あと、その画像のVRAMの上に文字のVRAMを表示させることで、

例えば背景を輝度を下げて表示させ、その上でテキストエディタ作業するとかできたはず

ファミコンとかのカートリッジも挿入すればあれは何らかのメモリ空間に格納されるのだと思われる

カートリッジが挿入されていれば、そのメモリ空間最初からCPUに実行させればいい

そうすればカートリッジの中のROMに書かれているゲームが動くはずだ

しかし、近年のOSで例えば生のVRAMを直接いじるなんてことはあり得ない

生のVRAMはグラフィクスカードの中などに入っており、それは近年のグラフィクスカード上のGPUOSによって複雑に管理されている

からWindowsなどでゲームを作るときは、まずOSにお願いして、仮想的なVRAMのような領域をもらわなければならない

何をするにもまずはOSのお伺いを立てて、OSメモリなどのリソースを切り出して与えてくれる

返すとき図書館のように返すのが礼儀であるが、ぶち切りしてもOSは尻拭いをしてくれる

が、尻拭いをしてくれない可能性もあるため、ぶち切りした後に挙動おかしくなることもあるかもしれない

そう、なんかよく分からん調子悪いなあ、みたいなことが起こりやすくなった気がする

マシンが重いなあと思ったら、別のプロセスWindowsで言うタスクマネージャーをチェックする

そして、CPU使用率やメモリを食っているプロセスを見つけ、殺していい場合はkillしてみる

成功すればマシンは軽くなる

こんなことは子供の頃のMSXファミコンではなかった

マルチプロセス動作することで重くなることもあるし、何か共通リソースファイルなどを奪い合う、デッドロックとかそういうことも起こり得る

からってMSXに戻りたいとも思わない

できることは現在コンピュータとは段違いだから

しかし、プログラムから直接ハードウェアを動かしている、と実感することは減っている気がする

それはそれで良いことなのだけど、その実感がないことが初学者を混乱させていないだろうかと思った

ハード寄りと言っても、Arduinoでもラズパイでも自分にはあまりそういう実感がない

特にラズパイLinuxが動いている時点でLinuxが良きにはからってくれるためことさら実感がない

しかし、Z80制御ボードを使っていた頃はかなり実感があった

OSも何も入っていなかったし、基本アセンブラ(とC)だったからだろう

  • Arduinoはぶ厚すぎるんだよなあ CでAVRベアメタルをもう少し書きやすくしたような学習用の環境があっても良さそう

  • ラズパイだってデスクトップ切って/dev/fb0に直書きすればなんでも出るやん と思ったけど言いたいことの趣旨はわかる

  • 機械制御用のリレーラダー楽しい。

  • 今だとFPGAの評価ボードとか買って、vhdlとか書きながら遊ぶのがいいんだろうか

  • 近年のOSで例えば生のVRAMを直接いじるなんてことはあり得ない 直接というと少し語弊があるがシェーダーのコードはそれに近いことをやってる 時代が進むことで逆にGPUを直接制御する...

  • ZXスペクトラムとかなつかーしーなーおい。 まぁ当時ですら、VRAMに立てられたビットがどうやってブラウン管電子銃のスキャン時に特定の場所を光らせるのか、ましてやキャラクタジェ...

  • GUIはコンピュータ使用のハードルを下げたけど、メタファーを多用しすぎて実体とはかけ離れてしまっている コマンドラインだけでLinuxを運用したりしているとソフトウェアの部分では...

  • 今時はOSを自作するのがこれじゃないかなーって思った。 今は時間とガッツが足りないのでOSを自作するというジャンルがあるのを知っていても手を出せていないけれど、中高生のころに...

  • 画面が点灯して表示されることには疑問持たなかったんだ、ふーん、そうなんだ、ふーん って言ってマウントとることにしている 次は交流の話な

  • 今でも8ビットのシングルボードマイコンで勉強する意義は十分あると思う。Z80でも6502でもいいから。

    • Z80懐かしい。 横だけど、 input -> process ー> output (read) (write) processに当たる if とか while だけ書いてる奴いたけど input、outputを意識してもらいたいね。

  • そんなレイヤむしろわかりづらいしほとんどの初学者は知る必要もないのでは 端末スペック上がってハードウェアに近いレイヤは触れなくていいんだから、ウェブで CSS 書いて 1px × 1px ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん