●ソフトウェア
・OS(オペレーティングシステム)・・最も基本的な部分、普遍的な機能を提供(windows/mac/unix)
・OSの上にアプリケーションソフトウェアとOSをつなぐ役割を果たすAPI、ミドルウェアがあり、その上にアプリケーションソフトウェアがある。
●OSのはたらき・・どのような順番でタスクを実行していくか。どのようにタスクを切り替えるか。限られたメモリ領域をどう使うか
●タスクの切り替え方
イベントドリブン・・状態変化を起点としてタスクの切り替えを行う(割り込み)
タイムスライシング・・時間でタスクを変化させる
*今のOSはこの二つを組み合わせて使われる
プリエンプティブ・・タスク実行中にそのタスクを一時中断(実行可能状態)にし、他のタスク実行
ノンプリエンプティブ・・中断しない
割り込みの種類・・
外部割り込み(ハードウェア)・・タイマ割り込み、機会チェック割り込み、入出力割り込み
内部割り込み(ソフトウェア)・・svC割り込み、ページフォールト割り込み、プログラム割り込み
*それぞれの働きがわかるようになる
●タスクスケジューリング・・
到着順方式(ノンプリエンプティブ)、
優先順方式・・優先度の高いタスクから実行*スタベーションを防げるかが課題(優先度の低いタスクが実行されない)
ラウンドロビン方式・・処理時間を決め順にタスクを処理する
●マルチプログラミング・・プログラミングを複数組み合わせて高速化を図る(イベントドリブンでのタスク管理が必要)
●限られたメモリ領域をどのように使うか・・仮想記憶管理(仮想的に記憶領域を扱うことで効率的に処理を実行できる)ex)図書館での本の検索システムが仮想記憶領域みたいなもの
●仮想記憶管理の分類・・固定区画方式(始めから区画を分けておく)、可変区画方式(プログラムニ応じて調整)、スワッピング・・情報を出し入れする
●限られたメモリ領域をどのように使うか2・・
ページング(物理的な配置可能領域よりも大きなプログラムをロードするための仕組み)*重要
ページ書き換えアルゴリズム
1、FIFO(first in first out)・・最初にページインしたものから順にページアウト対象とする
2、LIFO(last in first out)・・最後にページインしたものをページアウト対象にする
3、LRU(least recently used)・・最近使われてないやつ、最も長い間参照されていないもの
4、LFU(least frequently used)・・最も参照頻度が少ないもの
●ファイルの種類
1、テキスト
2、CSV
3、PDF
●バックアップ・・
差分バックアップ・フルバックアップからの差分をやる
増分バックアップ・増えた分のみバックアップ
フルバックアップ・すべてバックアップをとる
●OSS・すべての人が自由に使えるソフトウェア・ソースを公開していることによって利点がたくさんある
●AI・元々はエキスパートシステムで知識の詰め込みによって学習させようと試みた。→限界が見える。知識ではなく自分で学んでもらおうという機械学習が盛んに。(知識体系について人間が考える必要がなくなった)しかし機械学習も「特徴量の選択」において人間が手を貸さないといけない。そこで考えられたのが「ディープラーニング」という仕組み。