معماری هسته مجازی
نویسنده(های) اصلی | Matthew Dillon |
---|---|
توسعهدهنده(ها) | دراگونفلای بیاسدی |
انتشار اولیه | (۳۰ ژانویه ۲۰۰۷[۱][۲] | )
مخزن | sys/vkernel.h, dev/virtual/vkernel/, vm/vm_vmspace.c, … |
نوشتهشده با | C |
سیستمعامل | دراگونفلای بیاسدی |
نوع | شبیهسازی سطح سیستمعامل، virtualised userspace kernel |
مجوز | پروانههای بیاسدی |
وبگاه |
معماری هسته مجازی (به انگلیسی: vkernel) یک نمونه از مجازی سازی سیستم عامل است که میتوان کد هسته را برای اجرا در فضای کاربر کامپایل کرد، به عنوان مثال برای سهولت در اشکال زدایی از اجزای مختلف سطح هسته، [۳][۴][۵] علاوه بر این برای مجازی سازی عمومی و تقسیمبندی منابع سیستم. از زمان DragonFly 1.7 توسط DragonFly BSD در اجرای vkernel استفاده میشود، [۲] که اولین بار در سپتامبر ۲۰۰۶ ظاهر شد، [۳][۶] و اولین بار با DragonFly 1.8 در ژانویه ۲۰۰۷ در شاخه پایدار آزاد شد. [۱][۷][۸][۹] هدف بلند مدت، علاوه بر کاهش توسعه هسته، آسانتر کردن پشتیبانی از خوشههای رایانه ای متصل به اینترنت بدون به خطر انداختن امنیت محلی است. [۳][۴] مفاهیم مشابهی در سیستم عاملهای دیگر نیز وجود دارد. در لینوکس، یک مفهوم مجازی سازی مشابه به عنوان لینوکس حالت کاربر شناخته میشود. [۱۰][۷] در حالی که در NetBSD از تابستان ۲۰۰۷، کانون اصلی زیرساخت ریپ کردن هسته بودهاست. [۱۱]
مفهوم هسته مجازی تقریباً مخالف مفهوم unikernel است - با هسته مجازی، اجزای هسته برای ایجاد سهولت در توسعه هسته و رفع اشکال در فضای کاربر اجرا میشوند و توسط هسته سیستم عامل معمولی پشتیبانی میشوند. در حالی که با unikernel، اجزای سطح کاربر برای عملکرد بیشتر مستقیماً در فضای هسته اجرا میشوند، پشتیبانی شده توسط سختافزار baremetal یا پشته مجازی سازی سختافزار. با این حال، از vkernels و unikernels میتوان برای کارهای مشابه استفاده کرد، به عنوان مثال، برای قرنطینه و تست نرمافزار در یک محیط مجازی با هزینه کم. در حقیقت، ریپ کردن هسته NetBSD، در اصل با تمرکز بر اجرای اجزای هسته در فضای کاربر، از آن زمان به فضای یک هسته نیز تغییر مکان دادهاست (برای پشتیبانی از هر دو نمونه به دنبال مانیتور Anykernel است).
مفهوم هسته مجازی با زندانهای فریبیاسدی متفاوت است، زیرا زندان فقط برای جداسازی منابع در نظر گرفته شدهاست و نمیتواند برای توسعه و آزمایش عملکرد هسته جدید در سرزمین کاربر مورد استفاده قرار گیرد، زیرا هر زندان از هسته مشابهی برخوردار است. [۷] (با این حال DragonFly همچنان از پشتیبانی زندانهای فریبیاسدی نیز برخوردار است. [۷])
در DragonFly، میتوان هسته مجازی را به عنوان یک معماری رایانه ای درجه یک، قابل مقایسه با i386 یا amd64 در نظر گرفت، و طبق گفته متیو دیلون در حدود سال ۲۰۰۷، میتواند به عنوان یک نقطه شروع برای انتقال DragonFly BSD به معماریهای جدید استفاده شود. [۱۲]
هسته مجازی DragonFly توسط هسته میزبان از طریق فراخوان سیستمی جدید پشتیبانی میشود که به مدیریت فضای آدرس حافظه مجازی (vmspace) کمک میکند - vmspace_create()
، [۳][۹][۱۳] و همچنین برنامههای افزودنی برای چندین فراخوان سیستم موجود مانند mmap
's madvise
- mcontrol
. [۹][۱۴][۱۵]
منابع
[ویرایش]- ↑ ۱٫۰ ۱٫۱ "Release Notes for DragonFly 1.8.0". DragonFly BSD. 2007-01-30. Retrieved 2019-04-08.
- ↑ ۲٫۰ ۲٫۱ Sascha Wildner (2007-01-08). "vkernel, vcd, vkd, vke — virtual kernel architecture". DragonFly Miscellaneous Information Manual. DragonFly BSD. Lay summary.
{{cite web}}
: Cite uses deprecated parameter|lay-url=
(help) - ↑ ۳٫۰ ۳٫۱ ۳٫۲ ۳٫۳ Matthew Dillon (2006-09-02). "Cache coherency, clustering, and Kernel virtualization". DragonFly BSD. http://leaf.dragonflybsd.org/mailarchive/kernel/2006-09/msg00000.html.
- ↑ ۴٫۰ ۴٫۱ Jeremy C. Reed, ed. (2007-02-10). "Answers from Matt Dillon about DragonFly's virtual kernel". BSD Newsletter .com. Reed Media .net. Archived from the original on 2007-02-24.
- ↑ Daniel Lorch (2009-06-10). "Porting the HAMMER File System to Linux" (PDF). Lay summary (PDF).
UML runs the Linux kernel as a userspace process, analogous to DragonFly BSD’s virtual kernels … allow for a quick recompile-restart cycle and can be debugged easily with standard gdb.
{{cite web}}
: Cite uses deprecated parameter|lay-url=
(help) - ↑ Matthew Dillon (2006). "sys/vkernel.h". BSD Cross Reference. DragonFly BSD.
- ↑ ۷٫۰ ۷٫۱ ۷٫۲ ۷٫۳ David Chisnall (2007-06-15). "DragonFly BSD: UNIX for Clusters?". InformIT. Prentice Hall Professional. Retrieved 2019-03-06.
- ↑ Aggelos Economopoulos (2010-03-29). "A peek at the DragonFly Virtual Kernel (part 1)". LWN.net. Retrieved 2019-04-08.
- ↑ ۹٫۰ ۹٫۱ ۹٫۲ Aggelos Economopoulos (2010-04-16). "A peek at the DragonFly Virtual Kernel (part 2)". LWN.net. Retrieved 2019-04-08.
- ↑ Koen Vervloesem (2010-04-21). "DragonFly BSD 2.6: towards a free clustering operating system". LWN.net. Retrieved 2019-03-07.
- ↑ Antti Kantee (2007-08-05). "CVS commit: src/sys/rump". NetBSD. http://mail-index.netbsd.org/source-changes/2007/08/05/msg188696.html. "Introduce RUMPs - Runnable Userspace Meta-Programs"
- ↑ Jeremy Andrews (2007-08-06). "Interview: Matthew Dillon". KernelTrap. Archived from the original on 7 February 2012. Retrieved 2019-03-03.
{{cite web}}
: نگهداری یادکرد:ربات:وضعیت نامعلوم پیوند اصلی (link) - ↑ Matthew Dillon (2006). "vm/vm_vmspace.c § sys_vmspace_create()". BSD Cross Reference. DragonFly BSD.
- ↑ "madvise, posix_madvise, mcontrol — give advice about use of memory". DragonFly System Calls Manual. DragonFly BSD. Lay summary.
{{cite web}}
: Cite uses deprecated parameter|lay-url=
(help) - ↑ "kern/syscalls.master". BSD Cross Reference. DragonFly BSD.