プロセス切り替え時の動作なんですが、

・CPUにタイマ割り込みがかかる
・割り込みハンドラに処理が移る
・プログラムカウンタをそのプロセスのカーネルスタックにpush
・汎用レジスタの内容をプロセスディスクリプタのthreadに保存
・schedule()で次に処理するプロセス選択
・次に処理するプロセスのプロセスディスクリプタのthreadから汎用レジスタにロード
・次に処理するプロセスのカーネルスタックからPCにpop
・ジャンプ

という理解でいいのでしょうか?(自主的にCPUを放す場合は別として)

ということは、ほかのプロセスのカーネルスタックの一番上の中身を書き換えると、
違うところから実行が再開される?