non-premptiveを前提にするならマイコンにいくよもぅ、みたいな雑なやつ

asyncioをPython周りで調べていたときに「select on steroidっつーことだよねこれ……」みたいな妙な幻滅があった。

でもC10K考えると仕方ない(場合もある)発想だなと。要は汎用OSというのは言うほどサーバサイドの哲学に合わないというか。実際、マルチユーザでOSが見えるもの使う機会ってあんまり今では一般的じゃない。

仮想メモリの文脈で今「強い」のは「メモリが無限に見える」ことじゃなくて「守られている」ことだし、時分割が本当に役に立つのは人間が複数人ログインしているのを気づかないことじゃなくてデバイスドライバがたまに処理を必要とするので専有ダメよ、ということなんかもね、なんて思ったりした。

例えば競プロをやるとか、あるいは「300msのジッターが30ms未満であってほしい」みたいなときにOSって過剰なのかもな、なんて思ったりする。asyncioでプログラムを書かせてメンタルモデル的にシングルスレッド(ただし大量のパケット処理はやられている)みたいな状況はOS研究の初期の時分割の話と事情が違う、という気はする。自分のPCについてエンドユーザは自分一人だけなので、優先して欲しい事柄は複数人が希少リソースを共有しているときと、根っこの意味では全く異なる。

ふとマイコンを触れていると、例えばWi-Fiモジュールがよろしく通信部分をやってくれるっつーときに「まぁ、これがむしろ自然か」などと妥協する部分がある。ソフトウェアライブラリをよくインストールするけど、正直ハードウェアもそのノリで良い瞬間あるよね、と。

マイコンとOS乗るCPUの根源的な差異についてLLMに聞いてみたら、まぁわからんでもない回答が来た(例えば電力効率)のもあって、そのあたり地味に理解を再構築しても良いんだろうかね、なんて思ったりしている。

殊「計算機」ということを考えるのであれば、OSはこの手の議論の本質からちょっとずれる議論や実務が多いからなぁ。例えばタイマー割り込みあればキャッシュはその分汚れるのだけど、マイコンにある割り込みで起こる汚れはやりたい単一のことに対して本質的で、OSを介した時分割マルチタスクにとっては(隣の他人事なので)、幾分ワークロード本体から見ると本質じゃない、みたいな。

よくわからんけど書いといた。

(追記)とはいえくっそ面倒なのはUnicodeで、Unicodeの豊かな思想はOSありきでまるっと全部を食い散らかす発想じゃないとちょっと重たすぎて無理だよなぁ、なんてことも思ったりする。