このレッスンではアプリと OS の 関係について学習して下さい コンピューターは画像や音楽・プログラム ありとあらゆるものをメモリー上に 数値として記憶し処理するわけですが その配置作業を手作業で行うのは 現実的ではありません 実際 Xcode は iPhone へのアプリ転送を 自動で行っています これは iPhone 側にプログラムや画像等を メモリに配置するためのプログラムが 存在するから実現できるわけです このプログラムをオペレーティングシステム 略してOSと呼びます OSは Xcode などと連携して 外部からプログラムや画像・音楽等を メモリ上に配置します コンピューターが起動した時に 最初に行われるのは このOSというプログラムのストレージから メモリへの読み込みです ストレージはコンピューターの周辺装置です メモリと同じ記憶装置ですが こちらは記憶内容を CPU が直接操作できません ストレージの記憶内容を CPU が操作するには ストレージの記憶内容をメモリに コピーする必要があります また 操作をストレージ側に反映するにも メモリからストレージへのコピーが必要です その為 メモリ側を主記憶装置 ストレージ側を補助記憶装置と 呼んだりもします メモリは電源が落ちると記憶を失うのに対し ストレージは電源が落ちても 記憶を失わないという特徴もあります 記憶容量もストレージはメモリの数十倍から 数百倍の容量があります その代わりに読み書きのスピードは メモリより劣ります このような周辺装置の特性を考慮して 効率のよい運用をするのもOSの仕事です その点でコンピューターの起動時 OSが存在しない状態で ストレージからメモリにOSマシンコードを 読み込む過程は特殊であり ブートストラップと呼ばれて区別されます OSのマシンコードがメモリに 読み込まれた後は 周辺装置の管理はOSに一任されます Xcode のアプリ転送でもOSによって まずストレージにマシンコードが記録され その後必要な時にメモリに読み込まれます そして準備ができたらそのプログラムを CPU に読ませ実行させるように命令します 数に限界はありますが OSは複数のプログラムを同時に実行させ それをコントロールするよう プログラムされています このOSによって作り出され実行されている プログラムそれぞれをプロセスと呼びます コンピューターの中には実際に 数個分のプロセスを 並行して実行できるようなものもありますが 殆どは千分の一秒といったタイミングで 高速に CPU の読み取り位置を 切り替えながら動作させる― 二次的な並行動作となっています このような切り替えの制御もOSの役割です USB 入出力装置をコントロールする プログラムもプロセスとして実行されています その他画面表示装置を コントロールするプロセスや タッチパネル装置をコントロールする プロセスなど 様々なプロセスがOSによって 実行されています 但し USB や画面といった装置は それぞれのプロセスが勝手に使うと 動作がムチャクチャになります 一枚の絵に同時に多人数で 勝手気ままな絵を描くようなものです その為共有の資源に関しては OSが管理するようになっていて プロセスが資源を使う時は OSに確認をとるようにもなっています このような調整もOSの役割です このレッスンではアプリとOSの関係に ついて学習しました