git clone https://github.com/taura/install_some_jupyter_kernels.gitまたは
git clone git@github.com:taura/install_some_jupyter_kernels.git
//% cmd: mkdir -p ~/.ssh/ //% cmd: cp id_rsa.pub ~/.ssh/authorized_keys //% cmd: cat ~/.ssh/authorized_keys直すには以下を実行してください.
//% cmd: chmod 755 ~/.ssh //% cmd: chmod 644 ~/.ssh/authorized_keys
//% cmd: ls -ld ~/.ssh //% cmd: ls -l ~/.ssh/authorized_keysとして出力が以下のよう(drwxr-xr-x と rw-r--r--) になっていれば正解です
drwxr-xr-x 2 u20xxx u20xxx 4096 Jun 23 2019 /home/u20xxx/.ssh -rw-r--r-- 1 u20xxx u20xxx 1662 Jun 23 2019 /home/u20xxx/.ssh/authorized_keys
授業で使う予定のスライド. ただし変更があるかもしれません.
すでに自宅などでパソコンを使っている人は多いと思います. Windows, Mac OSという製品名はほとんどの人が聞いたことがあるでしょう. これらはみなオペレーティングシステムの実例です. サーバ用にはLinuxというOSが圧倒的に普及していますし, スマホ用のOSであるAndroidもLinuxが元になって作られています.
OSはコンピュータを動かすにあたって,最も基本的なソフトウェアです. OSの厳密な「定義」は難しく,左のような言い方でごまかすのが普通です.OS が何か?という問いに対する短い答えを追い求める代わりに,OSのないコン ピュータとそうでないコンピュータの(その上の応用ソフトウェアを作る人の 立場から見た)違いについて簡単に触れるのが有益かと思います.
卒業論文,またはその後の研究において,オペレーティングシステムその ものや,ネットワーキング(インターネット),プログラミング言語,セキュ リティ,並列・分散計算など,その他あらゆる,コンピュータの基盤に関わる 研究をしたいと思っている人は,迷わずオペレーティングシステムを学ぶべき です.オペレーティングシステムを学ぶことは,大雑把に言って,コンピュー タソフトウェアが根本的なところで「どう動くか」を学ぶことと同じです.
私はコンピュータのシステムそのものの勉強がしたいのではなく,コンピュー タを使った情報処理(自然言語,画像,音声,etc.)ができればそれで満足だ, 細かいOSの機能などはどうでもよい,という人もいることでしょう.そのよう な人にも,単位を取る以上の動機付けをあたえるとすると以下のようになるで しょう.
OSを学ぶ気になったでしょうか?
普通の講義と同様,教室での講義をすることになると思います.ただし, OSは黒板の上で説明するだけで面白いものではありません.OSを学ぶのは,コ ンピュータの最もweirdな(「変な」)部分を学ぶことですから,コンピュータ にたくさんさわらずに,あるいはさわったとしても,メールやWEBを使うだけ ではOSを「体感」することはできません(これはOSの役割が「縁の下の力持ち」 でることを考えれば当たり前です).したがって,ときおりプログラミング演 習的な要素を取り入れる予定です.
単位も普通に試験で行うことになるでしょ うが,これもOSは筆記試験だけで出来を決めるのは,体育の試験を筆記試験で やるのに近いものを感じます.そこで,プログラミング演習で力作を課して, その出来によっては試験を免除するということも考えています.詳細は授業中 にお知らせします(どんなことが行われたかは以下 を見ると少しはわかるでしょう).要するにプログラミングのためにコン ピュータを長時間触る(コンピュータ好きがコンピュータに「ハマル」)機会を 作りたいと考えています.
また,もうひとつの選択肢として,授業の最後の方の時間を利用して,少 し高度な内容を本や論文から調べて,発表してもらうという時間を作りました. ちょっと高度すぎたかも知れませんが,同様の主旨の企画は今年も作ろうかと 思っています.
特定の教科書は使いません.以下は私が参考にする本で,興味があれば入 手してください.図書に推薦してありますので,おそらく図書に入荷すると思 います(入荷していなかったら知らせてください).どれか一冊読んでみたいが, 迷っている人は1. を見るとよいと思います.このリストは今後も更新してい きます.以下のいくつかの本には邦訳が出ています.英語で読むことをお勧め しますが,もし興味があれば探ってみてください.
「Meltdown脆弱性 〜コンピュロピュロアッキテクチョ!!〜」 (原文ママ)が行われます. 田浦の授業に飽きたのでもういいや, な人も参加して下さい.
(ITC-LMSに登録されたメールアドレスに送信しています). 田浦です. このメールは, オペレーティングシステムの試験を受けているが, 課題を一部または全部がITC-LMS上で提出されていない人に送られています. 課題1: unagi_serverのスレッド用いたgetの並列化 (締め切り2018/12/1) 課題2: unagi_serverのスレッド用いた安全な並列化 (締め切り2018/12/1) 間違いがないか確認し, 「きちんと提出したはずなのにITC-LMS上で提出されていない. 何かの間違いのはず」という場合は連絡を下さい. その際, 授業でコードやレポートの提出に用いたdoss-gitlab上の課題提出フォルダへのリンクも送って下さい(例: https://doss-gitlab.eidos.ic.i.u-tokyo.ac.jp/xxxxxx/unagi/tree/master/submit ). 注: あくまでシステム上の間違いで提出したはずのレポートが受け取られていないことがないかを確認するための連絡です. これからのレポート提出を受け付けるという意味ではありません.
unagiサーバの次の(+最後の)課題は, 以下のようなものになる予定.
現在のunagiサーバは, 起動時には常に空の状態であるし, データは全て主記憶にしかおかないので, 主記憶を越えるデータを扱うのは難しい (正確には「スラッシング」がおこる). どちらもちゃんとした検索エンジンにはあってはならない状態.
関連して,
も必要になる. 現在はすべての検索を, 全ドキュメントをスキャン(頭から終わりまで全て読む)することで 実現しているが, 遅い. ただし索引は, 多分にアルゴリズムの要素が強くOSの本題とはやや離れる, 索引にも様々なやり方がある, 正しく自力で実装するのは大変, などの理由から, こちらで参照コードを提供する (しかし例によって, 出す方の準備が間に合っていない状態orz). 検索については, 配列の2分探索 (binary search) を復習しておくと良い (2分「木」探索ではなく, 配列の2分探索).
課題を行う上での解説がたくさん必要なので必要事項の解説を 次週(12/11)に行う予定.
多分, 3週間後(11/27 ごろ)になる予定です. 相変わらず提出手順など詳細未定義で すいませんが, 追ってアナウンスします. 内容ですが, 長い作文は課しません. 所定の手順で 走らせる(こちらで実行, 確認)ことができるコードを, gitlabで提出し, 正しく実行し, 性能測定を行ったという ことがわかるログのようなもの(だけ)の提出とする予定です (翻訳: 実際にプログラミングを実行する以外の部分を多く課さない). 詳細指示は常に gitlab の所定の フォルダに書きます.
最初の課題(以下)を拡張して, put (ドキュメントの追加)要求が 他の要求と並行してやってきても正しく処理できる(データが壊れない) ようにせよ. ヒント: 授業でやった Pthread の mutex を使えば良い. ただしそれだと get 要求まですべて排他制御して処理することになる. Pthreadの reader writer lock という物を使うと, reader しかいない間はそれらを並行に走らせることができる.
スレッドを用いて, サーバが複数の接続を並行に処理するようにせよ. そして, 多数の get, getc 要求を並行に処理できるようにせよ. ただしそのとき, put (ドキュメントの追加)要求が 他の要求と並行にやってくることはないと仮定して良い. 言い換えれば, もしputが他の要求と並行にやってきたら, 異常動作, サーバが終了するなど, 何がおきても構わない (「動作は未定義」が仕様). putを並行処理することの何が問題かは本日の講義で理解してください. ヒント: 関係個所は run_server という関数. 接続を受付け, 出来た接続を処理する関数 server_process_connection が, 新しいスレッドによって処理されるように書き換える.
git clone https://doss-gitlab.eidos.ic.i.u-tokyo.ac.jp/tau/unagi.git使えない場合は, ダウンロードボタンがページの上の方にあるので, 好きなものを使ってダウンロードしてください. 今日は紹介と以降の予定を説明します. 質問を sli.doでevent code 4405 と入力して投げてください.
Performance Implications of Extended Page Tables on Virtualized x86 Processors 発表資料, 元論文
発表テーマ: 仮想マシンに関して
1/10 (火) の授業を休講とさせていただきます.
2017年1/16 (月) 23:59とします.