現在、qemu-kvmとLinuxタスクスケジューラでプロジェクトを行っています。各VCPUは、qemuによってLinuxOSに対して作成される通常のタスクであることがわかっています。次に、qemuコマンドを実行して、タスクがどのように作成されるかを確認します。straceを使用してすべてのシステムコールを追跡します。「fork」や「pthreadcreate」のようなものはありませんが、私はこれを見ました:
open("/dev/kvm", O_RDWR|O_LARGEFILE) = 3
ioctl(3, KVM_GET_API_VERSION, 0) = 12
ioctl(3, KVM_CHECK_EXTENSION, 0x19) = 0
ioctl(3, KVM_CREATE_VM, 0) = 4
ioctl(3, KVM_CHECK_EXTENSION, 0x4) = 1
ioctl(3, KVM_CHECK_EXTENSION, 0x4) = 1
ioctl(4, KVM_SET_TSS_ADDR, 0xfffbd000) = 0
ioctl(3, KVM_CHECK_EXTENSION, 0x25) = 0
ioctl(3, KVM_CHECK_EXTENSION, 0xb) = 1
ioctl(4, KVM_CREATE_PIT, 0xb) = 0
ioctl(3, KVM_CHECK_EXTENSION, 0xf) = 2
ioctl(3, KVM_CHECK_EXTENSION, 0x3) = 1
ioctl(3, KVM_CHECK_EXTENSION, 0) = 1
ioctl(4, KVM_CREATE_IRQCHIP, 0) = 0
ioctl(3, KVM_CHECK_EXTENSION, 0x1a) = 0
したがって、デバイス/ dev / kvmを開き、いくつかのioctlsyscallを実行したように見えます。これは、VMスレッドが実際に作成される場所だと思います。右?私はOSに不慣れで、誰かが私にいくつかの手がかりを与えてくれれば幸いです:>ありがとう