v6 の newproc 手続き

今朝方、例の参考書籍の copyright を持っておられる @suprehoge さんが以下な tweet をなさっているのを確認。

v6のnewproc( )の最後の処理ってわかりづらいよなぁ。やってることはテキストセグメントのコピーなんだけれど。コアが空いてたらコアtoコアcopy, 空いてなければコアtoスワップcopy。

http://twitter.com/superhoge/status/226073422839554048 より引用
むむ、newproc ややスルー気味だな、と思いつつ冷房がキかない自動車で 1h の通勤だった訳です。
帰ったらこのあたり確認してみよ、と思っていたらまごろくさんが回答なナニを tweet なさっていた。

プロセスの複製を行うnewprocは、複製する子のメモリの獲得に失敗した場合、親の空間を共有した状態でswapoutを行い、子プロセスの空間をDISKに複製する。複製中に親のメモリが変化すると正しく複製されないため、複製中は親をスケジュールの対象から外す。この状態をSIDLと呼ぶ

https://twitter.com/magoroku15/status/226223902936952833 より引用
答えありき、は微妙ながらも上記を参考にしつつ週末の酒のサカナにしようと思っております。あとこれに絡むネタな tweet も以下に引用させて頂きます。

この話、Bell研の技術誌がUNIXの特集をやったときの論文で紹介されてます。「DISK IO はDMAなのでCPUサイクルを使わない。このためforkではDISK IOを積極的に使った」←たしかこんな感じ。訳書も出ててた「UNIX原典」

https://twitter.com/magoroku15/status/226225348629639168 より引用
UNIX原典というソレは別途確認の方向。そしてこれとは関係ないのかどうかさえ不明なのですがもう一つネタが投下されてたり。

クイズ v6のinodeにあるISVTXとは何か?

https://twitter.com/magoroku15/status/226227248519323648 より引用
この週末はまごろく亭らしい。肉 4kg とか凄いな。。

とりあえず

今から確認の方向なので何かあれば追記します。

しまった

@superhoge さんから上記引用 tweet な訂正が入ってました。今、Lions' 本確認始めてあらら? と思った次第でorz
以下な訂正 tweet が入ってました。

×テキストセグメントのコピー→○データセグメントのコピー いかん、全然頭が働いていない。誤字だらけ

https://twitter.com/superhoge/status/226075371139891201 より引用