まとめ　基本情報技術者　ソフトウェアについて

### OS（オペレーティングシステム）

- ジョブ管理
    - ジョブの「実行順序**」**の管理をする機能。
    - ジョブとは、「ユーザーがコンピュータに依頼する仕事**」**の単位
    - アプリケーションとハードウェアを繋ぐ橋
- スプーリング
    
    「CPU」と「低速の入出力装置」の間のデータ転送を「高速の補助記憶装置」に仲介させる技術
    
- バッファ
    - スプーリングで使用する「高速の補助記憶装置」のことを「バッファ」「緩衝記憶装置」という
    - CPUと主記憶装置の差を補う「キャッシュメモリ」もバッファ
    - 主記憶装置とハードディスクの差を補う「デジスクキャッシュ」もバッファ
- タスク管理
    - 「タスクの実行順序」の管理をする機能
    - タスクとは、「OSがCPUに出す命令」の単位
- マルチタスク
    - 複数のタスクを「あたかも同時に実行されている」ように見せる技術
    - 本当は「頻繁に素早くタスクを切り替えているだけ」
    - CPUは一度に一個しか作業を実行できない
- タスクを切り替える方法
    - プリエンプティブ
        - CPUの使用権を「OS」が管理する方法
        - 主流
    - ノンプリエンプティブ
        - CPUの使用権を「タスク」が管理する方法
    - タスクの移動
        
        - ディスパッチ
            
            実行可能状態から実行状態に移動すること
            
        - プリエンプション
            
            実行状態から実行可能状態に移ること
            
- タスクスケジューリング
    
    
    | 名前 | 説明 |
    | --- | --- |
    | 到着順方式 | 実行可能状態になった順番に処理する方式 |
    | 優先度順方式 | タスクに優先度を設定し、優先度順に処理する方式 |
    | 動的優先度順方式 | 基本は優先度順方式と同じだが、待ち時間の長さに応じて優先度を徐々に上げていく方式 |
    | ラウンドロビン方式 | CPUを使用する時間を定め、その時間内に処理が終わらない場合は、次のタスクに使用権が与えられる方式 |
    | 多重待ち行列方式 | ラウンドロビン方式に優先順位を加味させた方式 |
    | 処理時間順方式 | タスクの処理時間が短いものから処理する方式 |
    | イベントドリブン方式 | マウス操作によるイベントでCPUの使用権を切り替える方式 |
- 記憶管理
    - 記憶装置を効率的に利用するための機能
    - 仮想記憶管理
        - 「補助記憶装置」の一部をあたかも「主記憶装置」であるかのように扱う方式
        - セグメンテーション方式
            
            仮想記憶（論理的な記憶領域）と実記憶（主記憶装置の物理的な記憶領域）を「セグメント（可変長）」の領域に分割して管理する方法
            
        - ページング方式
            
            仮想記憶（論理的な記憶領域）と実記憶（主記憶装置の物理的な記憶領域）を「ページ（固定長）」の領域に分割して管理する方法
            
            - ページテーブル
                
                「仮想アドレス（仮想記憶のアドレス）」と「物理アドレス（実記憶のアドレス）」は「ページテーブル」と呼ばれる表で管理
                
                - ページイン
                    
                    「プログラムを実行するページが実記憶にない」場合、ページフォールトが割り込みした後、補助記憶装置から実記憶へページを書き込むこと
                    
                - ページフォールト
                    
                    「プログラムを実行するページが実記憶にない」場合は、「ページフォールト」という割り込みが発生する
                    
                - ページアウト
                    
                    「実記憶に空きがない場合」実記憶から補助記憶へページを書き出すこと
                    
                    - 置き換えアルゴリズム（どのページを書き出すのか）
                        - LRU（Least Recently Used）
                        - LFU（Least Frequency Used）
                        - FIFO（First In First Out）
                    
                - スラッシング
                    - 割り当てられる実記憶が小さい時にページイン、ページアウトが頻繁に起こること
                    - スループット（処理能力）が低下する

### データ管理

- ファイルシステム
    - データのまとまりを「ファイル」として扱うこと
    - ディレクトリ
        - ファイルを格納する場所
        - ツリー構造で管理
            - ルートディレクトリ
                
                最上位のディレクトリ
                
            - カレントディレクトリ
                
                ユーザーの作業中のディレクトリのこと
                
            - パス
                - ファイルやディレクトリを示す文字列
                - 「/」で区切る
                - 「/」で始まる時はルートディレクトリからの始まりを表す（絶対パス）
                - 「.」はカレントディレクトリを表す（「./」でカレントディレクトから）
                - 「..」は一回層上を表す
- バックアップ
    - フルバックアップ
        - 常に全てバックアップをとる
        - 時間かかる。復旧簡単
    - 差分バックアップ
        - フルバックアップ以降の新たなデータのみバックアップ
        - 時間まあまあかかる。復旧まあまあ簡単
    - 増分バックアップ
        - 前回のバックアップからの増分のみバックアップ
        - 時間かからない。復旧大変

### 開発ツール

- ソースコード
    - 人間が読みやすいプログラミング言語で書かれたプログラム
- オブジェクトコード
    - 0,1に変換されたプログラム
    - リンカ
        
        オブジェクトコードにライブラリを追加するツール
        
        - ロードモジュール
            
            リンカで生成された「実行可能プログラム」
            
- コンパイラ
    - ソースコード→オブジェクトコードに変換
    - 手順（最適化コンパイラ）
        1. 字句解析（ソースコードの間違いチェック）
        2. 構文解析（プログラムの文法チェック）
        3. 意味解析（プログラムの手続きチェック）
        4. 最適化（計算の順序などを改善、効率の良いプログラムに変換）
        5. コード生成（オブジェクトコードを生成）
- テストツール
    - 静的テスト
        - プログラムは実行せず、ドキュメントやソースコードをチェックすること
        - ソースコード解析ツール
            
            プログラムの誤りをチェックするテストツール
            
    - 動的テスト
        - プログラムを実行しテストすること
    
- インタプリタ
    - ソースコードを一文字づつ解釈しながら実行するツール
    - コンパイラは一括解釈、実行

### オープンソースソフトウェア（OSS）

- 一般公開されているソースコード
- Eclipse
    - OSSの統合開発環境
    - 統合開発環境
        - 「IDE」
        - テキストエディタやコンパイラ、テストツールなど、開発に必要なツールが一つにまとまったソフトウェア
- コピーレフト
    
    プログラムの著作権は作者にあるが、誰でもプログラムの複製、改変、再配布ができ、さらに「2次著作物にオリジナルと同じ配布条件を適用する」こと