OSの主要な役割を復習しておく

基盤製品のプロファイラ整理の前準備として、OSの役割について復習しておく。

まぁつまりは、マザーボード上にのっている大半のデバイスの管理、といったところか。

プロセス管理(とスレッドについて)

8086向けに開発されたMS-DOSはシングルタスクであった。ユーザ要求に応じるためにOSはマルチタスク(=マルチプロセス)になり、486などのCPUではマルチタスクを可能にするタスク切り替え機能を備えた。OSはマルチタスク実現のために、各タスクを短いスパンで切り替えて実行する。

タスク間は資源が完全に分離される(※メモリ管理を参照)ため、タスク切り替えには資源の切り替えが伴い、コストが高い。そこで、タスク内で複数の処理を並行実行する仕組みとして、スレッドがある。一つのタスク内のスレッドは、タスク内の資源を共有する。そのため、タスク切り替え時に資源切り替えが不要なため、コストが低くなる。

メモリ管理

メモリ空間は、OSが使用する「システム領域」と、アプリケーションが使用する「ユーザ領域」に大分される。
メモリ管理では、タスクからの要求に応じてOSがユーザ領域のメモリをタスクに割り当てる。
また、メモリ保護のために、各タスクに自身が割り当てられているメモリ領域にしかアクセスできないようにしている。
また、仮想記憶も実現する。

参考文献

はじめて読む486―32ビットコンピュータをやさしく語る

はじめて読む486―32ビットコンピュータをやさしく語る