割り込みハンドラを経由して、あるプロセスからあるプロセスに切り替える処理のこと
/mrsekut-book-4774154644/074
割り込みハンドラを経由して、あるプロセスからあるプロセスに切り替える処理のこと
/mrsekut-book-4774154644/074
割込み
割込みが発生時にCPUは割り込みベクタテーブルを参照する
いつ発生するかの予測はできない
割り込み発生時にする一連の処理のことを割り込みサービスルーチン(ISR)と呼ぶ
複数の割り込み要因がある場合、それぞれに対応する割り込みサービスルーチン(ISR)を用意して置く必要がある
process control block, PCB
プロセスの実行情報を格納する
含まれるもの
プロセス識別子
pidのこと?
カラム
割込み番号
割込みイベントごとに振られている固有の番号
ベクタアドレス
割り込みサービスルーチン(ISR)
メモリ上で実行中のプログラムのinstanceのこと
プロセスの状態
プロセスの生成
fork()
プロセスの複製
program status word, PSW
プロセス再開時に必要な情報
ex. プログラムカウンタ、汎用レジスタ、割り込みマスクなどのフラグ
物理メモリがマップされていない仮想アドレス空間上のページに、プログラムがアクセスしたときに発生する割り込み
SIGSEGVシグナル
種類
マイナーフォールト
ストレージへのアクセスが発生しないページフォールト
実行中のプログラムが発生原因となる割り込み
例
システムコール割り込み
system callが呼ばれたときに起こる割り込み
例外割り込み
実行中のプログラム以外のことが原因で起こる割り込み
例
入出力割り込み
入出力装置から発声する割り込み
キーボードの入力終了を知らせる割り込みや、2時記憶装置に書き込みを完了したことを知らせる割り込みなど
プロセスに対して割り込みを行うための仕組み
Actionの大別
Term
プロセスを終了する
Core
#WIP
#??
スレッドとプロセスって以前からふわっとしか理解してないんだよな
もっとプログラムのレベルでカチッと理解したいんだが
プロセス内で実行される軽量な処理単位
Shellから見たときの処理の単位
人間にとって一つの処理と見なせるもの
シェルの1行分の命令が1ジョブになる
ジョブはそれを実行したシェル以外からは参照することができない
1つ以上のプロセスをまとめ上げたものが1つのジョブ
ホストOS上の独立したアプリケーション実行環境
カーネルはホストOSのものをそのまま使う
この点がOSをまるごと乗っけるシステムVMと大きく異なる
システムVMよりも高速かつ軽量に起動可能
プロセスとして起動する
シングルスレッドのプロセスでは、1つのプロセスは1つのスレッドしか持っていない。つまり、スレッドはプロセスであると言ってしまえる。実行されるのは何か1つのことだけ
multi thread
https://speakerdeck.com/task4233/why-can-javasctipt-invoke-asynchronous-in-single-thread
JSがシングルスレッドで非同期処理できる仕組み
実行中のプロセスの一覧を表示する
f
を付けると、親子関係が視覚的に見れる
$ ps f
forestのf
らしい
これはmacのpsコマンドでは使えない
https://ja.wikipedia.org/wiki/ワーキングセット
プロセスがある時点で使用中の仮想メモリのページの集合
過去T時間にアクセスされたページの集合
Tのことをウィンドウタイムと呼ぶ
並行と並列
#WIP
並行と並列周りの俯瞰
ついでにこの辺も整理したい
スレッド
プロセスとデバイスの中間層
Linuxでは、プロセスはデバイスドライバを介してデバイスにアクセスする
この仕組みに、CPUの2つのモードを使っている
デバイスはカーネルモードで動作
デバイスドライバもこちらに含まれる
2つのプロセスの間で通信バッファを利用してデータを共有する
考えられる問題
受信側が取得する前に、送信側がデータの上書きをする
送信側が新しいものを書き込む前に、受信側が重複して読み込みをする
この2つの問題点はflgで解決できる
IBM製のメインフレーム用OS
System/360のために開発したOS
「Operating System」という言葉の最初
jobやプロセスという概念を明確にし体系化した
参考
Google製のブラウザ
Chromiumをベースに実装されている
Google ChromeはOSSではない
Browser engineはBlink
JavaScript EngineはV8