東大 情報理工学系研究科 コンピュータ科学専攻 専門科目(コンピュータ科学) 2022年度 院試 過去問 解答例・解説(全4問)
全4問です。ソートアルゴリズムが出ています。解説はすべて、途中式と最終答は大問1問ぶんを公開しています。残りは解答PDFに収録しています。問題本文は含みません。
最終更新:
第1問 — CPUスケジューリング
応答時間とターンアラウンド時間を分ける
応答時間は「到着から初めてCPUを得るまで」,ターンアラウンド時間は 「到着から完了まで」である。Round Robin では初回実行は早くなりやすいが, 完了までには何度もキューに戻るため,ターンアラウンド時間が小さくなるとは限らない。
プリエンプションの効果
Preemptive SJF では,時刻 に短いジョブが到着した時点で を中断する。 この1点が Non-Preemptive SJF との主要な差である。 到着時刻がある問題では,単に処理時間の短い順に並べるのではなく, 各イベント時刻で実行可能集合を更新する必要がある。
解答
- Preemptive Shortest Job First は,実行可能なプロセスのうち残り処理時間が最短のものを 常に選ぶ。時刻0ではP4だけが到着しているのでP4を実行する。 時刻25でP1,P2,P3が到着し,その時点のP4の残り時間は25である。 最短はP1なので,ここでP4を中断する。 実行順序は次の通りである。 @@LISTBLOCK0@@ したがって完了時刻は ターンアラウンド時間は であり,平均は である。初回実行開始までの応答時間は なので,平均応答時間は である。
- Non-Preemptive Shortest Job First では,一度選んだプロセスは完了まで実行される。 時刻0でP4が選ばれるため,P4は時刻50まで走り切る。 その後,到着済みのプロセスを処理時間の短い順に実行する。 @@LISTBLOCK1@@ 完了時刻から求めたターンアラウンド時間は である。したがって平均ターンアラウンド時間は である。応答時間は なので,平均応答時間は である。
- タイムスライスを とする。到着済みプロセスをキュー末尾に追加し, 同時到着では残り処理時間の短いものを先に並べると,Round Robin の実行順序は次のようになる。 @@LISTBLOCK2@@ 完了時刻は ターンアラウンド時間は なので,平均ターンアラウンド時間は である。初回実行開始時刻から求める応答時間は であり,平均応答時間は である。
- Round Robin の利点は,短い時間間隔でCPUを各プロセスに配るため,対話的なプロセスの 応答時間を小さくしやすいことである。長時間CPUを占有するプロセスがあっても, 他のプロセスが永久に待たされにくい。 一方,コンテキストスイッチにはレジスタ退避・復元,カーネルへの制御移行, スケジューラ実行などの費用がかかる。タイムスライスを小さくしすぎると, 有効な計算に使う時間に対して切り替え費用の割合が大きくなる。 また,切り替えによりキャッシュやTLBの局所性が失われ,メモリ管理の観点でも 余分なミスやページテーブル関連の処理が増えやすい。
- Aging方式では,待ち時間が長いプロセスの優先度を時間とともに上げる。 これにより,初期優先度が低いプロセスでもいつかは実行対象になり, 飢餓状態を避けられる。 静的優先度方式では,優先度の高いプロセスが継続的に存在すると, 低優先度プロセスが長時間または永久に実行されない可能性がある。 Agingは優先度を固定せず,待機時間を優先度に反映するため, 高優先度ジョブへの応答性を保ちつつ公平性を改善できる。
最終答
Preemptive SJF の平均ターンアラウンド時間は ,平均応答時間は 。Non-Preemptive SJF ではそれぞれ , 。Round Robin ではそれぞれ , である。
第2問 — 再帰的ソート
Stooge sort型の再帰
このプログラムは,接頭部,接尾部,接頭部を順に整列する Stooge sort 型の構造を持つ。 中央で十分に重なるからこそ,左にある大きい要素と右にある小さい要素が再帰呼び出しを通じて 入れ替わる。各呼び出しが半分程度しか覆わない場合,端は整列しても中央の順序が残る。
オーダー計算
3個の部分問題のサイズが なので,分割統治の指数は になる。通常のマージソートのような線形の併合処理はなく, 基底部の実行回数だけを数えるため,この再帰木の葉数がそのまま答えになる。
第3問 — 部分語位置の写像と言語クラス
出現位置の制約
は自分自身と2文字ずれて重なることができるが,1文字ずれて重なることはできない。 そのため,出力では が連続しない。 さらに,出現開始位置として使えるのは末尾2文字より前までであるため, 長い語では末尾が必ず になる。
有限状態変換として見る
この写像は一見すると入力全体を見ているように見えるが,固定語 の出現判定に必要なのは 長さ の窓だけである。したがって有限個のバッファ状態で処理できる。 この観点を使うと,正規言語・文脈自由言語に対する閉包性の議論が自然に書ける。
第4問 — データ依存とパイプライン
ループ回数を先に確定する
パイプライン問題では,まず動的命令数を決める必要がある。 このプログラムでは が4ずつ増え, 未満の間だけループするので, ロード・加算・更新・分岐の4命令が16回実行される。
ロード直後だけが特別
ALU命令同士の依存はフォワーディングで吸収できるが,ロード直後の使用は別である。 ロード値はメモリアクセスステージまで得られないため,直後の実行ステージに間に合わない。 この1サイクルの差が,被ロード・データハザードとして現れる。
年度別の解答例(5年度)
形式言語とオートマトン / ページングとTLB / パイプラインと論理回路
形式言語とオートマトン / パイプラインとキャッシュ / スケジューリングとセマフォ
形式言語と状態数 / キャッシュとIPC / 連結性と全域木
半分接頭辞と言語クラス / 集合分割の近似アルゴリズム / ページ置換
2022年度(このページ・全4問)
CPUスケジューリング / 再帰的ソート / 部分語位置の写像と言語クラス
2022年度の出題内容
全4問
同じテーマを出した他大学・他年度
1テーマ
2022年度は1問に1テーマが出ています。
| テーマ | この年度 | 全体の出題実績 | 他大学の直近出題 |
|---|---|---|---|
| ソートアルゴリズム | 第2問 | 9大学・24問 |
東京大学の公式過去問
- 公開年度範囲
- 2022〜2026
- 公式の解答例
- 非公開(問題冊子のみ)
- 院試hubの最終確認
- 2026-08-13