UNIX v6クイズ合戦

不意に始まった神々の戯れ(UNIX v6クイズ合戦)。 楽しかったので記録しておきます。 みなさんもUNIX v6クイズ合戦に参加して知識を深め合いましょう!
6
takahiro(John Smith) @superhoge

. はい、SSWAPの意味自体は正解です!では、なぜu.u_ssavに退避するのでしょうか? RT @nothingcosmos 私のメモ書きには、SSWAPは、スワップ前のコンテキストがu.u_ssavに退避された状態フラグとかかれてますね。。aretu()で #v6_quiz

2012-07-24 07:06:59
nothingcosmos @nothingcosmos

@superhoge 質問の意図がよくわからないですね。。u_qsavやu_rsavと競合している?なぜu_rsavに退避しないのかとか?

2012-07-24 07:17:44
takahiro(John Smith) @superhoge

. @nothingcosmos 失礼しました。その通りです。なぜu.u_rsavではなく、あえてu.u_ssavに退避しているのでしょうか? #v6_quiz

2012-07-24 07:22:22
nothingcosmos @nothingcosmos

@superhoge ここまで来たら2238クラブ入会ネタじゃないですか、、っても私は上手く説明できませんが。。コンテキストスイッチによる遷移を整理しないと回答は難しいですね。

2012-07-24 07:28:26
takahiro(John Smith) @superhoge

もう少し言うと、なぜSSWAPフラグが立っているときはu.u_ssavからr5, r6を復帰する必要がある?u.u_rsavの値じゃだめなのでしょうか? #v6_quiz

2012-07-24 07:29:52
八丁堀マゴロク亭 @magoroku15

v6のidle、今のAndroidでも、linuxカーネルのidleでARMのWFI命令を呼んで割り込みを待ちます(=寝ます)。んで、寝る前に状況に応じて電源を絞ります。絞り方は、深く眠ると起きるの遅くなるので、電力消費と反応速度のバランスを取って動的に調整します。

2012-07-24 13:51:32
takahiro(John Smith) @superhoge

クイズの回答者はもういませんかー?なぜSSWAPフラグが立っているときは、u.u_rsavではなくu.u_ssavからr5, r6を復帰する必要があるのでしょう?2238clubネタなので難易度高め? #v6_quiz

2012-07-25 18:18:45
八丁堀マゴロク亭 @magoroku15

高め。ソース見直さないと回答できません。 @superhoge #v6_quiz

2012-07-25 18:31:17
takahiro(John Smith) @superhoge

やはり高めですかね。このクイズは少し長い間回答を待ってみます。 @magoroku15 #v6_quiz

2012-07-25 18:42:51
takahiro(John Smith) @superhoge

SSWAP絡みの問題は難易度が高いと、数人の方からご指摘を頂きました。というわけで、この問題は少し長い間回答を待ってみます。徐々にヒントを出していこうかとも思っています。 #v6_quiz

2012-07-25 18:49:06
takahiro(John Smith) @superhoge

そして新たなクイズを追加。例えばUNIXのlsコマンドはlsというプログラムを実行しています。しかし、chdir(cd)はシェルに組み込まれたコマンドであり、chdirというプログラムがあるわけではありません。なぜchdirはこのようになっているのでしょうか? #v6_quiz

2012-07-25 18:51:25
takahiro(John Smith) @superhoge

以前も触れたことがある話題。blogにまとめると言ったのですが、時間がないのでここで扱います。ユーザランドの話ですが、カーネルの知識があれば回答できます。ただしシェルの仕組みを知っておく必要があります。 #v6_quiz

2012-07-25 18:52:37
takahiro(John Smith) @superhoge

わからない人は、実際にchdir(cd)相当のプログラムを書いてみましょう。この話題はUNIX v6に限った話ではなく、今のLinux, UNIXでも同じ話になるでしょう。 #v6_quiz

2012-07-25 18:53:45
takahiro(John Smith) @superhoge

某OSはcdプログラムがあるらしいけどね……

2012-07-25 18:54:11
テラマコ @teramako

@superhoge 別プロセスにフォークしちゃったら意味無いって話ですか?

2012-07-25 18:57:03
takahiro(John Smith) @superhoge

うあ、予想外にすぐに回答が来てしまった。できれば、特に初学者の方に、シェルの仕組みも含めて回答をしていただくことを期待しているので、今しばらく回答を募ります。 #v6_quiz

2012-07-25 19:00:10
takahiro(John Smith) @superhoge

前も言ったけど、俺も初学者だけどね。上から目線申し訳

2012-07-25 19:00:36
八丁堀マゴロク亭 @magoroku15

別解:カレントディレクトリはuser構造に格納するinodeポインタとして表現され、その変更は自プロセスのuser構造を書きかえる必要がある。このためcdはshellの内部コマンドとして実装される必要がある。 #v6_quiz

2012-07-25 19:11:44
takahiro(John Smith) @superhoge

シェルの仕組み(コマンド叩いて別のプログラムを実行するところ)とお二人の回答を組み合わせて解説してくれる方をお待ちしております。最近v6を学び始めた人はレッツチャレンジ #v6_quiz

2012-07-25 19:19:54
takahiro(John Smith) @superhoge

今出している二つのクイズが落ち着いたら、今度は回答者側に回ろうかと。学んだことを他の人にクイズとして出すと、理解が深まりますよ~ #v6_quiz

2012-07-25 19:20:55
takahiro(John Smith) @superhoge

出題中のv6クイズのヒントをそろそろ出そうかね #v6_quiz

2012-07-30 19:17:50
takahiro(John Smith) @superhoge

出題中のクイズの1つめのおさらい。SSWAPフラグの説明を求めていました。これについてはSSWAPフラグが立っているときは、コンテキストスイッチでu.u_ssavからr5, r6を復帰する、という回答を頂いています。 #v6_quiz

2012-07-30 19:24:32
takahiro(John Smith) @superhoge

これは大正解。そして、次に「なぜu.u_rsavではなく、u.u_ssavから復帰させる必要があるのでしょうか?」というクイズを出していました。 #v6_quiz

2012-07-30 19:25:20