class: title, smokescreen, shelf, no-footer # クラウドコンピューティング<br><small>第01回 オリエンテーション,概要</small> <div class=footnote> <small><small> 3年、秋学期、選択; 旧「オペレーティングシステム」 </small></small> </div> --- name: orientation class: title, smokescreen, shelf, no-footer # オリエンテーション <div class=footnote> <small><small> (脚注) もちろん、オリエンテーションは期末試験の範囲外ですが、スライドの後半は試験範囲です </small></small> </div> --- class: compact # 対象者、大前提、履修登録について 【とても大事】 <div class=footnote> <small><small> (脚注) 春学期のシステム構築支援システムColitasは今回も利用可能です。第2回から登場予定 </small></small> </div> - おもに情報システム工学科3年生が対象者ですが、他学科の方も履修できます - ただし、大前提として「情報システム開発基礎演習」の単位取得者だけが受講可です - 具体的には、 「情報システム開発基礎演習」インフラ編(#01-06)のシステム構築が問題なくできる人だけ受講してください。 - 本科目の授業時間内では、春学期の範囲のサポートは行いません。 メディアコンサルタントさんに聞いて各自、復習してください - **上記科目を未履修でもAWS ACFなどの資格保有者は受講可**です - 上述の前提を満たさない方は単位取得が困難です。**履修登録の変更をおすすめ**します --- class: compact # 授業の運用形態 <div class=footnote> <small><small> </small></small> </div> - コンピュータネットワークと同様のダンドリで授業を進めていきます - 予習、ELでの確認テスト、解説、そのあとは各回、演習を行います - 第2回以降では、予習が必須です - 期末試験以外は、すべてオンラインの予定 - 知識試験(EL)は定期試験(期末試験)の枠で、場所は大学で、行います --- class: compact # 目的,目標 <div class=footnote> <small><small> (脚注) いわゆるOSの動作原理をあつかう科目は大学院の授業へ移しました </small></small> </div> - システム構築の実務/実作業をやりますが、技術的には、大半が春学期の復習です - 春学期の演習内容をなぞりながら、 システムの状態の調査をしつつ、 その**コマンド操作の背景にある概念を考えていきます** - 春学期の演習内容の裏側にある**概念**をキチンと見ていくことが主目的 - 科目名がクラウドなので、 最後は <B>クラウドらしいシステム</B>を作ることを課題とします - <B>クラウド(AWS)らしいシステムとは?</B> (詳細は第10回あたり〜) 1. スケールアウト/スケールインできる 1. ステートレスなアプリケーションサーバの作成 1. むずかしい分散システムのところはAWSのサービスに頼る --- class: compact # この授業は、何をやり、何をやらないのか <div class=footnote> <small><small> (脚注1) いわゆるOSの動作原理をあつかう科目は大学院の授業へ移しました <br> つまり、たいていの理工系大学学部3年にある「オペレーティングシステム」という科目は大学院で行うという意味 <br> (脚注2) 世界最高峰の理工系大学MITの学部3年の授業「オペレーティングシステムエンジニアリング (6.828) 」は、 これをやっています。 たまに、うちの研究室の有志(大学院は大前提)でやることがありますが、 相当Unixが使えないと話についていけません </small></small> </div> - 何をやるのか <small> - 春学期のコマンド操作の復習 - そのコマンド操作の背景にあるOS概念の説明。 それにともなうOSの内部構造の表面的な説明 - クラウドらしいシステムの構築 (秋学期NEW) </small> - 何をやらないのか <small> - 資格試験の勉強 - OSの内部構造(カーネルが提供する機能)の説明(脚注1) - (ミニチュアUnix)カーネルのソースコード(1万行)を読む(脚注2) </small> --- class: compact,col-2 # 最終課題の最低ラインと理想形(予定) <div class=footnote> <small> <small> (脚注) 最低ライン課題(左側)は 「ショッピングカートの中身が、システムが一部壊れても消えない」ことです </small> </small> </div> ![](../exercise/images/sysbuild-plan-minimum.png) ![](../exercise/images/sysbuild-plan-final.png) --- name: overview class: title, smokescreen, shelf, no-footer # <small>OSの概要</small> <div class=footnote> <small><small> 第2回からが本番ですが、軽く基本的な概念や用語を先出しします(<B>期末試験の試験範囲、なお脚注は範囲外</B>) </small></small> </div> --- class: compact # デジタルコンピュータが提供するもの <div class=footnote> <small><small> (脚注1) コンピュータというハードウエアについては、 たいてい「コンピュータアーキテクチャ」という科目があつかう内容の復習 <br> (脚注2) 2024/09 LinuxカーネルにリアルタイムOSの機能が追加されたので、ちかぢか各Linuxディストリで利用可になるはず </small></small> </div> - 現代では主に**ユーザが使いやすい「GUIベースで対話的に利用する」仕組み**の提供 <small> - デジタルコンピュータという機械を生々しく操作すれば最高効率で使えるはず <br> でも、それは(一般のユーザにとっては)非常に難しい - ユーザが使いやすいように、コンピュータに何層か(抽象化する)システムをかぶせています </small> - OSの種類(代表的な2種類をあげると...) - **タイムシェアリングシステム(本科目の対象) ... 対話的,複数ユーザが同時に利用可** - リアルタイムOS ... 自動車やロケットなどミリ秒単位で制御したいデバイスで用いる --- class: compact,img-right # コンピュータの生ハードウエアの操作は辛すぎる <div class=footnote> <small> <small> (脚注) この例ではmain関数でprintf()をするプログラムを生書き(2進数表記)しています。 HDDへの読み書きもネットワークの送受信も、 こういう2進数の群れを打ち込んで指示を出すことになります。 1950年代くらいだと、これをやっていたのですが、さすがに、達人のみなさんといえども、これはツラい。 それで、プログラミング言語とかOSが開発されてきたわけです </small> </small> </div> ![height400px](https://4.bp.blogspot.com/-GAe9PiUVTGo/V0QnaYr8K1I/AAAAAAAA64g/ax-eVALALjYcAcPtF-fcqYTBYpSKWQlvACLcB/s800/computer_punchcard_scientist.png) ``` 01010101 01001000 10001001 11100101 10111111 10001110 00001001 01000000 00000000 11101000 11111000 11111011 11111111 11111111 10111000 00000000 00000000 00000000 00000000 01011101 11000011 ``` - コンピュータとは2進数の命令を処理する機械のことです --- class: compact,img-right # OSの役割<small>- ハードウエアを使いやすくするシステムソフトウエア -</small> <div class=footnote> <small><small> </small></small> </div> ![](../images/os-abstraction.png) - ハードウエアを抽象化して扱いやすくする<B>システムソフトウエア</B>がOS <small> - 0101...ではなく分かりやすい何か - ファイルとかフォルダとかネットワークとかアプリのアイコンとか... - グラフィカルユーザインターフェイス(GUI) - 各種デバイス(例:USBメモリ)も生操作は大変ですが、 自動的に認識したり、 読み書きをドラッグ&ドロップ出来たりするのは、 途中に挟まっているOSが色々してくれるから </small> --- class: compact,img-right # 用語を少々 <div class=footnote> <small> <small> (脚注1) 本科目は 「春学期のユーザランドの操作の意味と、 該当するカーネルの概念の一部を解説する」ものと言えます <br> (脚注2) Unixではカーネルですが、OSの教科書ではスーパバイザーと呼ぶことが多いようです。 同じ意味です </small> </small> </div> ![](../images/os-abstraction.png) <small> - <B>カーネル</B> ... OSの中核部分のプログラム - 例: linux - <B>ユーザランド</B> ... ユーザに見えているOS部分の総称。コマンド群のことと考えてよい - コマンド ... Unixで提供されているプログラム - 例: ps, ss, sudo, python3 - <B>シェル</B> ... (a)コマンドを打ち込んで結果を表示しているプログラム (b)<B>人間と対話処理をする</B> - 例: bash - 例: `$ ps aux`の`$`はシェルが「命令まち」を意思表示する特殊文字(<B>プロンプト</B>) ``` $ ps aux ``` </small> --- class: title, smokescreen, shelf, no-footer # 本日のTODO <div class=footnote> <small><small> </small></small> </div> --- class: compact # 本日やること、次回予告 <div class=footnote> <small><small> </small></small> </div> - ポータルの出席を入れる - ポータルの「目標設定」を入力する - アンケートに答える - google form -> https://docs.google.com/forms/d/e/1FAIpQLSeB0tKeK5ZeBXSsUgVHwCf3WFyMvaaBSNyI8wuFyc9guqIzhg/viewform - ポータルに同じURLを貼っておくので、そこからたどって回答してください - 確認事項、該当する人は残ってください - AWS Academyからの招待メールが来てない - ELのコースが見えない - 来週(10/04)は休講なので、第2回は10/11です