2 21
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # 情報学基礎演習 - 院試勉強 ## 事項 * 【難】 * 分かる * 【難難】 * ふんわり分かるけど厳密じゃない * 【難難難】 * わからん ## 第一章 ### 1.1節 ### 1.2節 ### 1.3節 #### ディスクやCDの回転速度を上げると何が得られるか.☆ * より速いデータ検索と,より高い転送速度 #### ◆複数ディスクからなるストレージシステムにデータを記録するとき,1枚目のディスクを書ききってから2枚目に移るべきか,あるいは1つのシリンダを書ききってから次のシリンダに移るべきか.★★ * ここで抑えるべきポイントは,コンピュータの内部機能の速度と比べて機械的な動作が遅いので,読みかけベッドを動かす回数を最小にするべきだということである. * 次を始める前に表面を完全にいっぱいにするならば,トラックを使い終わるたびに読み書きヘッドを動かさなければならない.したがって移動の数は2枚の表面上のトラックの総数とほぼ等しい. * しかし,1枚めと2枚めで読み書きヘッドを電子的に切り替えるのであれば,各シリンダがいっぱいにされたときにだけ,読み書きヘッドを移動すれば良い. * 補足 * ![](https://i.imgur.com/kjwIp73.png) #### 定期的に更新される予約システムのデータは,なぜCDやDVDではなく磁気ディスクに格納されるのか.☆ * このアプリケーションでは,マスストレージからランダムに情報を検索しなければならない.したがってCDとDVDで使用される螺旋状のシステムでは時間がかかってしまう. #### ワードプロセッサで文書を変更するとき,テキストを加えてもマスストレージ内のファイルのサイズが増えないことがあるかと思えば,記号を1つ加えただけなのに数百バイトも増えることがある.なぜか.☆ * ストレージ領域では,ある物理的なセクタを単位として割り当てられる. * 最後の物理的なセクタが満杯でないならば,ファイルに割り当てられたストレージ領域を増加させずに追加テキストを加えることができる. * 最後の物理的なセクタが満杯であるならば,ドキュメントへのどのような追加も,物理的なセクタの割当を必要とする. #### フラッシュドライバが,他のマスストレージシステムよりも優れている点を述べよ.☆ * フラッシュドライブは物理的動作を必要としないので,応答時間が短くかつ物理的な摩耗も発生しない. #### ◆バッファとはなにか★★ * 複数の機器などがデータの伝送・処理を行う際に,処理速度や伝送速度の差,タイミングのずれなどを補うためにデータを一時的に蓄えておく記憶装置や記憶領域をこのように呼ぶ. ### 1.4節 #### ASCIIコードにおいて,大文字と小文字はどのような関係になっているか.☆ * ASCIIコードは8bitである. * 大文字では下から6番目が常に0であるのに対して,小文字では常に1であることを除いて,2つのパターンが同じである. * 例えばAは01000001で,aは01100001である #### 画像を,ビットマップではなく幾何学構造で表現する利点はなにか.幾何学構造ではなくビットマップで表現する利点はなにか.☆ * 幾何学表現は,ビットマップとして符号化された画像よりも拡大縮小するのが容易である. * しかし,ビットマップでは,幾何学表現に比べて細かいディティールを含む画像を正確に表現できる. ### 1.5節 ### 1.6節 ### 1.7節 ### 1.8節 #### カラーの漫画を符号化するのにJPEGよりもGIFが優れているのはなにか☆ * カラーの漫画は,無地の色ブロックとはっきりした縁取りから構成される.更に色数には制限がある.(実際には、カラーの漫画を符号化する場合、GIFとJPEGのどちらが優れているかは、使用目的や状況によります。それぞれのフォーマットには利点と欠点があります。) #### 他の惑星に行って写真を取る宇宙船の設計チームにいるとする.写真をGIFを使って圧縮するのとJPEGの基本標準を使って圧縮するのとで,画像を格納し送信するのに要する資源を少なくしたいならばどちらが良いか.☆ * どちらも好ましくない.GIFとJPEGはどちらもロスあり圧縮システムであり,画像の詳細は失われてしまう. #### JPEGの基本標準が利用している人間の目の特徴とはなにか.☆ * JPEGの基本標準では,人間の目が明るさの変化ほどには色の変化に敏感ではないという事実を利用している.したがって画質を著しく損なうことなく色彩の情報を表すビットの数を減少できる. #### ◆MP3が利用している人間の耳の特徴とはなにか.★★ * 継時マスキング * 突然大きな音がした時,その前後の音が聞こえなくなること * 周波数マスキング * 高さが少し異なる音が同時にあったとき,低い音によってもう一方の高い音のほうが聞こえにくくなること(周波数マスキングは、ある周波数の音が大きい場合、その周辺の周波数の小さな音が聞こえにくくなる現象を指します。人間の耳は、特定の周波数の音に集中していると、その周辺の周波数の音が聞こえにくくなります。) #### ◆数値情報,画像,音声をビットパターンで符号化するときに共通する問題となる現象を述べよ.★★ * 情報を符号化するときは,近似が行われる. * 数値データの場合,計算が実行されるとき,近似は合成され,誤った結果につながることがある. * 画像や音声の場合,近似はそれほど重要ではない.なぜなら通常符号化されたデータは格納,転送,再生されるだけだからである.しかしながら画像や音声が再生,再録音,再符号化を繰り返されるならば,これらの近似は積み重なって,最終的に価値のないデータになってしまうかもしれない. ### 1.9節 ### 演習問題 #### 12. メインメモリが磁気ディスクストレージよりも優れている点を2つ述べよ.また,磁気ディスクストレージがメインメモリよりも優れている点を2つ述べよ.☆ * メインメモリが磁気ディスクストレージよりも優れている点 * 処理速度,物理的衝撃に強い * 磁気ディスクストレージがメインメモリよりも優れている点 * 安い,長期保存に適している ### その他まとめ #### ◆RAMを説明せよ★★ * コンピュータで使用するメモリの一分類である.任意の順序でセルにアクセスすることが出来る.不揮発性であるROMとは異なり,電源が落ちると記憶内容が消えてしまう.RAMは非常に高速な読み書き速度を持っており,CPUとのデータのやり取りが効率的に行われます. #### ◆ディスクシステムの性能を評価する尺度を説明せよ★★ * シーク時間 * 読み書きヘッドをあるトラックから他のトラックへ移動するのに要する時間 * 回転遅延時間(レイテンシ) * ディスクが一回転する時間の半分であり,読み書きヘッドが求めるトラックと重なってから求めるデータが読み書きヘッドのところまで回ってくるまでに要する平均時間 * アクセス時間 * シーク時間と回転遅延時間の和 * 転送レート * ディスクとコンピュータ間でデータを転送するときの単位時間あたりのデータ転送量 ### 用語まとめ * フリップフロップ【難】 * 1ビットの情報を保持することが出来る論理回路 * 大規模集積回路(VLSI) * 一枚の半導体チップに数十万〜数百万以上の電子部品などを集積した回路のこと ## 第二章 ### 2.1節 #### コンピュータ内の1つのメモリセルの内容を,別のメモリセルに移動するとき必要なステップを述べよ.☆ * マシンによっては,最初にメモリセルからレジスタに内容を読み取り,次にレジスタから複写先のメモリセルにそれを書き込む2ステップのプロセスになる.しかし殆どのマシンでは,中間的レジスタを使用せずに1つのプロセスとして達成される. #### メインメモリセルに値を書き込むとき,CPUはどのような情報をメインメモリの回路に渡さなければならないか☆ * 書き込む値,書き込むセルのアドレス,書き込み命令 #### ◆マスストレージ,メインメモリ,汎用レジスタは,すべてストレージシステムである.それぞれの違いを述べよ.★★ * マスストレージは,永続的にデータを保存するために使用する.データの書き込みが比較的遅いため,頻繁に書き換えたり,アクセスするためには時間がかかる * メインメモリは,コンピュータが現在アクセスしているデータを一時的に保持するために使用される.主に,プログラム命令とプログラムが実行に必要なデータを保持する.CPUとはバスを経由して接続するため,汎用レジスタよりもアクセスが遅い.また,メインメモリは,電源が落ちるとデータが失われる揮発性の特徴を持つ. * 汎用レジスタは,コンピュータのCPU内にある小さなメモリ領域である.CPUがデータを処理するために使用する一時的なデータストレージとして使用される.汎用レジスタは,マスストレージやメインメモリと比べてデータを高速に読み書きすることができ,CPUがプログラムやデータを処理するために使用するデータの一時的な格納場所として使用される. ### 2.2節 #### データをマシン内のある場所から別の場所に移動するのに,moveという用語が適切ではないと考えられるのはなにか.☆ * moveという用語は,ある場所から取り除いて別の場所に移す行為を暗黙に意味する.ほとんどのマシンでは,このような取り除きは行われず,むしろ移動対象は,新しい位置に複写される. #### 本文中JUMP命令は,飛び先を名前で明示的に指定して表現されている.この技法の短所は,後に命令の名前が変更されたとき,すべてのジャンプ命令を探して名前を書き換えなければならないことである.JUMP命令の表現を変更して,飛び先の名前を明示的に指定しなくても良い方法を述べよ.☆ * 相対アドレス指定と呼ばれる一般的な技法は,どこまでジャンプするかではなく,どれだけジャンプするかを記述する.例えば前に向かって3命令ジャンプをするか,後ろ向きに2命令ジャンプするかを指示する.しかしながら,あとにジャンプ元と目的の命令の間に新しい命令を挿入するならば,ジャンプ命令も変更しなければならない. ### 2.3節 ### 2.4節 ### 2.5節 ### 2.6節 ### 演習問題 #### 1. 汎用レジスタと主記憶装置セル(メモリセル)はどのように類似しているか.またどのように異なっているか.☆ * どちらもデータを蓄えるという点では類似している.主記憶装置は制御装置からの結果や制御装置に与えるプログラムといった様々なデータを蓄える為に用いられるが,汎用レジステはCPUの演算結果を一時的に記憶する場所として用いられる.また,一般に汎用レジスタはメモリセルに比べて記憶容量が非常に小さい. #### ◆51. CISC(Complex Instruction Set Computer)アーキテクチャとRISC(Reduce Instruction Set Computer)アーキテクチャの違いを端的に述べよ【難】 * CISCとRISCはともにプロセッサ(CPU)の方式である * CISCでは命令フォーマットと命令サイズが可変長であるため,高機能命令を実装可能である.複雑な命令を,内部で1つの命令をより細かく単純なマイクロ命令の列に置き換えてから実行するマイクロプログラム方式が用いられる.命令語長や実行時間が命令によってまちまちであるため,パイプライン処理などで並列度を高めにくく,命令が多く複雑なため回路規模も大きくなりがちである. * RISCは命令フォーマットが固定長であり,CISCと比べて命令が単純かつ少数である.令フォーマットが固定長であるのでパイプライン処理などの処理速度向上技術を実装しやすい.また全ての演算は1クロックで実行されるため,パイプライン動作にウエイトが生じない.演算はレジスタ-レジスタ間で行われる. #### ◆52. スループットを向上させる2通りのアプローチを特定せよ.【難】 * スループットとは,コンピュータやネットワーク機器が単位時間あたりに処理できるデータ量のことである. * パイプライン化・・・マシンサイクル中のステップを重複させる技法のこと * クロック数を速めること #### 53. どのようにすればマルチプロセッサマシンが,単一プロセッサマシンより数値の集合の平均を速く計算できるか述べよ.☆ * 内部マシン1つに割り当てられた作業を独立した部分作業に分割して,それぞれの部分作業の同時実行を隣接するマシンに依頼する.そうすることにより,元の作業をシングルプロセッサマシンで実行するよりも少ない時間で実行できる. ### その他まとめ #### ◆プログラム内蔵方式を説明せ★★ * 主記憶に置かれたプログラムを実行するという,コンピュータアーキテクチャの方式の一つである. #### ◆CPU内の2つの専用レジスタを説明せよ★★ * 命令レジスタ * 実行される命令を保持する * プログラムカウンタ * 次に実行される命令のアドレスを持つことで,マシンがプログラムのどこを実行しているかをわかるようにしている. #### ◆メモリマップドI/Oを説明せよ★★【難難難】 * メモリマップドI/Oとは,アドレス空間上にメモリと入出力機器が共存し,メモリのリード/ライドのためのCPU命令を入出力機器にも使用できる手法のことである.この方法では,一続きのアドレスの中にメモリにアクセスするためのアドレスと入出力機器にアクセスするためのアドレスを用意することで,CPUから見た場合,メモリも入出力機器も同じようにアクセスすることが出来る. #### ◆フォン・ノイマン・ボトルネックを説明せよ★★ * フォン・ノイマン・ボトルネックは,ノイマン型コンピュータに存在する性能上のボトルネックである.プログラム内蔵方式では,CPUが主記憶に置かれたプログラムにバスを通してアクセスし,命令レジスタに次に実行する命令を読みこむ.CPU速度とCPU-主記憶間のデータ転送速度には大きな差があるため,CPU処理能力がデータ転送能力により制約を受けることになる. #### ◆パラレル通信とシリアル通信を説明せよ★★ * パラレル通信では,複数の信号が,それぞれ独立の線上で同時に転送される.この技法はデータを高速に転送できるものの,比較的複雑な通信経路が必要になる. * シリアル通信では,一本の配線上で信号を次々に転送する.パラレル通信よりも単純なデータ経路で済む.USBなどはその例である. #### SISD,MIMD,SIMDを説明せよ☆ * SISD(Single Instruction Single Data)・・・単一の命令で単一のデータを処理する方式 * MIMD(Multiple Instruction Multiple Data)・・・複数の命令で複数のデータを扱う方式 * SIMD(Single Instruction Multiple Data)・・・単一の命令で複数のデータを処理できる方式 #### 用語まとめ * ダイレクトメモリアクセス(DMA)【難難難】 * CPUを介さずに周辺機器やメインメモリなどの間で直接データ送信を行う方式.DMAに対応したシステムでは,CPUはチップセットなどにある専用のコントローラーに指示を出し,コントローラーがデータの読み書きを行う. * CPU がバスを使用していないナノ秒単位の間隙でメインメモリと直接通信を行える * ハンドシェイキング【難難難】 * コンピュータの構成要素間の通信を双方向的に行うこと.ハンドシェーキングでは,周辺機器が生成してコントローラーに送るビットパターンであるステータスワードが使用される.ステータスワードはビットマップになっており,各ビットが装置の状態を反映するようになっている. * マルチプレックス【難難難】 * データを符号化し,インターリーブすることで1つの通信経路が複数の経路を提供する技術 * インターリーブとは、データ入出力や通信において連続的に信号やデータを扱う際、時間や空間などの何らかの物理的な広がりに対してわざと不連続にデータを配置する手法 * マシンサイクル【難難】 * 取り出し * メモリから次の命令を取り出してからプログラムカウンタを繰り上げる * 解読 * 命令レジスタ内のビットパターンを解読する * 実行 * 命令レジスタ内の命令が指定する動作を実行する   * コントローラー【難難難】 * コンピュータと他の装置との間の通信を中継する機器.PCの場合,コントローラは真ボード上に固定された回路として実現される.コントローラは,周辺機器やポートとケーブルで繋がっていたりする.このようなコントローラはそれ自身小型のコンピュータである. ## 第三章 ### 3.1節 #### キューの例を述べよ.それぞれについて,FIFO構造が破られる状況を指摘せよ.☆ * イベントのチケットを買うために待っている人々の列.この場合,先入れ先出し法の構造に反する’割り込み’まで試みる人がいるかもしれない. #### ◆組込みシステムとPCの違いを述べよ.★★ * 組込みシステムは1つの作業に焦点をあわせることが多いが,PCは汎用コンピュータである. * また,組み込みシステムは専用のハードウェアやプロセッサ,OSを使用して構築されることが多いが,PCは汎用的なOSやハードウェアが用いられる. * 組込みシステムは通常,リアルタイム性が重要で,特定の目的に最適化された低レベルの制御を必要とするため,ハードウェアとソフトウェアが密接に統合されている.これにより拡張性が制限される.PCは高レベルの言語で開発されたアプリケーションを実行するため,より柔軟であり制御が穏やかである.また,PCは汎化製品であるため,多様なハードウェアやソフトウェアの拡張性がある. #### ◆タイムシェアリングとマルチタスキングの違いを述べよ.★★ * タイムシェアリングとは,同時に複数のユーザがマシンにアクセスすることを言う. * マルチタスキングとは,同時に1つ以上の作業を実行することをいう. ### 3.2節 #### ◆オペレーティングシステムの構成要素を列挙し,その役割を一言で述べよ【難】 * シェル * マシンの環境でユーザと対話する. * ファイルマネージャ * ファイルの場所,アクセス権,利用可能領域といったマスストレージに格納されているすべてのファイルの記録を保持する.これらの記録は,関連するファイルを含むストレージ上に保存されている. * デバイスドライバ * マシンに接続されている周辺機器の操作を実行するために,コントローラと通信するソフトウェアである. * メモリマネージャ * マシンがメインメモリを使用する際の調整を行う.マルチユーザ環境,マルチタスク環境では,コンピュータは一度に多くの要求に答えなければならないので,重要である.メモリの割付,領域の制限,使われなくなった領域の管理を行う. * スケジューラ * コンピュータ中に存在するプロセスの記憶を保持するだけでなく,新たなプロセスを現在プロセスに加え,完了したプロセスを現在プロセスから削除する. * スケジューラはプロセステーブルをメインメモリ内に保持する * ディスパッチャ * スケジュールされたプロセスの実行を管理する #### アプリケーションソフトウェアとユーティリティソフトウェアの違いを述べよ.☆ * 違いは曖昧であり,その区別は主観的である.大まかに言えば,ユーティリティソフトウェアは基本的かつ普遍的な作業を実行するが,アプリケーションソフトウェアはマシンのアプリケーション特有の作業を実行する. #### ◆仮想メモリとはなにか.★★ * 仮想メモリとは仮想的なメモリ空間である.その見せかけの存在は,メインメモリとマスストレージの間でデータとプログラムを交換することによって創造される. #### ◆ブートの手続きを手短に述べよ.★★【難】 * マシンに電源が投入されると,CPUはROMにあるブートストラップを実行し始める.ブートストラップは,CPUに指示して,マスストレージからオペレーティングシステムをメインメモリの揮発性の領域に転送させる.転送が完了すると,オペレーティングシステムにジャンプするようにCPUに命令する. ### 3.3節 #### プログラムとプロセスの違いを手短に述べよ【難】 * プログラムは命令の集合である.プロセスはそれらの命令に従う動作である. #### ◆割り込みが生じたときにCPUが実行することを手短に述べよ.★★【難】 * CPUは現在のマシンサイクルを完了させて,現在のプロセスの状態を保存した上で,割り込みハンドラのアドレスである規定の値にプログラムカウンタを設定する.したがって次に実行される命令は,割り込みハンドラの最初の命令である. * 割り込みハンドラとは,割り込み受け付けによって起動されるオペレーティングシステムやデバイスドライバのコールバックルーチンである #### マルチプログラミングシステムにおいて,高い優先順位を持つプロセスを他より速く実行するにはどうすればよいか.☆ * ディスパッチャが優先してプロセスを割り当てるように高い優先順位にする.もう一つの方法は,高い優先順位を持つプロセスにより,長いタイムスライスを与えることである. ### 3.4節 ### 3.5節 #### マルチプログラミングシステムにおいて,あるプロセスが割り当てられたメモリセル以外の領域もアクセスできるとしたら,どのようにマシンの制御を獲得できるか.☆ * そのプロセスはオペレーティングシステムを変更できるので,ディスパッチャにすべてのタイムスライスをそのプロセスに与えるようにできる. ### 演習問題 #### ◆1. オペレーティングシステムが行う4つの典型的な動作を列挙せよ【難難難】 * データ及びアクセスの制御 * 効率的なデバイスアクセス * マシンのリソースの使用の調整 * マシンへのアクセスの制御 #### ◆2. バッチ処理とリアルタイム処理の違いを端的に述べよ★★ * バッチ処理とは,データをまとめて処理するプログラム方式である.あらかじめプログラムに一連の処理方式を登録することで一定期間そして一定量のデータをまとめて一括に処理することが出来る. * リアルタイム処理は,データの処理要求が発生したときに,即座に処理を実行して結果を返すが,バッチ処理と比較して負荷の調整が難しいことや処理できるデータ量に限りがある. #### 5. マルチタスキングオペレーションシステムとはなにか☆ * 1つのコンピュータシステムにおいて,複数の処理を同時に実行ようなオペレーティングシステムのことである. #### 6. PCにおいてマルチタスキングが有効である状況を述べよ☆ * 複数のアプリケーションを同時に開いて作業できること #### ◆8. オペレーティングシステムのユーザインターフェースの役割はなにか.また,オペレーティングシステムのカーネルの役割はなにか.★★【難】 * ファイル操作やプログラム操作といった,従来シェルを用いてコマンドを打ち込むことで行っていた操作を,入力装置を操作することで行えるようになる. * カーネルでは,アプリケーションの実行を許可し,ハードディスクやメモリといった,コンピュータの資源管理を行う. * カーネルは,OSの中核的なプログラムであり,ハードディスクやメモリなど,コンピュータの資源管理を行う.カーネルでは,アプリケーションの実行を許可し,プロセス管理を行う.また,安全なメモリへのアクセス管理や,コンピュータに接続された周辺機器のデバイス管理を行う.プロセス間の通信,割り込み処理といった処理もカーネルによって行う. #### 10. オペレーティングシステムの文脈で使用されるときの’プロセス’という用語を定義せよ. * オペレーティングシステムの制御下でプログラムを実行する動作のこと #### ◆11. オペレーティングシステム中のプロセステーブルには,どのような情報が含まれているか★★ * プロセスに割り付けられたメモリ領域,プロセスの優先順位,プロセスが準備完了か待機中であるかといった情報 #### ◆12. プロセスが準備完了であるのと待機中であるのとでは,どのように違うか★★ * プロセスが続行可能な状態にあれば準備完了であり,マスストレージ操作の完了やキーボードのキー押下,そして他のプロセスからのメッセージの到着のような外部イベントが発生するまで待たされているときに待機中となる. #### 13. 仮想メモリとメインメモリの違いはなにか☆ * 物理的なメインメモリが,マザーボードに搭載されている物理的に存在するメモリなのに対して,仮想メモリはHDDやSSDの記憶デバイスの領域を任意のサイズで借りることで擬似的なメモリ機能を発揮する.つまり,物理的に「仮想メモリ」という部品があるわけではない. #### 14. コンピュータが512MBのメインメモリをもち,オペレーティングシステムは2KBのページを使用して,その2倍の大きさの仮想メモリを生成すると仮定する.何ページ必要か.☆ * To create a 1024MB (MiB) virtual memory using 2KB (KiB) pages would require 524,288 pages. #### ◆15. 2つのプロセスが,同時に同じファイルにアクセスする必要がある時,どのような問題がタイムシェアリングシステムやマルチタスキングシステムに起こるか.ファイルマネージャが,そのような要求を受け入れる場合があるか.ファイルマネージャが,そのような要求を拒否する場合があるか.★★【難】 * If both processes merely need to read from the file, no conflicts will occur. However, if one of theprocesses is going to modify the file, them it should have exclusive access. (Such problems are discussed in Section 9.5 in the context of databases.) * 両方のプロセスが単にファイルから読み取るだけであれば,競合は発生しない.しかし,どちらかのプロセスがファイルを変更するのであれば,そのプロセスには排他的なアクセスが必要である. #### ◆17. マルチプロセッサアーキテクチャの文脈で,ロードバランシングとスケーリングを定義せよ.☆【難】 * ロードバランシングとは,さまざまなプロセッサに作業を動的に振り分けてすべてのプロセッサが効率的に使われるようにすることである. * スケーリングとは,プロセッサの数に合うように1つの作業を複数の部分作業に分割することである. #### ◆19. なぜブートプロセスは必要か☆【難】 * デスクトップコンピュータにオペレーティングシステム全体を保持しておけるだけのROMを用意することは,今日の技術では効率が良くなく,更にコンピュータのオペレーティング・システムは,セキュリティを保つためや最新のハードウェア用にデバイスドライバを最新に保つために頻繁に更新されるため,ROM中のブートローダを更新するのは技術的な制約があるため. #### ◆24. マルチタスキングオペレーティングシステムが,アクセスの調整をしなければならない5つの資源を列挙せよ【難】 * メモリ容量,ディスク容量,プリンタ(外部機器)へのアクセス,タイムスライス,ファイルへのアクセス #### 26. マルチプログラミング環境で2つのプロセスを実行するシステムにおいて,両方のプロセスがI/Oバウンドであるのと,1つがI/Oバウンドで他方が計算バウンドであるのとでは,より大きいスループットを達成するのはどちらか.理由を述べよ.☆ * I/Oバウンドプロセスと計算バウンドプロセスである場合の方が,通常,より大きいスループットを達成する.例えば,計算バウンドプロセスの集合が時間を共有することによって得られるものはほとんどない.実際,このようなコレクションは,コレクション内の異なるプロセス間で繰り返し切り替えられることによる遅延がなければ,通常より速く実行される.しかし,いくつかのI/Oバウンドプロセスの場合,I/O要求の相対的なタイミングが,マルチプログラミング環境において利益を生む可能性がある. * (chatgpt)一方のプロセスがI/Oバウンドで、他方のプロセスが計算バウンドである場合、システムは一般的により大きなスループットを達成できます。これは、マルチプログラミング環境において、プロセッサが空いている時間を最小限に抑えることができるためです。具体的には、一方のプロセスがI/O操作(ディスクアクセス、ネットワーク通信など)を待つ間、他方のプロセスがCPUで計算を行うことができます。このようにして、CPUは常に忙しく、システム全体のスループットが向上します。一方、両方のプロセスがI/Oバウンドである場合、両方のプロセスが入出力を待つ時間が長くなり、その間CPUはほとんど使用されません。これにより、システム全体のスループットは低下する可能性があります。ただし、これは一般的な話であり、具体的なシステムの設定やプロセスの動作によっては異なる結果が出ることもあります。例えば、I/Oデバイスの性能やマルチタスクのスケジューリングアルゴリズム、プロセスのI/Oと計算の比率などがスループットに影響します。 #### ◆27. プロセスのタイムスライスが終了した時,オペレーティングシステムのディスパッチャが何をしなければならないか書き出せ【難難】 * ディスパッチャは,プロセステーブルの中の準備完了となっているプロセスの中で最も優先順位の高いプロセスを選択してタイマー回路を再起動し,選択したプロセスがそのタイムスライスを始められるようにする #### 29. マルチプログラミングシステムにおいてプロセスが,割り当てられたタイムスライス全体を消費しない状況を特定せよ. #### ◆33. 多くのマシン語にあるテストアンドセット命令の重要性について説明せよ.テストアンドセットプロセス全体を1つの命令として実装することがなぜ重要なのか.☆【難難難】 * この命令は,CPUにフラグの値を取り出し,受け取った値を調べてからフラグをセットすると行った一連の動作を,1つのマシン命令内で行うこと. * セマフォを実現する具体的な手法である * テストアンドセット命令とは,メモリーなどに対してアトミックな書き込みを実行するための命令や機能のことである.この処理では,現在の内容を読み取り→内容を確認し→内容を変更し→その内容を書き込む,という手順となるが,途中で他のスレッドやプロセスに割り込まれないよう保証する必要がある.さもないと,読んで書くまでの間に他のスレッドやプロセスから違う値に書き換えられた場合,このスレッドやプロセスが書き込んだ瞬間に不整合が生じてしまい,正常な動作が妨げられてしまうからである。そこで,テストアンドセットでは必ず排他制御を実施し,アトミックにする. * この方法の利点は,CPUが割り込みを認識する前に命令を完了するところにある.1つの命令として実装してあれば,フラグの判定とセットの動作は分割されない. #### 36. 一度に1つのプロセスだけがコンピュータディスプレイの1つの領域を使用できるので,これらの領域は,ウィンドウマネージャによって割り当てられる共有不能な資源であると言える.ウィンドウマネージャは,デッドロックを避けるためにデッドロック3条件のどれを取り除く必要があるか.【難】 * 共有不能な資源をめぐって競合が起きている * という条件 #### ◆41. デッドロックとスタベーションは,どこが類似しているか.デッドロックとスタベーションの違いはなにか.【難難】 * デッドロックとは,複数のプロセスが互いに相手の占有している資源の解放を待ってしまい,処理が停止してしまうことである. * スタベーションとは,マルチタスク処理において,プロセスなどが必要なリソースを取得できない状況が継続すること.これが起きるとプログラムは処理を継続できず,事実上,動作を停止した状態に近くなる. * 両者とも,リソースを獲得できないことによりプロセスが実行を継続することができなくなり,システムが停止してしまうという点で類似している. * デッドロックでは,複数のプロセスが相互にリソースを要求し続けることで発生するため,リソースを使用しているプロセスが終了することで問題が解決することがある. * スタベーションでは,プロセスが待機し続けるため,問題を解決するためにはシステムの調整が必要である. #### ◆デッドロックの発生3条件【難】 * 共有不能な資源をめぐって競合が起きている * 資源が部分的に要求可能である. * 一度獲得した資源を強制的に取り上げられない * 上記が同時に発生した場合,デッドロックは発生する #### 43. マルチプログラミングシステムに於いて,タイムスライスの長さをどんどん短くすると,どのような問題が発生するか.どんどん長くしたらどうか.☆ * タイムスライスを短くすると,割込み数が増加するので,プロセスの処理速度が低下する(オーバーヘッドが増加する). * タイムスライスを長くすると,ユーザーが次の要求をするまでの時間のムダが増加する. #### ◆46. オペレーティングシステムは,プロセスが別のプロセスのメモリ空間にアクセスするのをどのように防いでいるか.【難】 * オペレーティングシステムは,プロセスに割り付けられたメモリ領域のアドレスの上限と下限を格納している.その上でプロセスの実行時にCPUは,プロセスがメモリを参照するたびに,参照されたアドレスとレジスタの内容を比較して,その参照が定められた領域内に収まっていることを確認する.参照がプロセスに割り当てられた領域の外であることを発見したCPUは,オペレーティングシステムが適切な動作を取れるように自動的に制御をオペレーティングシステムに戻す. #### 48. マルチタスキング用に設計されたCPUは,なぜ異なった権限レベルで動作できるのか #### ◆49. 特権命令によって要求される典型的な動作を2つ特定せよ【難】 * メモリの限界を示すレジスタの内容の変更 * CPUの現在の権限モードを変更する命令 #### ◆51. マルチコアオペレーティングシステムとはなにか.【難】 * 伝統的なタイムシェアリングシステムやマルチタスキングシステムは,人間が認識出来ない速さでタイムスライスを切り替えることで,同時に多くのプロセスが実行しているかのように見せている.これに比べてマルチコアCPUでは,本当に複数のプロセスが同時に実行され,コンピュータの周辺機器やメモリといった資源を共有する.この並列処理を管理するのがマルチコアオペレーティングシステムである.マルチコアオペレーティングシステムのディスパッチャやスケジューラは,どのプロセスがどのコアで実行されているのかを考慮する. #### ◆52. ファームウェアの更新とオペレーティングシステムの更新の違いはなにか☆ * ファームウェアは,基本的にユーザーが書き換えることを想定されていないので,オペレーティングシステムのように簡単にバージョンアップ出来ない.また,ファームウェアの更新は,通常のソフトのバージョンアップとは異なり,書き換えが必要なため時間がかかる. #### ◆53. ウィンドウマネージャは,どのようにオペレーティングシステムと関連するか.【難難】 * ウィンドウマネージャでは,ウィンドウと呼ばれるスクリーンの一部をアプリケーションに割り当てて,どのウィンドウがどのアプリケーションに関連付けられているかの情報を保持する. * アプリケーションが何かをスクリーンに表示する時,その旨をウィンドウマネージャに伝えて,ウィンドウマネージャがそのアプリケーションに割り当てられたウィンドウに要求された画像を配置する. * 例えばマウスボタンが押下されると,ウィンドウマネージャが画面上のマウスの位置を計算して,適切なアプリケーションにマウスの動作を伝える. #### 55. 組み込みシステム用オペレーティングシステムに特有の問題はなにか.☆ * 組み込みシステム用OSでは,1つもしくはごく少数のアプリケーションしか実行できない場合が多い.また,デバイスに搭載したOSはあとから改良しにくく,問題が発生した場合のトラブルシューティングが難しい. ### その他まとめ #### ◆ROMを説明せよ☆ * ROMとは,コンピュータのメインメモリの一部にある,特別に揮発性でないメモリセル領域のことである #### ◆セマフォを説明せよ【難難】 * セマフォとは,複数のプログラムが同時に処理を行う環境(並列処理)で,共有資源に対して同時にアクセスしても問題なく動作できる仕組みのひとつである.共有資源に対するアクセス可能な数を示す値がセマフォである.資源にアクセスするたびにセマフォの値を増減することで,排他制御を実現する. * セマフォとは,クリティカル領域が相互排除を得るために使用するフラグのことである. #### ◆監査ソフトウェアを説明せよ【難】 * システム管理者の監視行為を補助するためのユーティリティソフトウェアである.監査ソフトウェアは,コンピュータシステム内で実行されるプロセスの動作を記録して分析する. #### ◆スニッフィングソフトウェアを説明せよ☆ * コンピュータシステムに潜んで正規のユーザの動作の記録を取り,後に侵入を試みるものに報告するソフトウェアである. #### 用語まとめ * カーネル * オペレーティングシステムの内部部分である.コンピュータの稼働にとって最も基本的な機能を実行するためのソフトウェアが含まれている * ファイルマネージャ * ファイルの場所,アクセス権,利用可能領域といったマスストレージに格納されているすべてのファイルの記録を保持する.これらの記録は,関連するファイルを含むストレージ上に保存されている. * デバイスドライバ * マシンに接続されている周辺機器の操作を実行するために,コントローラと通信するソフトウェアである. * メモリマネージャ * マシンがメインメモリを使用する際の調整を行う.マルチユーザ環境,マルチタスク環境では,コンピュータは一度に多くの要求に答えなければならないので,重要である.メモリの割付,領域の制限,使われなくなった領域の管理を行う. * スケジューラ * コンピュータ中に存在するプロセスの記憶を保持するだけでなく,新たなプロセスを現在プロセスに加え,完了したプロセスを現在プロセスから削除する. * ディスパッチャ * スケジュールされたプロセスの実行を管理する * ページング【難難難】 * 磁気ディスク上に,ページと呼ばれる均一な大きさの単位に分割されたデータを記録し,その上でメモリマネージャが,これらのページをメインメモリとマスストレージの間でやり取りすることで,その時々に必要なページがメインメモリ中に存在するようにする.結果として,実際のメモリ以上のメインメモリを持つかのように動作する * プロセススイッチ * 一つのプロセスから他のプロセスへと変更する手続き * 割り込みハンドラ【難難】 * メインメモリ中の決められた場所に格納されている.ディスパッチャの一部で,ディスパッチャが割り込みシグナルにどのように対応するのかを記述. * クリティカル領域【難難難】 * 一度に1つのプロセスしか実行できない一連の命令部分 * 一度に1つのプロセスしかクリティカル領域を実行できないようにすることは相互排除として知られる * クリティカルセクション (英: critical section) または危険領域は、コンピュータ上において、単一の計算資源(リソース)に対して、複数の処理が同時期に実行されると、破綻をきたす部分を指す。クリティカルセクションにおいては、排他制御を行なうなどしてアトミック性を確保する必要がある。 * 相互排除【難難難】 * 一度に1つのプロセスしかクリティカル領域を実行できないようにすること * 不正な行動から保護するために,CPUは2つの権限レベル(特権モード,非特権モード)のいずれかで動作するように設計されている * 特権モードで実行できる特権命令 * メモリの限界を示すレジスタの内容の変更 * CPUの現在の権限モードを変更する命令 * バッチ処理【難難難】 * 実行中,ユーザの介入無しでジョブを1つのまとまりとして実行すること * 対話型処理【難難難】 * 遠隔端末から対話式にユーザがプログラムを実行できる新しいオペレーティングシステムの機能 ## 第四章 ### 4.1節 #### 開放型ネットワークとはなにか☆ * 開放型ネットワークとは,異なったメーカーが互換性のある製品を製造できるように,仕様とプロトコルが公開されているものをいう. #### ブリッジとスイッチの違いを端的に述べよ.☆ * 両者とも,より大きいバスネットワークを形成するためにバスを接続する.しかしブリッジは,2つのバスを接続し,ブリッジの反対側にある送信先のあるメッセージだけを転送するが,スイッチは,ブリッジとして動作する複数の接続がある. #### ルータとはなにか.☆ * ルータとは,コンピュータネットワークにおいて,データを2つ以上の異なるネットワーク間に中継する通信機器である. ### 4.2節 #### ◆ティア1ISPとティア2ISPの目的はなにか.アクセスISPの目的はなにか.【難難】 * ティア1ISPとティア2ISPは,協調してインターネットの通信インフラストラクチャを提供するルータのネットワークである. * ティア1ISPは国際的な巨大な通信会社によって運営されており,ティア2ISPは地域的に限定されており企業規模は中小である通信ビジネスを行う企業によって運営されている. * アクセスISPは,顧客へこれらへのアクセスを提供する. #### DNSとはなにか.☆ * DNSとは,ニーモニックアドレスからIPアドレスへの翻訳を補助するインターネット全体のネームサーバの総称である. #### インターネット上のサーバの型を3つ列挙して,それぞれの役割を述べよ.☆ * ネームサーバ:ニーモニックアドレスをIPアドレスに翻訳するのを補助する. * メールサーバ:電子メールのメッセージの送受信をして格納する. * FTPサーバ:ファイル転送サービスを提供する. #### インターネットラジオに対するP2Pアプローチとマルチキャストアプローチは,Nユニキャストアプローチとどのように異なっているか.【難難】 * Nユニキャストでは,1人の送信者が複数のユニキャストを実行する.しかしこれは,送信局のサーバのみならずインターネット上でサーバのすぐ近くにあるコンピュータにも重大な負荷を貸してしまうという短所があった. * P2Pアプローチとマルチキャストアプローチはこの問題を解決する. * マルチキャストでは,配信をルータによって行う.マルチキャストを使用することで,サーバは1つのメッセージを複数のクライアントに1つのアドレスを使って送信できる.インターネット中のルータは,そのアドレスを見てメッセージのコピーを複数の受け手に転送する. * P2Pはクライアントのコンピュータによって行う.ある1つのピアがデータを受け取ったのならば,次はそのピアが送信側に回る #### ◆VoIPの4つの型のいずれかを選ぶとき,どのような基準を考慮すべきか.【難難難】 * VoIPは,VoIPソフトフォン,アナログ電話アダプタ,組み込みVoIPフォン,次世代スマートフォンがある. * 評価基準としては,費用,携帯性,コンピュータを電話として使用する実用性,既存のアナログの電話を保持する必要性,緊急時の911サービス,そしてさまざまなプロバイダの信頼性やサービス地域等を考慮すべきである. * VoIPソフトフォン * スピーカーとマイク以外の特別なハードウェアを必要としないで,2つ以上のPCが1つの通信を共有出来るようにするP2Pソフトウェアから構成される * 例としてスカイプがある. * アナログ電話アダプタ * 伝統的な電話を,アクセスISPが提供する電話サービスに接続できるようにする装置のこと * 組み込みVoIPフォン * TCP/IPに直接接続できる受話器のこと.大規模な組織では広く使用されている. * 次世代スマートフォン * IPに基づいたネットワークとして設計されている.つまり,世界的なインターネット上の1つのホストコンピュータそのものである. ### 4.3節 #### ◆URLとはなにか.ブラウザとはなにか.☆ * URLとはワールドワイドウェブ内のドキュメントアドレスである. * ブラウザとは,ユーザがハイパーテキストにアクセスするのを補助するプログラムである. #### マークアップ言語とは何か.☆ * マークアップ言語とは,ドキュメントに説明情報を挿入するシステムである. #### HTMLとXMLの違いはなにか.☆ * HTMLは特定のマークアップ言語である.XMLはマークアップ言語を生産する規格である. #### クライアントサイドとサーバサイドとはそれぞれ何を指しているのか☆ * クライアントサイドとサーバサイドとは,実行される活動がクライアントのコンピュータ上で実行されるかサーバのコンピュータで実行されるかを示すのに使用される用語である. ### 4.4節 #### インターネットソフトウェア階層で,ルータに必要の無い層はなにか.☆ * リンク層は,メッセージを受け取りネットワーク層にそれを手渡す. * ネットワーク層は,メッセージをどの方向に転送するかを決定し,転送のためにメッセージをリンク層に返す. * これより上位の層は,経路制御には必要ない.しかし高度なルータは,選択的フィルタリング等の追加サービスを提供するためにトランスポート層やアプリケーション層を使用することもある. #### TCPプロトコルに基づくトランスポート層と,UDPに基づくトランスポート層では,何が異なっているのか.☆ * TCPと異なりUDPは,メッセージが目的地で受け取られたことを確認しないコネクションレスプロトコルである. #### ◆どのようにしてトランスポート層は,アプリケーション層のどのユニットがメッセージを受け取るか決定するのか.☆ * トランスポート層は,トランスポートプロトコルポート番号を使用して,アプリケーション層中のどのユニットがメッセージを受け取るかを決定する. #### 何が,インターネット上のコンピュータが通過するメッセージを記録するのを防いでいるか.☆ * なにもない.ホストのプログラマはだれでも,そのような記録を採取するようにそのホストのソフトウェアを変更できる.これが,秘密データは暗号化すべき理由である. ### 4.5節 #### フィッシングとはなにか.コンピュータはどのようにそれを防いでいるか.☆ * フィッシングとは,ユーザの銀行や企業のIT部門等の正当な実体なふりをして,電子メールを通じてパスワードやクレジット番号等の機密情報を得る技法である.コンピュータはフィッシングに対して安全ではない.ユーザは,適切な検証なしに,第三者に秘密のデータを明かすとき,正しい判断をくださなければならない. #### ドメインのゲートウェイに設置されるファイアウォールの型と個別のホスト上のファイアウォールの型では,何が違うのか.☆ * ドメインのゲートウェイは,単にパケットを転送するルータである.したがってゲートウェイのファイアウォールは,内容でフィルタに掛けることができないので,アドレス情報でフィルタに掛ける. #### 公開鍵暗号は,従来の暗号方法に比べてどこが優れているのか.☆ * 公開鍵暗号システムでは,メッセージをどのように暗号化するのかを知っているだけでは,メッセージを解読することはできない. #### ネットワークセキュリティの問題に法的に対処しようとしたときの問題はなにか.☆ * ネットワークセキュリティの問題は,国際的な性格を持つ.したがって単一の政府の法では規制できない.更に法律上の救済手段は,損害を予防するのではなく被害者に補償を提供するだけである. ### 演習問題 #### ◆2. クライアントサーバモデルを説明せよ☆ * クライアントサーバモデルとは,機能やサービスを提供するサーバと,それを利用するクライアントとを分離し,ネットワーク通信によって接続する,コンピュータネットワークのソフトウェアモデルである. #### ◆3. ピアツーピアモデルを説明せよ【難】 * 不特定多数の端末がサーバを介さずに,端末同士で直接データファイルを共有することが出来る技術,またはソフトウェアのことを指す.サーバを介さずコンピュータ同士を直接接続して通信するため,通信スピードがクライアントサーバモデルと比べて速い.また,P2Pでやりとりされるデータは個々のコンピュータに存在するため,自然とデータが分散管理され,それぞれのコンピュータにかかる負荷も少なくなる.また,通信を行うコンピュータだけが動作していれば通信はいつでも可能となる. #### ◆4. 3種類の分散コンピューティングシステムを説明せよ【難】 * クラスタコンピューティング * 多くの独立したコンピュータが密接に統合して作業を進めることで,大型コンピュータに匹敵する計算能力やサービスを提供する分散システムをいう. * 高い可用性が求められるシステムで使用される.また,負荷分散システムとしても使用される * グリッドコンピューティング * クラスタ程密接に結合されているのではなくゆるく結びついたマシンが,大規模な作業を遂行するシステムを言う. * 数百万の家庭用PCを分散グリッドコンピューティングによって稼働させて,きわめて複雑な科学の問題を解くことが可能となってきている * クラウドコンピューティング * ネットワーク上で共用されるきわめて多くのコンピュータを顧客の要望に応じて割り当てる方式の分散システムであり,分散システムの最近の傾向になっている. #### 5. 開放型ネットワークと閉鎖型ネットワークの違いはなにか.☆ * 開放型ネットワークは,ネットワークの内部構成と動作がパブリックドメインな設計に基づいており,閉鎖型ネットワークは特定の個人や企業が所有し制御する技術に基づいている. #### ◆6. なぜCSMA/CDプロトコルは,無線ネットワークに適用できないのか☆ * CSMA/CDプロトコルでは,他のマシンが同時に通信を始めたとき,どちらのマシンも衝突を検出して,それぞれランダムに選んだ短時間の休止をはさんで再度送信を試みるが,無線ネットワークでは,マシンが自分の送信と他のマシンの送信が衝突したことを検出できないため. #### ◆7. CSMA/CDを用いてネットワークにメッセージを送信しようとするマシンが行うことを,ステップに分けて説明せよ.☆【難難】 * CSMA/CDでは,すべてのメッセージはバス上の全てのマシンへと一斉に送信される. * 各マシンはすべてのメッセージを監視しているが,自分あてのメッセージだけを取り出す. * メッセージを送信するのにマシンはバスが静かになるまで待って,バスの監視を続けながらメッセージがバス上にないところを見計らって送信を開始する. * 他のマシンが同時に通信を始めたとき,どちらのマシンも衝突を検出して,それぞれランダムに選んだ短時間の休止をはさんで再度送信を試みる. #### ◆8. 隠れ端末問題とはなにか.それを解決するための技法を述べよ.☆ * 無線通信において,2つの送信端末がその中間に位置する受信端末に同時にデータを送信することによって,電波の衝突が発生し,受信端末がデータを受信できなくなる問題の事.送信端末間の距離が遠かったり,間に電波を通しにくい障害物があったりする場合などに,送信端末同士がお互いの存在に気付かずに送信を開始することが原因で発生する. #### ◆10. ルータは,リピータ,ブリッジ,スイッチといった装置と何が違うのか.☆【難】 * リピータは,信号の意味を考慮せずに,元の2つのバスの間で相互の信号を渡す装置である. * ブリッジもリピータと似た装置であるが,すべてのメッセージを渡すわけではなく,メッセージに付加されている送信先のアドレスを見て,もう一方の側のコンピュータがそのメッセージの受け取り手であるときに限ってメッセージを送信するものである. * スイッチは,複数の接続をもつブリッジであり,単に2つのバスではなく複数のバスを連結できる. * ルータは,ネットワークをつないでインターネットを構築するための装置である.ルータはメッセージ転送専用のコンピュータである.データを2つ以上の異なるネットワーク間に中継する通信機器であり,データをネットワーク層でどのルートを通して転送すべきかを判断するルート選択機能を持つ. #### 11. ネットワークとインターネットでは,何が異なるのか.☆ * ネットワークとは,コンピュータ同士の接続を表す. * インターネットは世界中のネットワークの集まりを表す. #### 12. メッセージをネットワークに送信する権利を制御する,2つのプロトコルを述べよ.☆ * CSMA/CD(Carrier Sense Multiple Access with Collision Detection) * CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance) #### 17. DNSルックアップとはなにか☆ * DNSを用いて変換を行うプロセスのことである #### 20. VoIPの文脈において,アナログ電話アダプタと組み込み電話の違いはなにか.☆ * アナログ電話アダプタとは,ユーザが自分の伝統的な電話をアクセスISPが提供する電話サービスに接続できるようにする装置である. * 組み込み電話はTCP/IPネットワークに直接接続できる受話器である. #### 22. Nユニキャストとマルチキャストの違いはなにか【難】 * Nユニキャストは1人の送信者が複数のユニキャストを実行することをいう.マルチキャストとは,特定のアドレスを指定して,一対複数で行われるデータ通信である. #### ◆23. 「アクセスISP」,「ゲートウェイ」,「エンドシステム」の用語を説明せよ【難】 * アクセスISP * イントラネットと呼ばれる独立したインターネットであり,個々のユーザーにインターネットアクセスを提供する個別の企業によって運営されている.ティア1ISPやティア2ISPへのアクセスを提供する. * ゲートウェイ * あるネットワークがインターネットに連結される「地点」のこと * エンドシステム * 個々のユーザーがアクセスISPに接続するための装置 #### ◆24. 「ハイパーテキスト」の用語を説明せよ.【難難】 * ハイパーテキスト * コンピュータを利用した文書作成・閲覧システムの1つで,複数の文書を相互に関連付け,結びつける仕組み.文書の他にも,画像,図表,音声などもリンクできる. #### 25. インターネットとワールドワイドウェブそれぞれを説明せよ【難難】 * インターネット * インターネットプロトコル(IP)を利用して,世界中のコンピュータと相互接続するネットワークを指す用語である. * ワールドワイドウェブ * インターネット上で提供されているハイパーテキストシステムである.世界中に広がる複数のネットワークを相互に接続して構築された巨大なネットワークのことである. #### ◆38. OSI参照モデルを説明せよ☆【難】 * OSI参照モデルとは,コンピュータが通信するために利用するネットワークの機能を7つの階層に分類して,整理したモデルのことである.階層ごとに通信プロトコルが定義されている.データの形式やパケットの構成,エラーが生じたときの対処方法などが取り決められている. #### 39. バストポロジーに基づくネットワークでは,バスはマシンがメッセージを送るために競合する共有不能資源である.デッドロックは,どのように制御されているか.☆ * One way is to use the CSMA/CD protocol. #### ◆40. インターネットソフトウェア階層構造の4つの層を列挙せよ.各層によって実行される動作を述べよ.【難難難】 * リンク層 * 実際のネットワークハードウェアが通信を実現するための層.パケットの送信,受け取りを行う. * ネットワーク層 * 複数のネットワークを相互に接続した環境で,機器間のデータ転送を実現する.起点では各パケットに中継アドレスを割り当て,終点ではパケットが最終目的地に到着したことを検知する. * トランスポート層 * 通信を行うプログラム間でのデータ伝送を実現する.起点ではメッセージをパケットに分割し,終点ではパケットを集めてメッセージを再構成する. * アプリケーション層 * 個々のプログラムの間で,どのような形式や手順でデータをやり取りするかを定める.起点ではメッセージを準備して宛先アドレスを指定する.終点ではメッセージを受け取る. #### 41. なぜトランスポート層は,大きなメッセージを小さいパケットに分割するか.☆ * メッセージが長いと,多くのメッセージが交差するインターネットルータにおいて,他のメッセージの流れを阻害してしまうから. #### ◆42. アプリケーションがトランスポート層に,TCPを使用してメッセージ送信を依頼するとき,アプリケーション層の要求を実現するためトランスポート層は,どのような追加メッセージを送るか.【難難】 * TCPに基づくトランスポート層では,受信側のトランスポート層に,これからメッセージを送る旨のトランスポート層独自のメッセージを送信する.その上でそのメッセージに対する受信確認の応答を待ってから,アプリケーション層のメッセージを送信する.このようにしてTCPに基づくトランスポート層は,メッセージ送信前に接続を確立すると言われる. #### ◆43. トランスポート層を実装するため,TCPはUDPよりどのように優れたプロトコルだと考えられるか.UDPがTCPよりどのようにすぐれていると考えられるか.☆ * TCPは,通信相手の状態を確認しながら通信を行う方式である.また,相手から一定時間経過しても返信が返って来ないときは,再送する仕組みもある.よって信頼性の高い通信である.しかし,通信相手からの応答を待つため,UDPに比べると通信速度は遅くなる.UDPは速度を重視した通信プロトコルであるため,データの信頼性が低くなる.またヘッダ形式の観点で考えると,TCPよりUDPは構成がシンプルである. #### ◆47. プロキシサーバとはなにか.その利点はなにか.【難難】 * プロキシサーバとは,インターネットへのアクセスを代理で行うサーバのことである.プロキシサーバを用いることで,自分の情報の匿名性が高まり,キャッシュによりサイト表示の高速化が期待できる.また,アクセスログを確認することができる. #### 48. 公開鍵暗号の原理を要約せよ.☆ * 公開鍵暗号方式では,「公開鍵」と「秘密鍵」の2つの鍵を利用してデータのやり取りをおこなう.まず受信者が秘密鍵を使って公開鍵を作成する.次に,送信者は受信者の公開鍵を取得する.そして,平文を送信者が公開鍵を使って暗号化し送付する.最後に受信者が暗号文を受け取り,秘密鍵を用いて平文に復号化する. ### その他まとめ #### ◆ドメイン(名)とは【難】 * ドメイン名は,IPネットワークにおいて,個々のコンピュータを識別し,接続先を指定するために使用される名称の一部である.インターネットにおいては,世界中で絶対に重複しないようにするため,ICANNにより一元管理されており,DNSによりドメイン名を含むホスト名とIPアドレスとの変換が実行されている. #### ◆メールの送受信で用いられているプロトコルであるSMTP,MIME,POP3,IMAPそれぞれを説明せよ☆【難】 * SMTP * メールサーバ間でメールを転送したり,ローカルマシンからメールサーバへ新しいメッセージを送信したりするときに使用されるプロトコル * MIME * SMTPはASCIIコードで符号化されたテキストを転送するためだけに設計されたので添付機能がない.ASCIIコードではないデータをSMTPで扱えるようにするために作られた追加のプロトコルである. * POP3,IMAP * どちらもユーザのメールサーバに蓄積された電子メールにアクセスする際に用いられるプロトコルである.POP3はメールを端末にダウンロードする方式,IMAPはメールをサーバ上で管理する方式である. #### ◆ファイル転送プロトコル(FTP)を説明せよ【難難】 * FTPとは,インターネット間でファイルを転送するクライアントサーバプロトコルである.FTPを使ってファイルを転送するためにインターネットの一方のコンピュータのユーザはFTPを実装しているソフトウェアパッケージを用いてもう一方のコンピュータとの接続を確立しなければならない.接続が確立されたならば,2台のコンピュータ間でどちらの方向にもファイルを転送できる. #### ◆telnetとセキュアシェルを説明せよ☆ * telnetとは,ネットワークに接続された機器を遠隔操作するために使用するプロトコルである.telnetによる通信は暗号化されていないという欠点がある. * セキュアシェル(SSH)とは,telnet同様に遠隔の機能を持つが,転送されるデータの暗号化と認証を行う.認証とは,通信する者同士が詐称していないことを確認するプロセスである. #### ◆TCPにおけるフロー制御と輻輳制御を説明せよ【難難】 * フロー制御とは,メッセージの送信元のトランスポート層が,セグメントを送出する転送レートを下げることで,受信側のトランスポート層が圧倒されて機能不全に陥るのを防ぐことである. * 輻輳制御とは,メッセージの送信元のトランスポート層が,転送レートを調整して送信側と受信側の間の混雑を緩和させることである #### ◆攻撃の形式を説明せよ【難】 * ウイルス * マシン上にすでにあるプログラムに潜り込むことでコンピュータに感染するソフトウェア * ワーム * ネットワーク中で自分自身を転送する自律的なプログラム * トロイの木馬 * ゲームや便利なユーティリティパッケージのような好ましいプログラムに偽装してコンピュータシステムに侵入するプログラム * スパイウェア * 寄生するコンピュータ上で行われていることの情報を収集して,攻撃を企んでいる人物に報告するソフトウェアである * サービス拒否攻撃(DoS攻撃) * 多量のメッセージを送りつけることにより,コンピュータを高負荷にするプロセスである. #### ◆認証局を説明せよ【難】 * ウェブサイトやその他の独立した存在などに,デジタル証明書を発行する信頼出来る組織のこと.デジタル証明書(公開鍵証明書)とは,公開鍵とその所有者の同定情報を結びつける証明書である.通常「公開鍵証明書」と呼ばれるものには,公開鍵そのもののデータも含まれている. #### 用語まとめ * ネットワーク・トポロジー【難難】 * バス型 * バスと呼ばれる共通の通信経路にすべてのマシンが接続されている * ハブで各コンピュータが連結される形態で構成されることもある * スター型 * 一台のマシンが中心となって他のすべてのマシンがそのマシンに接続される * 通信手段に電波を用いて,アクセスポイントと呼ばれるセントラルマシンが中心点となって周辺のすべての通信を調整する無線ネットワークにおいて利用 * ハブ * 受け取ったすべての信号を,ハブに接続されているすべてのマシンに転送する * 転送表【難難】 * 各ルータは,目的のアドレスに従ってメッセージを,どの方向へ転送するかの情報を含む転送表を保持 * 分散システム * 異なるコンピュータ上のプロセスとして実行されるソフトウェアユニットから構成されるシステム * TCP/IPプロトコルスイート【難難】 * インターネットの実装で使用されている4レベルの通信階層を実現するための一連のプロトコル標準.これではトランスポート層を実装するのにTCPとUDPの2通りの方法を提供している. * インターネットプロトコル(IP) * インターネットを通じてパケットを中継する転送と,状況の変化に応じてネットワーク層の転送表を更新する経路制御から構成される. * ファイアウォール【難難】 * ネットワーク中のある点を通過するデータにフィルタを掛けるプログラム.ドメイン中のアドレスからゲートウェイを通じて入ってくるメッセージを阻止する * SSL【難難】 * インターネットなどのコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコル.HTTPSの核となる部分である ## 第五章 ### 5.1節 #### プロセスとアルゴリズムとプログラムの違いを要約せよ * プロセスとは,アルゴリズムを実行する活動である.プログラムは,アルゴリズムの表現である. ### 5.2節 ### 5.3節 ### 5.4節 ### 5.5節 ### 5.6節 ### 演習問題 #### 13. 形式的プログラミング言語と擬似コードの違いはなにか.☆ * 擬似コードは,アイデアを書き留めるために使用され,文法がゆるい.形式的プログラミング言語は,従わなければならない厳格な文法規則を定めている. ### その他まとめ #### ◆アルゴリズムの定義を述べよ☆ * アルゴリズムとは,停止するプロセスを定義する,曖昧さがなく実行可能なステップの順序集合である ## 第六章 ### 6.1節 #### アセンブラとコンパイラの違いはなにか.【難】 * アセンブラはソースプログラムの各命令を単一のマシン命令に翻訳するのに対して,コンパイラは,1つのソースプログラムの命令から多くのマシン語を命令を生成することが多い. #### ◆命令形,宣言型,関数型,オブジェクト指向型のそれぞれについて,考え方を要約せよ. * 命令形 * 手元の問題の回答をどのように導くかのプロセスの記述を強調するもの * 宣言型 * 解決すべき課題の記述を開発するのに基づく * 関数型 * 小さな問題の解で問題の解を記述する * オブジェクト指向型 * 問題環境の構成要素の記述を強調する ### 6.2節 #### リテラルよりも定数を使用するほうが,すぐれたプログラミングスタイルと考えられるのはなぜか.☆ * 記述的な定数を使用すると,プログラムの可読性が向上する. #### 宣言文と命令文の違いはなにか.☆ * 宣言文は用語を記述する.命令文はアルゴリズムを記述する. #### 基本的なデータ型を列挙せよ.☆ * 整数,実数,文字,ブール値 #### 命令型プログラミング言語とオブジェクト指向プログラミング言語で共通する制御構造はなにか☆ * if-then-else構造とwhileループ構造 #### 配列と構造体の違いは何か☆ * 配列の要素はすべて同じ型である ### 6.3節 #### 変数の有効範囲とはなにか☆ * 変数の有効範囲とは,その変数にアクセスできるプログラムの範囲である. ### 6.4節 #### ◆コンパイルの主要なステップを3つ述べよ【難】 * 字句解析 * ソースコードを読み,どの記号のグループがトークンを表しているか識別し,それらのトークンを数値,単語,算術演算子等へと分類する.字句解析器は,これらを分類に従って符号化して構文解析器へと渡す. * 構文解析 * 構文解析では,プログラムの文法構造を識別し,各構成要素の役割を認識する.構文木や抽象構文木のようなデータ構造を生成し,コード生成のプロセスに渡す. * コード生成 * 構文解析が認識した文から,オブジェクトプログラムにおける命令を生成する.必要に応じてコードの最適化を行う. #### 記号表とはなにか☆ * 記号表とは,構文解析器がプログラムの宣言文から得た情報の記録である. ### 6.5節 #### オブジェクトとクラスの違いはなにか.☆ * クラスはオブジェクトの記述である #### ◆コンストラクタとはなにか☆ * コンストラクタとは,クラスからインスタンスが作成されるときに実行される特別なクラスメソッドである #### クラスのなかで非公開等する項目があるのはなぜか☆ * クラス中の項目によっては,他のプログラムユニットがそれらの項目に直接アクセスするのを妨げるために非公開とする.項目が非公開であるならば,その項目の変更の影響はクラスの内部に限定される. ### 6.6節 ### 6.7節 ### 演習問題 #### ◆1. プログラミング言語がマシン独立であるとは,どういう意味か.☆ * プログラミング言語が特定のマシンの性質に依存しないこと. #### ◆6. 4つのプログラミングパラダイムを列挙して説明せよ.【難難】 * 命令形パラダイム * プログラミングのプロセスを一連の命令を作成するものと位置づけ,それに従うことによって求める結果が生成されるようにデータを加工していく.問題を解くアルゴリズムを発見した上で,そのアルゴリズムを一連の命令列として表現するプログラミングプロセスを採用する. * 宣言型パラダイム * 問題解決のアルゴリズムではなく,解くべき問題を記述する.つまり,問題を解くのにすでに確立されている汎用問題解決アルゴリズムを適用する. * 関数型パラダイム * このパラダイムによるプログラムは,小さな既定義のプログラムユニットを,各ユニットの出力が別のユニットの入力として使用され,それにより求める全体としての入力出力関数が得られるように連結することにより構成される. * オブジェクト指向パラダイム * オブジェクトと呼ばれる単位の集合が相互作用することによって問題を解決する. #### 10. マシン語とアセンブリ言語の違いを要約せよ.★ * 機械語はコンピュータ自身が命令を直接理解し,実行することができる言語のことである.アセンブリ言語は機械語にほぼ一対一で対応し,英語や記号で表現されるプログラミング言語のことである. #### 12. ジョン・プログラマは,プログラム中で定数を宣言する必要はないと主張する.なぜなら,定数の代わりに変数を使用すれば良いからだという.これはなぜか. #### ◆13. 宣言文と命令文の違いを要約せよ.【難難】 * 宣言文 * データ項目を参照するのに使用される,名前のようなプログラム中で使用される用語の定義 * 命令文 * アルゴリズムのステップの記述 #### 14. リテラル,定数,変数の違いを説明せよ.★ * リテラル * 値の明示的な出現(12,546など) * 定数 * 特定の変更が出来ないようにした,記述的な名前のついた値 * 変数 * 特定の変更ができる,記述的な名前のついた値 #### ◆16. 構造化プログラミングとはなにか【難】 * 「順次」,「反復」,「分岐」という単純な制御構造を「手続き」というい単位でまとめることで抽象化し,その手続をさらにまとめてより抽象的な「手続き」を作る,といった階層構造によってプログラミングするパラダイムのことである. #### ◆25. コンパイラとインタプリタの違いを要約せよ.【難】 * コンパイラは,ソースコードを実行可能な形式に変換するプログラムのことである.ソースコード全体を一度に変換し,その結果を実行ファイルとして出力する. * インタプリタは,ソースコードを読みながらその場で実行してくれるプログラムである.インタプリタでは変換と実行が並行して行われるため,コンパイラのように実行ファイルは作られないが,実行時には毎回ソースコードを必要とする. #### 27. プログラミング言語が強く型付けされるとは,何を意味しているか.★ * 強く型付けされたプログラムが実行するすべての動作は,必ず型が合致するデータについて行われるというものである #### 28. 大きな配列を,なぜ値渡しで手続きに渡さないのか★ * 大きな配列を値渡しで渡すと,コピーによるコストが非常にかかる.よって,引数の参照渡しをするとよい. #### 32. 参照渡しと比較して,引数の値渡しの利点はなにか.また逆の場合の利点を述べよ.★ * 引数渡しは,参照渡しと比べて,ソースコードがすっきりして見やすく,初学者が理解しやすい.参照渡しの利点は,関数の中で呼び出し元の変数の値を取得したり変更したりすることができる.また,関数の呼び出しが速い. #### 48. オブジェクト指向プログラミングにおいて,型とクラスはどのように類似しているか.どのように異なっているか.★ * 複数のオブジェクトに共通する性質を記述するという意味で,型とクラスは似ている.しかし型には継承などの概念はない. #### 50. クラスの公開部と非公開部の違いはなにか.★ * クラスの非公開部への内部的なアクセスは制限される. #### ◆51. インスタンス変数を非公開とするべき例,公開するべき例を示せ.またメソッドを非公開とするべき例,公開するべき例を示せ.☆ * インスタンス変数を非公開とするべき例 * クラス内部でのみ使用される変数 * 値が不適切に変更されるとクラスの動作がおかしくなるような変数(銀行口座の残高などの情報) * 公開するべき例 * クラスの外部から自由に読み書きしても問題が無い変数 * 外部からのアクセスが必要な変数 * 例としては,人間のクラスで名前や年齢などの情報 * メソッドを非公開とするべき例 * 計算途中の結果を返すメソッドのような,外部から呼び出されると不適切な状態になる可能性があるメソッド * 公開するべき例 * 外部から呼び出すことを想定しているメソッド * 預金,引き出し,残高確認などの機能を提供するメソッドなど #### ◆54. 並行処理をサポートするプログラミング言語で使用できることが望ましい,並行処理の特性はなにか.【難難難】 * 新しいスレッドの生成,スレッドの停止と再開始,クリティカル領域の指定,モニタの構成,排他的アクセス ### その他まとめ #### ◆ポリモーフィズムとは☆ * ポリモーフィズムとは,オブジェクト指向プログラミングにおける特徴の1つであり,ある1つのメソッドの呼び出しに対して,オブジェクトごとに異なる機能や動作を示すことを指す.   #### 用語まとめ * 曖昧な文法 * 1つの文字列から2つの構成木の生成を許してしまう文法 ## 第七章 ### 7.1節 #### ソフトウェアユニットのなかにどれだけの誤りがあるのかを判断するのに,どのような技法を用いることが出来るか☆ * 1つのアプローチは,ソフトウェアのエラーの個数を見積もるために,設計時に故意にいくつかの誤りをソフトウェアに含めることである.そのうえで,デバッグ後に元の誤りがまだいくつ残っているかを検査する. ### 7.2節 #### ソフトウェアライフサイクルの開発フェーズにおける4つの段階(要求分析,設計,実装,テスト)をそれぞれ要約せよ * 要求分析・・・提案システムがどのようなサービスを提供するかを特定して,そのサービスを提供するに際しての条件を識別して,かつ外部世界がどのようにそのシステムと相互作用するかを定義することである. * 設計・・・システムがどのように目標を達成するかに焦点をおいている * 実装・・・実際のプログラミング,データファイルの作成,データベースの開発などを行う. * テスト・・・最終的なソフトウェア製品がソフトウェア要求仕様書と一致していることを確かめる. #### ソフトウェア要求仕様書の役割はなにか☆ * これから開発されるソフトウェアの要件と仕様について記述したクライアントとソフトウェア会社との一種の契約書である ### 7.3節 #### ソフトウェア開発の伝統的なウォーターフォールモデルと新しいインクリメンタルモデルや反復モデルの違いを要約せよ☆ * 伝統的なウォーターフォールアプローチでは,各フェーズが線形に実行され,前フェーズに戻ることはない.新しいモデルでは,より柔軟な試行錯誤のアプローチを許容する. #### 伝統的な進化型プロトタイピングとオープンソース開発の違いはなにか☆ * 伝統的な進化型プロトタイピングは,ソフトウェアを開発する組織の中で実行されるが,オープンソース開発は組織に制限されない.オープンソース開発の場合では,開発全体を見渡している人は,必ずしもどのように拡張するかを決定しているわけではないが,伝統的な進化型プロトタイピングの場合では,ソフトウェア開発の管理者は,特定の拡張ごとに人員を割りあてる. ### 7.4節 #### 凝集度を最大化するという目標は,結合度を最小化することと一致するか.つまり,凝集度が高くなると,結合度は自然と低下するか.☆ * 複数の観点がある.例えば,1つのモジュールにすべてを詰め込むことから始めることができる.その結果は,凝集度はほとんどなく,結合度はまったくない.次に,この1つのモジュールを分割し始めると,結合度は増加する.したがって,凝集度が増加すると結合度も増加する傾向があると結論を下しても良いかもしれない.その一方で手元の問題が,自然に非常に凝集度の高い3つのモジュールに分割できると仮定する.これをモジュールA,B,Cとよぶ.当初の設計がこの自然な分割になっていない(たとえばAの作業の半分がBの作業の半分と一緒にされてしまう等)ならば,凝集度は低いが結合度は高いということができる.この場合,作業A,B,Cをそれぞれ別のモジュールに隔離するようにシステムを再設計すると,モジュール間の結合度は低下し,モジュール内の凝集度は増加する.すげえ #### 結合度,凝集度,情報隠蔽を定義せよ.☆ * 結合度とは,モジュール相互がどれほど結合しているかということである.凝集度とは,モジュール内の結合の強さである.情報隠蔽とは,情報共有を制限することである.びっくり ### 7.5節 #### ソフトウェア工学プロセス中で,デザインパターンが果たす役割は何か.☆ * デザインパターンは,頻繁に現れるソフトウェアのテーマを実装するための,標準化され開発の進んだアプローチを提供する.提供でおおくりされました! ### 7.6節 #### ソフトウェア開発の組織中でSQAグループが果たす役割はなにか. * SQA(ソフトウェア品質保証)グループは,組織によって採用された品質管理システムを監督し実施する.つついともやかんとく!!!!!!5連勤 * SQA(ソフトウェア品質保証)グループの主な役割は、ソフトウェア製品の品質が要件や規格を満たしていることを確認することです。SQAグループの活動は、ソフトウェア開発ライフサイクル全体にわたって行われます。 #### 人間の性質は,品質保証に対してどのように不利に働くか☆ * 人間には,プロジェクトを通して行ったステップ(決定,活動等)を記録しない傾向がある(また人格の対立,嫉妬,そしてエゴの衝突の問題もある). #### 品質向上のために,開発プロセスを通して適用される2つのテーマはなにか.☆ * 記録の採取と保持,そしてレビュー #### ソフトウェアをテストするとき,エラーを発見するのとしないので,どちらが成功したテストか.☆ * ソフトウェアテストの目的は,誤りを見つけることである.つまりある意味では,誤りを見つけられないテストは失敗である. #### テストを集中するべきシステム中のモジュールを特定する技法を提案せよ.☆ * モジュール内の分岐の数を考慮しても良い.たとえば,多くのループとif-then-else文を含む手続きモジュールは,単純な論理構造のモジュールより誤りが多い可能性がある. #### 100以下の要素のリストを整列するように設計されているソフトウェアパッケージに施す,優れたテストはなにか.☆ * 境界値分析法によると,要素数が100のリストと要素のないリストでテストするのが良い.すでに正しい順序で整列されているリストでテストを実行するのも良い. ### 7.7節 #### どのような形式で,ソフトウェアは文書化されるか☆ * ドキュメンテーションは,ユーザドキュメンテーション,システムドキュメンテーション,および技術文書の形を取る.ソフトウェアに付随したマニュアルもドキュメンテーションである.ソースプログラム中ではコメントときれいに記述されたコードであり,プログラム自体が端末に表示する対話的なメッセージも,そしててデータディクショナリもドキュメンテーションである.そして構造チャート,クラス図,データフロー図,実体関連図などの設計文書はもちろんドキュメンテーションである. #### システムドキュメンテーションが整えられるのは,ソフトウェアライフサイクルのどのフェーズか.☆ * 開発フェーズと変更フェーズの両方である.重要な点は,プログラムに変更を加えた際には,元のプログラムと同じくらい徹底的に記録し文書化しておかなければならないということである. ### 7.8節 #### ヒューマンコンピュータインターフェースの分野で,エルゴノミクスとコグネティクスの適用例を述べよ.☆ * エルゴノミクスとは,人間の生理的機能と調和するシステムの設計を扱う工業分野である * コグネティクスとは,人間の精神的機能と調和するシステムを扱う工業分野である. * エルゴノミクスの適用例:ディスプレイの傾斜角度やマウスの形を調整できること.スマートフォンにおいては,マウスの代わりのタッチスクリーンの使用,あるいは電話を傾けて入力すること. * コグネティクス:ツールバー,スクロールエレベータ,プルダウンメニューといったものの設計を含むディスプレイ上のウィンドウのレイアウト.スマートフォンでは,対象物にカメラを向けるのに人間が考えるようにカメラを傾ける. #### ヒューマンコンピュータインターフェースを設計するとき,考慮しなければならない3つの人間の特性はなにか☆ * 習慣の形成,注意力の狭さ,限られた多重処理能力 ### 7.9節 #### 要求仕様書,設計文書,ソースコード,最終製品,それぞれの著作権表示の意味はなにか.☆ * 著作権表示とは,その作品の所有権を主張し,作品を使用する権限を認めるものである.要求仕様書,設計文書,ソースコード,最終製品を含む全てが,それを生産するために投下されたかなりの資本の成果物である.個人か企業かを問わず,所有権を保護し知的財産権が無断で使用されないことを保証する手段を講じるべきである. #### 著作権法と特許法は,それぞれどのように社会の利益になるように設計されているか☆ * 著作権法と特許法は,新製品を開発した人がそれを広く社会に利用可能とするよう推奨するので,社会の利益になる.そのような保護がなければ,会社は新製品への大きな投資をためらうだろう. #### 裁判所が認めない免責条項は,どの範囲か.☆ * 免責条項は,過失に対して会社を保護しない. ### 演習問題 #### 2. 進化型プロトタイピングとはなにか.☆ * 進化型プロトタイピングは,開発したプロトタイプを使用し,継続的に改良して完成させていく手法である.リスクを最小に抑えるため,開発側で理解が不足している機能に関しては実装せず,部分的に実装されたシステムをユーザー側に渡して検証する. #### 7. ソフトウェア開発の伝統的なウォーターフォールの短所・長所を指摘せよ.☆ * 長所:プロジェクト全体の計画が立てやすい,予算や人員の手配がしやすい,進捗管理がしやすい * 短所:手戻りが発生すると工数が増える,ユーザーの意見を取り入れにくい,プロジェクトが完了しないとテストができない #### 8. オープンソース開発は,トップダウン方法論かそれもボトムアップ方法論か.☆ * ボトムアップ方法論 #### 9. リテラルよりも定数の使用が,どのようにソフトウェアの保守を簡素化できるかを説明せよ.☆ * プログラムの意図をより明確に表現できるので,可読性が向上する.また,リテラルを使用する場合,同じ値がプログラム内の複数の場所で使用されている場合,値を変更する際に複数の箇所を変更する必要がある場合があるが,定数を使用することで,値が変更される必要がある場合には,単一の定数の値を変更するだけで済む. #### 10. 結合と凝集の違いはなにか.どちらを最小化して,どちらを最大化すべきか.それはなぜか.☆ * 凝集度とは,クラスやパッケージ内の機能要素と情報要素間の関連性の強さを表す指標である.凝集度は最大化すべきである.なぜなら,互いに関連する機能や情報があちこち分散していると,仕様変更が生じた際の影響範囲が広くなってしまうため,これらの機能や情報が局在化されている,つまり閉じたモジュール内に収まっていることが望ましいからである. * 結合度とは,クラスやパッケージ間で,呼び出し関係にあるメソッドの結びつきの強さを表す指標である.結合度は最小化すべきである.なぜなら,結合度が高くなると複数のクラスやパッケージ間で依存度が上がってしまうため,保守やメンテナンス,仕様変更などの対応がしづらくなるからである.また,設計的な観点からしても,複雑で分かりづらいものになってしまう. #### 21. UMLとはなにか,そしてなんのために使用するのか.UMLのMが何を表しているのか説明せよ.☆ * UMLとは,Unified Modeling Languageの略語であり,日本語では統一モデリング言語と呼ばれる.主にオブジェクト指向の開発においてデータ構造や処理の流れなどを分かりやすくビジュアル化した図のことであり,設計段階で用いられる標準的な記法のことをいう. #### 39. クラスの汎化を実装するのに,なぜ継承が最良の方法とは限らないのか説明せよ.☆ * 継承はクラス間に強い結合をもたらしてしまうため.クラスに変更を加えると,そのクラスを継承するすべてのクラスにその変更が自動的に反映されてしまうので,ソフトウェアを保守するときには,些細な変更に見えるものが予期しない結果をもたらしてしまうことがある. #### 45. ブラックボックステストとグラスボックステストの違いはなにか.☆ * ブラックボックステストではプログラムの中身は確認せず,入力に対する出力に着目してテストを行う.ホワイトボックステストではプログラムの中身そのものに着目し,プログラム内のそれぞれの処理が正しく動くかを確認する. #### 49. GOMSとはなにか * GOMSとはヒューマンインターフェースの評価を定量化分析するための体系である.このモデルの基礎となる方法論は,ユーザの目標,操作,方法,選択規則によって作業を分析するものである. #### 50. エルゴノミクスとはなにか.コグネティクスとはなにか.☆ * エルゴノミクスとは,人間の生理的機能と調和するシステムの設計を扱う工業分野である.コグネティクスとは,人間の精神的機能と調和するシステムを扱う工業分野である. #### 52. 伝統的な著作権法はソフトウェア開発者の投資を保護していないと言われる理由を述べよ.☆ * 著作権法は,ソフトウェアの不正なコピーや承認されない使用を禁止する法的効力を持つが,第三者がほとんど同じ機能をもつ製品を独自に開発することを防止するには不十分であるため,真の開発者ではない企業が競合製品の開発に成功して市場を席巻してしまうことがあるから. #### 53. ソフトウェア開発者が,特許を得るのが難しい理由を述べよ.☆ * 特許法を得るために発明者は,発明の詳細を開示し,それが新規かつ有用であり,類似の技術的背景に照らして自明ではないことを示さなければならないため.また,特許を得るためのプロセスは時間と費用がかかることがあり,これが数年にあたることで,その間にソフトウェア製品は陳腐化し,特許が認められるまでは,申請者は他者が製品を盗用するのを排除するのに十分な権利を持たない状態が続いてしまうため. ### その他まとめ #### 統合開発環境(IDE)を説明せよ☆ * IDE(integrated development environment)とは,ソフトウェア開発に必要なソフトウェアを1つに組み合わせ,同じ操作画面から統一的な操作法で利用できるようにしたソフトウェアパッケージ.一般的にはコードエディタやコンパイラ,デバッガ,テストツール,バージョン管理ソフトなどで構成される. #### インクリメンタルモデルと反復モデルを説明せよ☆ * インクリメンタルモデルは,システムを独立性の高い機能単位に分割し,機能ごとに設計,コーディング,テストを行い,追加していきながらシステムを完成させる開発モデルである.機能単位での開発を並列進行させるという特徴がある. * 反復モデルとは,分析→要件定義→設計→実装→テストといった一連の工程を繰り返し行う手法である.プロジェクトをいくつかのフェーズに区切り,各フェーズで必要な作業を重点的に行なって段階的にシステムを完成させる. #### アジャイルとは☆ * アジャイルは,人間・迅速さ・顧客・適応性に価値を置くソフトウェア開発である.典型的なアジャイルソフトウェア開発では,チーム主導で設計・実装・デプロイを短期間に繰り返しでユーザーが得た価値を学習し適応する,すなわちトライアンドエラーで開発が行われる. #### ベータテストとアルファテストを説明せよ☆ * ベータテストとは,製品の最終版を確立して市場にリリースする前に,ソフトウェアの予備版を潜在的なユーザの一部に配布して現実の状況でソフトウェアがどのように動作するかを学び取ろうとするものである. * アルファテストとは,ベータテストを開発者の側で類似のテストを行うことである. ## 第八章 ### 8.1節 #### ◆リスト,スタック,キューの違いを要約せよ☆ * スタックとキューはリストの特別な型として考えることができる.一般的なリストでは,任意の場所に要素を挿入し取り除くことができる.スタックの場合,頭部だけで要素の挿入と削除ができる.キューの場合,要素は末尾にだけ挿入できて頭部からのみ削除できる. ### 8.2節 #### 配列,リスト,スタック,キュー,木といったデータ構造は,どのような意味での抽象化か☆ * コンピュータのメインメモリ中のデータは,実際にはアドレス可能なメモリセルに格納される.データのユーザがアクセスしやすいように,配列,リスト,木といったデータ構造はシミュレートされる. * データ構造は,データの保存,整理,検索,変更などを効率的に行うための抽象化である. #### 静的データ構造,動的データ構造を使用するアプリケーションをそれぞれ述べよ☆ * チェッカゲームをするためのプログラムを書くならば,盤のサイズはゲーム中に変化しないので,チェッカー盤を表すデータ構造は静的データ構造となる.しかしドミノゲームのプログラムを書くのであれば,卓上に構成するドミノのパターンは大小あって予測できないので,ドミノゲームのパターンを表すデータ構造は動的構造である. ### 8.3節 #### 2次元配列を,行優先ではなく列優先に格納するとき,i行とj列の要素を見つけるための公式を述べよ☆ * Rを二次元配列の列の数とするとR(J-1)+(I-1)となる #### 高レベル言語では,スタックをどのように一次元配列で実装できるか述べよ☆ * スタックを一次元配列で表し,スタックポインタを整数型の変数として表す.その上でこのスタックポインタを使用して,メモリアドレスではなく配列中のスタックのトップの位置を記録する. ### 8.4節 ### 8.5節 #### データ型と型のインスタンスの違いはなにか☆ * 型はテンプレートである.その型のインスタンスは,そのテンプレートから構成される実際のオブジェクトである.たとえば犬は動物の型であるが,ラッシーとレックスはその型のインスタンスである. #### ◆ユーザ定義のデータ型と抽象データ型の違いはなにか【難】 * ユーザー定義のデータ型はデータ構成の記述であるが,抽象データ型はデータを操作する演算を含んでいる. ### 8.6節 #### 抽象データ型とクラスはどのように似ているか,どのように異なっているか.【難】 * 抽象データ型とクラスの両方とも,型のインスタンスを構成するためのテンプレートである.しかしクラスは,継承を利用できるという点でより一般的であり,また手続きだけの記述であってもよい. #### クラスとオブジェクトの違いはなにか☆ * クラスは,それからオブジェクトを構成するテンプレートである. ### 8.7節 ### 演習問題 #### ◆4. 伝統的な一次元配列を使用して動的リストを実装しようとするとき,どのよう複雑さが生じるか.【難】 * 一次元配列はあらかじめ決められたサイズしか持つことができないため,動的リストを実装する場合,リストのサイズがあらかじめ分かっていない場合や,サイズが頻繁に変化する場合には,配列のサイズを適切に調整する必要がある. * また,一次元配列の要素は物理的に隣接しているため,リストの先頭や中間に要素を追加する場合,配列内の他の要素をすべて移動する必要がある.削除する場合も同様である. * 更に,一次元配列は,各要素に一意のインデックスを割り当てることによってアクセスされるが,リストが拡大または縮小あうることでインデックスが頻繁に変更される恐れがあり,リストのサイズが変わるたびにインデックスを正しく更新する必要がある. #### 22. 長さが異なる名前のスタックを生成したい.スタックが名前自体を含むのではなく,メモリの別の領域に名前を格納して,名前へのポインタをもつスタックを構築するのがなぜ優れているのか☆ * 名前そのものをスタックしようとすると、名前の長さに応じてスタックポインタの調整量が変わる。そこで、名前を別の場所に格納し、ポインターを積み重ねることで、エントリーのサイズが均一なスタックを得ることができる。 #### ◆27. 高レベル言語で書かれたプログラムでキューを実装するのに,どのように配列が使用できるか述べよ.☆ * 各エントリーがキューの1つのエントリーを保持できる1次元の配列を用意する。そして、ヘッドとテールのポインタにメモリアドレスを使う代わりに、各ポインタには配列の適切な位置のインデックスを表す整数が含まれています。 #### 48. ユーザ定義のデータ型と基本データ型の違いはなにか.また,抽象データ型とユーザ定義のデータ型の違いはなにか.☆ * ユーザー定義のデータ型とは,基本データ型を構築ブロックとして追加のデータ型をプログラマが定義したものである.ここからさらに,演算の定義を含むユーザ定義のデータ型を抽象データ型とよぶ. #### 52. どのような意味でクラスは伝統的な抽象データ型より一般的か【難】 * クラスは,抽象データ型を拡張したものと考えられる.クラスは他のクラスから性質を継承でき,そして個々のオブジェクトを生成する時にカスタマイズするコンストラクタと呼ばれる特別なメソッドも備えている.更にクラスには,関連する手続きをグループ化する手段としても使用されることがあり,したがって手続きだけからなるクラスもあり得る. ### その他まとめ #### ◆ガーベジコレクションとは☆ * コンピュータプログラムが動的に確保したメモリ領域のうち,不要になった領域を自動的に解放する機能のことである #### 用語まとめ * ポインタ * 符号化されたアドレスを含むストレージ領域のこと.データ項目を格納した場所を記録しておくために使用する. * アドレッシング技法 * 即値アドレッシング * オペランドフィールドがデータを直接指定 * 直接アドレッシング * オペランドフィールドが,データのアドレスエオ含む * 関節アドレッシング * オペランドフィールドが,データのアドレスのアドレスを含む ## 第九章 ### 9.1節 #### ◆データベースモデルの目的はなにか☆ * データベースモデルは,実際の構成よりもアプリケーションに近いデータベースの構成を表現する.したがってデータベースモデルを定義するのは,データベースを抽象化ツールとして使用する第一歩である. #### ◆アプリケーションソフトウェアとDBMSの役割を要約せよ☆ * アプリケーションソフトウェアは,ユーザの要求をアプリケーションの用語から,データベース管理システムがサポートするデータベースモデルの用語に翻訳する.そしてデータベース管理システムが,実際のデータベースへの動作にこれらの要求を変換する. ### 9.2節 #### ◆関係モデルはどのようにしてデータ独立性を提供するか【難難】 * モデル自体は,データ独立性を提供しない.これはデータ管理システムの特性である.データ独立性は,実際のデータ構造が変化しても,データ管理システムが一貫した関係構成をアプリケーションソフトウェアに提示できるようにすることによって達成される. * データ独立性とは,データベースの問い合わせなどがスキーマなどの構成方法から独立していることを表現する概念である. #### 関係型データベースの異なった関係をどのようにして結び付けられるか☆ * 共通の属性を通して結び付けられる.わけがないでしほな ### 9.3節 #### 永続的なオブジェクトとはなにか☆ * 永続オブジェクトは,恒久的に格納されるオブジェクトである. #### ◆オブジェクト指向のデータベースとはなにか.またオブジェクト指向のデータベースが関係データベースよりもすぐれている点を特定せよ【難難】 * オブジェクト指向プログラミングを取り入れたデータベースを指す.互いに関連する複数の種類のデータと,データの処理方法を1つにまとめて定義し「オブジェクト」としてデータベースに格納する.ナビゲーショナルな方法で,あるオブジェクトからひも付いているオブジェクトにアクセスすることができる.また,マッピングや問い合わせ言語による指示が不要のため,リレーショナルデータベース(RDB)よりも複雑なデータ構造を高速処理できる. * オブジェクト指向データベースでは,継承,多態性,カプセル化などのオブジェクト指向概念を利用できるため,データモデルがより柔軟になります.これにより,より複雑なデータ構造や関係を表現しやすくなります.また,分散システムや大規模なデータ処理に適しており,スケーラビリティやパフォーマンスの点で関係データベースよりも優れている場合があります. ### 9.4節 #### ◆コミット時点に達したトランザクションと,そうで【難難】 * コミット時点に達したトランザクションは、データベースに対する変更が完了し、永続的に保存されることが確定されたものであり、他のトランザクションによって参照や使用ができます。一方、そうでないトランザクション(未コミット)は、変更が完了しておらず、他のトランザクションから参照や使用ができない状態であり、問題が発生した場合や、トランザクションをキャンセルする必要がある場合に、ロールバック操作を行って元の状態に戻すことができます。 #### 大規模な波及ロールバックが発生しないように,DBMSはどのような保護策を講じているか☆ * 1つのアプローチは,現在のトランザクションがすべて終了できるようにトランザクションの処理を重ね合わせないことである.そうすることにより,将来発生する波及ロールバックが終わる時点を確立できる. #### ◆データベースシステムの演算を実行中にデッドロックに陥るイベントの例を記述せよ.また,このデットロックを解消する方法を述べよ.その解法は,データベース管理システムのログの使用を必要とするか.☆ * 2つのトランザクションが,異なった項目への排他的アクセスを取得して,次にそれぞれがもう片方へのアクセスを要求するとデッドロックに陥る.これについては,トランザクションの1つをログを使用してロールバックしてから,もう一方のトランザクションにそのデータ項目へのアクセスを与えることによって取り除くことができる. ### 9.5節 #### 索引ファイルからレコードを検索するステップを記述せよ☆ * 最初にファイルの索引から対象となるキーを見つける.そして対象レコードの場所を得る.その上で,その位置からレコードを読み取る. #### ◆不本意にハッシュ関数を選択すると,ハッシュストレージシステムが単なる順編成ファイルになってしまうとはどういうことか説明せよ☆ * 不本意にハッシュアルゴリズムを選択すると,不必要に多くのクラスタリングと結果として多くのオーバーフローを生じる.マスストレージの各セクションからのオーバーフローは,連結リストとして構成されるので,オーバーフローしたレコードの探索は,本質的に順編成ファイルの探索なのである. ### 9.6節 #### データマイニングはなぜ「オンライン」データベース上で実施されないのか☆ * 動的なデータ内にパターンを探し求めるのは困難だから #### データマイニングは,伝統的なデータベースの問い合わせとどう違うのか☆ * 伝統的なデータベースの問い合わせは,データベースに格納された事実を検索する.データマイニングは,事実の中でパターンを探索する. ### 9.7節 #### あなたが裕福であると仮定して,その情報が多くの機関で共有されることによって,どのような利益が得られるか.裕福でなければどうか.☆ * 裕福でなければあなたが受け取る機会のない案内や広告を受け取るが,しつこく寄付を要請されたり犯罪のターゲットになったりするかもしれない. #### データベースの汎用を制御するために,報道の自由が果たす役割はなにか.☆ * ここでのポイントは,報道の自由がデータベースの濫用や潜在的濫用に公衆の注意を喚起して,その結果世論が影響力をもつことがあり得るということである. ### 演習問題 #### ◆1. フラットファイルとデータベースの相違点を要約せよ【難】 * データベースとは,さまざまな視点から情報にアクセスできるようにデータ項目が内部的に連結されているという意味で多次元的なデータ集合を表している.これに対してフラットファイルとは,単純なデータベースの表現を一次元的に保存したものである. #### 2. データ独立性とはなにか【難難】 * アプリケーションソフトウェアを変更すること無くデータベースの構成を変更できる性質のことである. #### 3. データベースを複数のソフトウェア層で実装するときのDBMSの役割はなにか. #### ◆4. スキーマとサブスキーマの違いはなにか【難】 * スキーマとはデータベースの全体構造の記述であり,データベースソフトウェアがデータベースを保持するのに使用する. * サブスキーマとは,特定のユーザーにとって必要な部分だけの記述である. #### 5. アプリケーションソフトウェアをDBMSから分離する利点を2つ挙げよ * 抽象化ツールを構成して使用できる.データベースがどのように格納されているかの詳細がDBMSの中に隔離されているならば,アプリケーションの設計を大いに単純化できる. * データベースへのアクセスを制御する手段が生まれる #### 6. 抽象データ型とデータベースモデルの間の類似点を述べよ【難】 * 抽象データ型は,演算の定義を含むユーザ定義のデータ型のことである.データベースモデルでは,データベースの概念的外観に沿って記述された命令を,実際のデータストレージシステムで必要な動作へと翻訳するルーチンを含んでいる. #### ◆47. トランザクションがデータベースの項目に排他的アクセスをもつか共用アクセスをもつかの違いはなにか.なぜそれが重要なのか.【難難】 * トランザクションがデータ項目を変更しないのであれば,そのトランザクションは共有アクセスを要求する.つまり他のトランザクションにもそのデータを見ることを許す.しかしながらトランザクションがその項目を変更するのであれば,排他的なアクセスを要求して,そのトランザクションだけがデータにアクセスするように確保しなければならない.排他アクセスと共有アクセスを適切に使い分けることで,共有資源に対して複数のアクセスが同時に発生しても問題なく動作を制御することができる. #### ◆56. この章では,伝統的なファイル索引とオペレーティングシステムのディレクトリシステムの類似点を比較した.オペレーティングシステムのファイルディレクトリは,どのような点で伝統的な索引と異なっているか.☆ * ファイルディレクトリは,ファイルを格納するための階層的なディレクトリ構造であり,ファイルはこの構造に沿って格納されます.一方,データベースの索引ファイルは,データベース内のテーブルの行を参照するための索引を格納するファイルであり,テーブル内の具体的なデータを格納するわけではない.また,ファイルディレクトリは,ファイルやディレクトリの名前などの基本的なメタデータを格納するが,索引では,ファイル中のキーとそのキーを持つレコードがどこに格納されているかを示すエントリのリストを含む. #### ◆60. ハッシュファイルの実装と2次元配列の実装を比較せよ.ハッシュ関数とアドレス多項式の役割は,どのように類似しているか.【難難】 * ハッシュファイルは,ハッシュ値を計算してその値をインデックスとして使用してデータを格納する.一方,2次元配列は,行番号と列番号の組み合わせでデータを格納する.また,ハッシュファイルでは,異なるデータが同じハッシュ値を保つ場合に衝突が発生し,この場合は別の方法でインデックスを決定する必要がある.一方,2次元配列では,異なるデータが同じ行と列に格納されることはない. * ハッシュ関数もアドレス多項式も,与えられた入力値に対して一意なアドレスを生成し,データを格納するための配列のインデックスを計算する. #### 61.1 順編成ファイルが索引より優れている点を1つ挙げよ【難難】 * インデックスを維持するオーバヘッドは必要ない #### 61.2 順編成ファイルがハッシュファイルより優れている点を1つ挙げよ【難難】 * レコードを順次簡単に処理できる #### 61.3 索引ファイルが順編成ファイルより優れている点を1つ挙げよ【難難】 * データの検索を高速に行える #### 61.4 索引ファイルがハッシュファイルより優れている点を1つ挙げよ【難難】 * 範囲検索が容易に行える. #### 61.5 ハッシュファイルが順編成ファイルより優れている点を1つ挙げよ【難難】 * 個々のレコードに素早くアクセスできる #### 61.6 ハッシュファイルが索引ファイルより優れている点を1つ挙げよ【難難】 * ハッシュ法では,索引中のキーを探る代わりに,キーから直接レコードの場所を特定できる. #### 62. 順編成ファイルは【難難】 * どちらもデータの挿入と削除をサポートしている.また,どちらも各ノードにはデータが格納されており,次のノードを指すポインタを持っている. ### その他まとめ #### データマイニングを説明せよ★ * データマイニングとは,統計学,パターン認識,人工知能等のデータ解析の技法を大量のデータに網羅的に適用することで知識を取り出す技術のことである. #### ◆データマイニングにおける,クラスタ分析,相関分析,外れ値分析,時系列パターン分析を説明せよ☆ * クラスタ分析とは,クラスを発見する行為であり,グループ化を可能とするようなデータ項目の性質の発見を試みる. * 相関分析とは,データグループ間の連結を発見しようとする試みである. * 外れ値分析とは,標準に当てえはまらないデータエントリの特定を試みる. * 時系列パターン分析とは,時間とともに変化するふるまいのパターンの特定を試みるものである #### 用語まとめ * 無損失分割【難難】 * ある関係を小さな関係へと分割する際に情報が失われない分割のこと * 関係データベースよりオブジェクト指向データベースが勝っている点【難難】 * ソフトウェアシステム全体を同じパラダイムで設計できる * データの詳細をオブジェクトの中にカプセル化することで,外部からは詳細を気にする必要がなくなる * データ形式の違いもオブジェクトの中に隠蔽 * 単なるデータではなく知的なオブジェクトを格納できる可能性 * コミット時点 * トランザクションのすねてのステップがログに記録された時点 * 機器のご動作によってデータベースが不整合になったまま止まることを防ぐために,各トランザクションの動作を記録したログをストレージシステム中に保持 * ロールバック【難難】 * 誤動作の場合DBMSは,誤動作した時点での未完了トランザクションをロールバックすることでデータベースを回復できる * ロールバックとは、データベース処理において、トランザクション処理中にエラーが発生した場合に、そのトランザクション処理を開始する前の状態までデータベースを戻すことである。 * 波及ロールバック * あるトランザクションのロールバックが他のトランザクションに影響を与え,次々にロールバックが生じること * 負傷待機プロトコル【難難難】 * 古いトランザクションに優先権を与える * つまり,古いトランザクションが新しいトランザクションの保持するデータにアクセスを要求した際は,新しいトランザクションがロックしているデータを解放し,ロールバックさせられる * 全てのトランザクションが最終的に作業を完了することが保証 ## 第十一章 ### 11.1節 #### エージェントが行う’知的な’動作の型を特定せよ * 反射動作, * 現実世界の知識に基づく動作, * 目標探索型動作, * 学習, * そして認識である. ### 11.2節 #### ロボット上のビデオシステムは,ロボット自身がビデオ情報を使って自己制御するのと,人間がビデオ画像を見て遠隔制御するのとでは,どのように異なるか.★ * 遠隔制御の場合は,システムは単に映像を転送すれば良い.しかしロボットが自己制御のために使用するのであれば,ロボットは映像の意味を理解出来なければならない. ### 11.3節 #### 人工知能におけるプロダクションシステムの重要性とはなにか★ * プロダクションシステムは,さまざまな問題へ統一されたアプローチを提供する.すなわち元の問題の形は異なっていても,プロダクションシステムの用語によって再定式化すると,状態グラフで経路をみつける問題になるからである. ### 11.4節 #### ’現実世界の知識’という用語は,何を意味しているのか.人工知能における重要性とはなにか.★ * 現実世界の知識とは,人間が理解し推論するのに使用する環境についての情報である.この情報を表現し,格納し,検索する方法を開発するのは,人工知能研究の主要な目的である. #### フレーム問題を要約せよ★ * 限られた処理能力しか無い人工知能は,現実に起こりうる問題すべてに対処することができないという問題 #### コンピュータを訓練する3つの方法を特定せよ.直接人間の介入が不要なのはどれか★ * 模倣,教師あり学習,強化学習.強化学習には,直接人間の介入が不要である. #### 進化的技法は,どのように伝統的な問題解決技法と異なっているか.★ * 伝統的な技法は,唯一のコンピュータシステムを構築する.進化的技法は,’すぐれた’システムが発見されるまで複数世代の試行システムを構成する. ### 11.5節 #### 人工ニューラルネットワークを訓練する際に発生する問題を特定せよ★ * 訓練プロセスが何度も同じ調整を繰り返して収束しないかもしれないということである. ### 11.6節 #### ロボットのふるまいへの反応型アプローチは,伝統的な’計画に基づく’ふるまいとどのように異なっているか★ * 反応型アプローチは,完全な計画を立案するのではなく,何事かが起こるまで決定を遅らせる. #### ロボット工学での現在の研究トピックはなにか★ * ここでのポイントは,ロボット工学の分野がどれくらい広いかを考えることである.それは,他の多くの分野とともに人工知能全体を取り込む.その目標は,環境に対して働きかけ知的に反応できる真に自律的マシンを開発することである. #### 進化理論がロボット開発に適用される2つのレベルとはなにか☆ * 内部的制御と物理的構造 ### 11.7節 ### 演習問題 #### 5. 宣言的知識の例を述べよ.手続き的知識の例を述べよ.★ * 宣言的知識・・・事実や原理,概念などに関する知識 * 東京は日本の首都である * 母の好物はみかんだ * 手続き的知識・・・やり方に関する知識.意識的に言語化出来ないことが多いが,その知識を使って行動することができる * 自転車に乗る時に,どうやって体のバランスをとっているかなど #### 6. オブジェクト指向プログラミングの文脈では,オブジェクトのどの部分が,宣言的知識を格納するのに使用されるか.手続き的知識を格納するのは,どのような部分か.☆ * インスタンス変数は宣言的な知識を保持します。メソッドは手続き的な知識を保持する。 #### 19. 閉世界仮説が矛盾につながる例を述べよ.★ * 閉世界仮説とは,現時点で真であると判明していないことは偽であると仮定することを意味する. * 例えば「ミッキーはねずみである.または,ドナルドはアヒルである.」という命題だけを知識として持っていると仮定する.この文だけからは,ミッキーがねずみであるという事実を結論づけることは出来ない.よって,閉世界仮説によると,「ミッキーはねずみである」という文は偽であると結論付けなければならなくなってしまう.同じようにして閉世界仮説を適用すると,「ドナルドはあひるである」という文も偽と判定しなければならない. #### 20. 閉世界仮説が一般的に使用される例を2つ述べよ.☆ * 知識ベースが完成した時点で,そこに含まれない知識は偽であるとされる.例えば,企業の従業員のデータベースが完全であれば,そこに記録されていない人は従業員ではない. * 知識ベースが不完全であるときでも,そこにない知識は偽であると回答することが最善の場合である. #### 37. プロダクションシステムで有用になるために,ヒューリスティックがもたなければならない2つの特性を列挙せよ☆ * 第一に,関連する状態に到達した時,そこから解にたどり着くまでの仕事量が合理的に予測できるというものである.これは,ある選択肢を選んだ時に有意味な情報が得られることを意味する.ヒューリスティックが提供する予測が優れていればいるほど,その情報に基づいた決定は優れたものになる. * 第二にヒューリスティックは,計算が容易でなければならない.探索のプロセスを省略できることによる利益がヒューリスティックの使用による負担よりも勝っていなければならない.ヒューリスティックの計算が極端に複雑であれば,幅優先探索を実施したほうが速いということになってしまうからである. ### その他まとめ #### 模倣,教師あり学習,強化学習をそれぞれ説明せよ * 模倣 * 作業のステップごとに人間が直接お手本となる動作をしてみせる方法である.コンピュータはその動作を単に記録する. * 教師あり学習 * 人間が一連の例を示して正しい反応を識別できるようにし,エージェントがそれらの例示を一般化することで新しいアルゴリズムを開発するもである.この一連の例示を訓練セットとよぶ. * 強化学習 * エージェントに判断のための一般的な規則を与え,試行錯誤により成功と失敗を繰り返すことでふるまいを改善するものである. #### 遺伝的アルゴリズムとは * 遺伝的アルゴリズムとは,生物の進化の仕組みを模した,最適化のためのアルゴリズムのことである.生物の進化の過程で起きる「環境に適応し、より強い個体が生き残り、環境に適応できない弱い個体は淘汰される」という現象からヒントを得て、プログラム上で優秀な個体を次世代へと受け継ぐ仕組みが遺伝的アルゴリズムです。 * 解のセットをパラメータとして一つのデータにまとめ、これを遺伝子に見立てる。はじめにいくつもの「個体」を用意(ランダムな値で生成することが多い)し、それぞれを評価関数にかけてより適合度の高いと思われる遺伝子を残す。現世代の個体群から、生物の生殖や遺伝に相当する操作を行い、同じ数(個体を増やしていく手法もある)の次世代の個体を生成する。二つの遺伝子を同じ長さだけ相手の同じ位置の配列と入れ替える「交叉」、一定の低い確率でランダムに値を変化させる「突然変異」などが行われる。 ## 第十二章 ### 12.1節 #### 完全に表の形で表すことのできる関数を示せ.★ * ブール演算AND,OR,XORなど. #### 入力値を含む代数式として出力を記述できる関数を示せ.★ * 円の面積,ローンの支払の計算など. #### 代入式として表現できない関数を示せ.その関数は計算可能か.【難】 * このような関数は超越関数と呼ばれる.例としては,対数や三角関数がある.これらの関数は計算可能であるが,代数式では表現できない.たとえば三角関数は,実際に三角形を描いて辺を測定した上で代数演算として除算を行うことで計算できる. ### 12.2節 ### 12.3節 ### 12.4節 ### 12.5節 ### 12.6節 ### 演習問題 #### 26. リストに特定の値があることを探索する問題は多項式問題か.解答の論拠を示せ.★ * 多項式問題である. * リストに特定の値があるかどうかを探索する問題は、線形探索(リニアサーチ)や二分探索(バイナリサーチ)などのアルゴリズムを使って解決することができます。この問題は多項式問題(P問題)であると言えます。 #### 39. クラスPであり,かつクラスNPである問題の例を示せ.★ * 与えられた整数kが偶数が否か ### その他まとめ #### ◆計算可能,計算不能とはなにか * 計算可能とは,入力値からアルゴリズムによって決定的に出力値を得られる関数のことである.計算不能は,その逆である. #### ◆チューリング機械とは【難】 * チューリング機械は,ある関数を計算するアルゴリズムが存在するか否かという形の問題を数学的に厳密に議論するために考案された機械である.アルゴリズムによって計算できる関数はすべて原則的にはチューリング機械によって計算することができ,逆にチューリング機械で解けない問題にはアルゴリズムは存在しないと言える.チューリングマシンは,読み書きヘッドによってテープ上の記号を読み取ったり書き込んだり出来る制御ユニットから構成される. #### ◆停止問題とは【難】 * あるプログラムが,ある特定の条件で開始して停止するかを前もって判断することを試みる問題 #### ◆多項式問題とは【難】 * 多項式問題とは,関数f(n)が多項式であるか,他の多項式により上に有界であるとき,ある問題がO(f(n))に含まれるような問題である. * 「多項式時間問題」は、問題を解くためのアルゴリズムが、入力サイズに対して多項式時間で実行できるということを意味します。 #### ◆非決定性アルゴリズムとは★ * アルゴリズム中に二択が含まれていたり,出力が何らかのタイミングに依存したりするような,非決定的な振る舞いを含むアルゴリズムのこと #### 非決定的多項式問題とは【難】 * 非決定性アルゴリズムによって多項式時間で解くことの出来る問題 #### ◆クラスPとクラスNPを説明せよ【難難】 * クラスPとは,決定性チューリングマシンにおいて,多項式時間で判定可能な問題のクラスであり,クラスNPはある解が与えられたとき,多項式時間でその解の正当性の判定が可能な問題のクラスである. #### ◆NP完全,NP困難を説明せよ【難難】 * NP完全とは,クラスNPに属する決定問題で,かつクラスNPに属する任意の問題から多項式時間帰着可能なもののことである.NP困難とは,NP完全な問題と比べ,同等またはそれ以上に難しい問題である. #### 用語まとめ * チャーチ・チューリングの提唱【難】 * チューリングマシンの概念は,すべての計算可能な関数を表現する解法を与える文脈を提供する. * つまり,計算可能な関数とチューリング計算可能な関数は,同じものと考えられている * 万能プログラミング言語【難難】 * すべてのチューリング計算可能な関数を計算するプログラムを表現するのに,十分な機能を備えたプログラミング言語 * クラスについて【難難難】 * クラスP(多項式問題) * 与えられた整数kが偶数か否か * 数列のソートの判定 * クラスNP(非決定的多項式問題) * ハミルトン閉路問題(O(n!),与えられたグラフにおいて,すべての頂点を1度だけ通り,出発点に戻る閉路が存在するか.) * クラスNP完全 * 充足可能性問題(与えられた論理式が1となるような変数の割り当てが存在するか否か) * ハミルトン閉路問題 * 頂点彩色問題(与えられたグラフについて,辺の両端が同じ色にならないように拡張点をk色で塗り分けることが出来るか) * クラスNP困難 * 巡回セールスマン問題(各辺に非負実数のコストが定められたハミルトン閉路のうち,コストの和が最小になる経路を求める) * ナップサック問題(値と重量が定められた n種類の品物を重量制限のある袋に詰める。このとき、重量制限を超えない範囲で袋に詰めた物の価値の総和を最大にするような組み合わせを求めよ。) * 解決不能問題 * 停止問題

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully