June 2026
Intermediate
804 pages
8h 21m
Japanese
私たちが決めなければならないのは、与えられた時間をどう使うかである。
—— J・R・R・トールキン
ここから3つの章は今までの章よりも長く、難易度も少し上がる。本章ではデータと時間の問題(逐次アクセスか並行アクセスか)を扱う。「22章 ネットワーク」ではデータと空間の問題(ネットワーク)、「23章 永続ストレージ」ではデータと格納場所の問題(特殊ファイルとデータベースの読み書き)を扱う。
プログラムを実行するとOSはプロセスを作る。プロセスはシステムリソース(CPU、メモリ、ディスクスペース)とOSのカーネルのデータ構造(ファイルやネットワーク接続、利用統計など)を使う。プロセスはほかのプロセスから切り離されており、ほかのプロセスが何をしているかを覗いたり、ほかのプロセスの作業を邪魔したりできない。
OSは実行中のすべてのプロセスを管理しており、それぞれに少しずつ実行時間を割り当ててはほかのプロセスに移っていく。すべてのプロセスに公平に処理の機会を与え、ユーザーに機敏に反応するという2つの目的のためである。プロセスの状態はMacのアクティビティモニター(macOS)やWindowsのタスクマネージャー、Linuxのtopコマンドなどのグラフィカルインターフェイスで表示できる。
プロセスのデータは自分のプログラムからも参照できる。標準ライブラリのosモジュールにはシステム情報を参照するための関数が用意されている。例えば、次の関数で実行中のインタプリタのプロセスIDとカレントディレクトリを取得できる。
>>> import os >>> os.getpid() 76051 >>> os.getcwd() '/Users/williamlubanovic' ...
Read now
Unlock full access