2019-2020-1 20199329仕事の7週目の「Linuxカーネルの原理と分析」

仕事の7週目の「Linuxカーネルの原理と分析」


。コンテンツの一週間:

  • 追跡のための新しいプロセスを作成する方法についてのLinuxシステム
  • Linuxカーネル・プロセスの分析は、新しいプロセスを作成します

。学習コンテンツの二週間:

学習プロセスの1説明

  • プロセス管理、およびプロセス管理の機能であるコアそれらのファイルシステム管理カーネル、三つの主要な管理機能を達成するためのOSオペレーティングシステムカーネル。
  • 原理的には、オペレーティングシステム、我々はプロセスを説明したプロセス制御ブロックPCB、プロセスを説明した通常のデータ構造の構造体task_structによって、プロセス状態のより一般的な属性の一つは、状態、状態の動作を遮断する共通レディ状態、状態です。
    示すように、操作手順:

2.実験室の建物実験:Linuxカーネル・プロセスの分析は、新しいプロセスを作成します

  • 初期設定メニューOは、フォークを入力menuosはフォークシステムコールのトリガー見ることができます
    練習ショットを次のとおりです。
  • 終了メニューディレクトリ、Linuxカーネルのディレクトリに実行
    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
    以下のように練習ショットは次のとおりです。
  • 横画面は、他の端末を開くGDBを追跡行います
    file linux-3.18.6/vmlinux remote target:1234
  • そしてsys_cloneに関する、do_fork、dup_task_struct、copy_process、にブレークポイントを設定 copy_thread とret_from_fork
    練習ショット次のとおりです。
  • 最初のブレークポイントsys_cloneに関するので、実行を継続するためにgdbでは
    、以下のように練習ショットであります:
  • 新しいプロセスを作成do_fork 2つのブレークポイントまで実行します。
    以下のように練習ショットは次のとおりです。
  • シングルステップのデバッグ、4つのブレークポイントcopy_pocessに滞在します
    、以下のように練習ショットであります:
  • シングルステップのデバッグ、最初の3つのブレークポイントの中に滞在する
    、以下のように練習ショットは以下のとおりです。
  • デバッグを続行し、第五及び第六ブレークポイントに残るcopy_threadブレークret_from_forkを
    以下のように練習ショットは次のとおりです。

III。まとめと難しいです

今週の主要な学習プロセスの作成は、おおよそカーネルスタックとカーネルスタックサブクリティカルな情報配信プロセスが初期化され、プロセス記述、その他のリソースをコピーする処理を(書くときに、レプリケーション・テクノロジーを使用しています)に複製されます。
問題はフォーク、のvfork、クローン情報へのアクセスで見つかった三つの異なるシステムコール、次のとおりです。

  • フォーク():サブプロセスの実行順序データセグメントは、コードセグメント、親と子が不明、親プロセスのコピー。
  • vfork():共有データセグメントと親プロセスと子プロセスを作成するために、子プロセスは親プロセスで最初に実行されます。
  • フォーク():サブプロセスの実行順序データセグメントは、コードセグメント、親と子が不明、親プロセスのコピー。

IV。来週プログラム

  • 完了時に[]放課後練習帳
  • []カーネル仮想マシン環境の研究を継続して使用します

2019年11月3日

おすすめ

転載: www.cnblogs.com/Zxf313806994/p/11788188.html