Mexanizm: Foydalanuvchiga kirish urinishlari avtorizatsiya serveriga yo'naltiriladi
Siyosat: Avtorizatsiya serveri ma'lumotlar bazasida saqlangan parollar bilan tasdiqlangan parolni talab qiladi
Mexanizm va siyosat bir-biridan ajratilganligi sababli, siyosatni osonlikcha masalan. dan foydalanishni talab qiladi xavfsizlik belgisi.
Minimal mikrokernelga juda oddiy qoidalar kiritilgan,[26] va uning mexanizmlari yadro ustida ishlayotgan narsalarga (operatsion tizimning qolgan qismi va boshqa dasturlarga) qaysi siyosatlarni qabul qilishni hal qilishga imkon beradi (xotirani boshqarish, yuqori darajadagi jarayonlarni rejalashtirish, fayl tizimini boshqarish va hk).[5][22] Monolitik yadro aksariyat siyosatlarni o'z ichiga oladi, shuning uchun tizimning qolgan qismi ularga ishonishini cheklaydi.
Har bir Brinch Xansen mexanizm va siyosatni ajratish foydasiga dalillar keltirdi.[5][22] Ushbu ajratishni to'g'ri bajarmaslik, mavjud operatsion tizimlarda jiddiy yangilik etishmasligining asosiy sabablaridan biridir,[5] kompyuter arxitekturasida keng tarqalgan muammo.[27][28][29] Monolitik dizayn "yadro rejimi" / "foydalanuvchi rejimi" me'moriy yondashuvi bilan himoya qilinadi (texnik deb nomlanadi ierarxik himoya domenlari) odatiy tijorat tizimlarida keng tarqalgan;[30] aslida, himoyaga muhtoj har bir modul yadro tarkibiga kiritilgani ma'qul.[30] Monolitik dizayn va "imtiyozli rejim" o'rtasidagi bu bog'liqlikni mexanizm-siyosatni ajratishning asosiy masalasida qayta tiklash mumkin;[5] aslida "imtiyozli rejim" me'moriy yondashuv himoya mexanizmini xavfsizlik siyosati bilan birlashtiradi, asosiy muqobil me'moriy yondashuv esa qobiliyatga asoslangan adreslash, ikkalasini aniq ajratib turadi, tabiiy ravishda mikrokernel dizayniga olib keladi[5] (qarang Himoya va xavfsizlikni ajratish).
Esa monolit yadrolari ularning barcha kodlarini bir xil manzil maydonida bajaring (yadro maydoni), mikrokernellar kod bazasining saqlanib turishi va modulliligini oshirishga qaratilgan o'z xizmatlarining aksariyatini foydalanuvchi makonida ishlatishga harakat qiling.[4] Ko'pgina yadrolar ushbu toifalarning biriga to'liq mos kelmaydi, aksincha, ushbu ikkita dizayn o'rtasida joylashgan. Ular deyiladi gibrid yadrolari. Kabi ekzotik dizaynlar nanokernellar va ekzekernellar mavjud, ammo ishlab chiqarish tizimlari uchun kamdan kam qo'llaniladi. The Xen masalan, gipervizektor tashqi makondir.
Monolit yadrolari
Asosiy maqola: Monolitik yadro
Monolit yadro diagrammasi
Monolitik yadroda barcha OS xizmatlari asosiy yadro iplari bilan birga ishlaydi va shu bilan bir xil xotira maydonida joylashgan bo'ladi. Ushbu yondashuv boy va kuchli apparat ta'minotini ta'minlaydi. Kabi ba'zi ishlab chiquvchilar UNIX ishlab chiquvchi Ken Tompson, "monolitik yadroni tatbiq etish osonroq" ekanligini tasdiqlang[31] mikrokernellarga qaraganda. Monolitik yadrolarning asosiy kamchiliklari - bu tizim komponentlari o'rtasidagi bog'liqlik - qurilma drayveridagi xato butun tizimni ishdan chiqarishi mumkin - va katta yadrolarni saqlash juda qiyin bo'lishi mumkin.
An'anaviy ravishda Unixga o'xshash operatsion tizimlar tomonidan ishlatilgan monolitik yadrolarda barcha operatsion tizimning asosiy funktsiyalari va qurilma drayverlari mavjud. Bu UNIX tizimlarining an'anaviy dizayni. Monolitik yadro - bu yadro bilan bog'liq har qanday vazifani bajarish uchun zarur bo'lgan barcha kodlarni o'z ichiga olgan bitta dastur. Kutubxonaga joylashtirib bo'lmaydigan ko'pgina dasturlar kirishi mumkin bo'lgan har bir qism yadro makonida joylashgan: Qurilma drayverlari, rejalashtiruvchi, xotirani boshqarish, fayl tizimlari va tarmoq to'plamlari. Ilovalarga ushbu tizimning barcha xizmatlaridan foydalanishlari uchun ko'plab tizim qo'ng'iroqlari taqdim etiladi. Monolitik yadro, dastlab kerak bo'lmasligi mumkin bo'lgan quyi tizimlar bilan to'ldirilgan bo'lsa-da, umumiy ma'noda ko'proq mos keladigan bo'lsa-da, apparat uchun maxsus ishlab chiqilganidan tezroq yoki tezroq bo'lgan joyga sozlanishi mumkin. Zamonaviy monolit yadrolari, masalan Linux (ning yadrolaridan biri GNU operatsion tizim) va FreeBSD, ikkalasi ham Unix-ga o'xshash operatsion tizimlar toifasiga kiradi, modullarni ish vaqtida yuklash qobiliyatiga ega va shu bilan yadro imkoniyatlarini kerakli darajada oson kengaytirishga imkon beradi, shu bilan birga yadro maydonida ishlaydigan kod miqdorini minimallashtirishga yordam beradi. Monolitik yadroda ba'zi afzalliklar ushbu fikrlarga bog'liq:
Dasturiy ta'minot kamroq bo'lganligi sababli, u tezroq bo'ladi.
Dasturiy ta'minotning bitta bo'lagi bo'lgani uchun u manba shaklida ham, kompilyatsiya qilingan shakllarda ham kichikroq bo'lishi kerak.
Kamroq kod, odatda kamroq xavfsizlik muammolariga aylanishi mumkin bo'lgan kamroq xatolarni anglatadi.
Monolitik yadroda ko'p ishlar tizim qo'ng'iroqlari orqali amalga oshiriladi. Bular odatda jadval tuzilmasida saqlanadigan interfeyslar bo'lib, ular yadro ichidagi ba'zi bir quyi tizimlarga, masalan, disk operatsiyalari. Asosan qo'ng'iroqlar dasturlarda amalga oshiriladi va so'rovning tekshirilgan nusxasi tizim qo'ng'irog'i orqali uzatiladi. Shunday qilib, umuman sayohat qilish juda uzoq emas. Monolitik Linux yadroni nafaqat modullarni dinamik ravishda yuklash qobiliyati, balki xususiylashtirish qulayligi tufayli ham juda kichik qilish mumkin. Darhaqiqat, juda ko'p miqdordagi yordamchi dasturlar va bitta disketadagi boshqa dasturlarga mos keladigan va hali ham to'liq ishlaydigan operatsion tizimni ta'minlaydigan ba'zi versiyalar mavjud (ulardan eng mashhurlaridan biri muLinux). Bu yadroni kichraytirish qobiliyati, shuningdek, ulardan foydalanish tez o'sishiga olib keldi GNU/Linux yilda o'rnatilgan tizimlar.
Ushbu turdagi yadrolar operatsion tizimning asosiy funktsiyalaridan va ish vaqtida modullarni yuklash qobiliyatiga ega qurilmalar drayverlaridan iborat. Ular asosiy apparatning boy va kuchli abstraktsiyalarini ta'minlaydi. Ular oddiy oddiy abstraktsiyalar to'plamini taqdim etadilar va qo'shimcha funktsiyalarni ta'minlash uchun serverlar deb nomlangan dasturlardan foydalanadilar. Ushbu maxsus yondashuv uskuna ustidan yuqori darajadagi virtual interfeysni belgilaydi, shu bilan birga operatsion tizim xizmatlarini, masalan, nazoratchi rejimida ishlaydigan bir nechta modullarda operatsion tizim xizmatlarini amalga oshirishni talab qiladi, bu bir nechta kamchilik va cheklovlarga ega. :
Yadroda kodlash qiyin bo'lishi mumkin, chunki qisman umumiy kutubxonalardan foydalanish mumkin emas (masalan, to'liq xususiyatli) libckabi manba darajasida tuzatuvchini ishlatish kerakligi sababli gdb. Kompyuterni qayta yoqish ko'pincha talab qilinadi. Bu faqat ishlab chiquvchilar uchun qulaylik muammosi emas. Nosozliklarni tuzatish qiyinlashganda va qiyinchiliklar kuchaygan sari kod "buggier" bo'lish ehtimoli yuqori bo'ladi.
Yadroning bir qismidagi xatolar kuchli yon ta'sirga ega; yadrodagi har qanday funktsiya barcha imtiyozlarga ega bo'lgani uchun, bitta funktsiyadagi xato boshqa, umuman yadro yoki biron bir ishlaydigan dasturning ma'lumotlar tuzilishini buzishi mumkin.
Kernellar ko'pincha juda katta bo'lib, ularni saqlash qiyin bo'ladi.
Ushbu operatsiyalarga xizmat ko'rsatadigan modullar umuman olganda alohida bo'lsa ham, kod integratsiyasi qattiq va uni to'g'ri bajarish qiyin.
Modullar bir xil ishlaydi manzil maydoni, xato butun tizimni tushirishi mumkin.
Monolit yadrolari ko'chma emas; shuning uchun ular operatsion tizim ishlatilishi kerak bo'lgan har bir yangi arxitektura uchun qayta yozilishi kerak.
In mikrokernel yondashuv, yadroning o'zi faqat bajarilishini ta'minlaydigan asosiy funktsiyalarni ta'minlaydi serverlar, avvalgi yadro funktsiyalarini bajaradigan alohida dasturlar, masalan, qurilma drayverlari, GUI serverlari va boshqalar.
Monolitik yadrolarga misollar AIX yadro, HP-UX yadrosi va Solaris yadrosi.
Mikrokernellar
Asosiy maqola: Mikrokernel
Mikrokernel (qisqartirilgan mK yoki uK) - bu operatsion tizimni loyihalashtirish yondashuvini tavsiflovchi atama bo'lib, tizimning funktsional imkoniyatlari an'anaviy "yadro" dan tashqariga, "minimal" yadro orqali aloqa qiladigan "serverlar" to'plamiga o'tkaziladi. , "tizim maydonida" imkon qadar kamroq va "foydalanuvchi maydonida" imkon qadar ko'proq qoldiring. Muayyan platforma yoki qurilmaga mo'ljallangan mikrokernel faqat ishlashi uchun zarur bo'lgan narsaga ega bo'ladi. Mikrokernel yondashuvi apparat bo'yicha oddiy abstraktsiyani, ibtidoiylar to'plami yoki tizim qo'ng'iroqlari kabi minimal OS xizmatlarini amalga oshirish xotirani boshqarish, ko'p vazifaliva jarayonlararo aloqa. Kabi boshqa xizmatlar, shu jumladan odatda yadro tomonidan taqdim etiladigan xizmatlar, masalan tarmoq, deb nomlangan foydalanuvchi-kosmik dasturlarida amalga oshiriladi serverlar. Mikroternellarni parvarish qilish monolit yadrolarga qaraganda osonroq, ammo juda ko'p tizim qo'ng'iroqlari va kontekst kalitlari tizimni sekinlashtirishi mumkin, chunki ular odatda oddiy funktsiya chaqiruvlaridan ko'ra ko'proq qo'shimcha xarajatlar ishlab chiqaradi.
Faqatgina imtiyozli rejimda bo'lishni talab qiladigan qismlargina yadro makonida joylashgan: IPC (Inter-Process Communication), asosiy scheduler yoki rejalashtirish primitivlari, asosiy xotira bilan ishlash, asosiy I / U primitivlari. Hozirda ko'plab muhim qismlar foydalanuvchi makonida ishlaydi: to'liq rejalashtiruvchi, xotira bilan ishlash, fayl tizimlari va tarmoq to'plamlari. Mikro yadrolar an'anaviy "monolitik" yadro dizayniga reaktsiya sifatida ixtiro qilingan, shu bilan tizimning barcha funktsiyalari protsessorning maxsus "tizim" rejimida ishlaydigan bitta statik dasturga kiritilgan. Mikrokernelda faqat eng asosiy vazifalar bajariladi, masalan, ba'zi bir qo'shimcha qurilmalarga kirish, xotirani boshqarish va jarayonlar orasidagi xabarlarni muvofiqlashtirish. Mikro yadrolardan foydalanadigan ba'zi tizimlar QNX va HURD. Bo'lgan holatda QNX va Hurd foydalanuvchi seanslari tizimning o'zi yoki ko'rinadigan ko'rinishlari bo'lishi mumkin. Mikrokernel arxitekturasining mohiyati uning ba'zi afzalliklarini namoyish etadi:
Ta'minlash osonroq
Yamalar alohida misolda sinovdan o'tkazilishi mumkin va keyin ishlab chiqarish namunasini olish uchun almashtirilishi mumkin.
Tez ishlab chiqish vaqti va yangi dasturiy ta'minot yadroni qayta yuklamasdan sinovdan o'tkazilishi mumkin.
Umuman olganda ko'proq qat'iyatlilik, agar bitta misol pichanzorga aylansa, uni tez-tez operatsion oyna bilan almashtirish mumkin.
Ko'pgina mikrokernellarda a xabar o'tmoqda bir serverdan ikkinchisiga so'rovlarni bajarish uchun tizim. Xabarlarni uzatish tizimi odatda a da ishlaydi port mikrokernel bilan asos. Masalan, qo'shimcha xotira uchun so'rov yuborilsa, mikrokernel bilan port ochiladi va so'rov yuboriladi. Mikrokernel ichida bo'lgandan so'ng, qadamlar tizim qo'ng'iroqlariga o'xshaydi. Mantiqiy asos shundaki, u tizimning arxitekturasida modullikni keltirib chiqaradi, bu esa toza tizimni talab qiladi, disk raskadrovka qilishni osonlashtiradi yoki dinamik ravishda o'zgartiradi, foydalanuvchilarning ehtiyojlariga moslashtiriladi va yanada yaxshi ishlaydi. Ular shunga o'xshash operatsion tizimlarning bir qismidir GNU Hurd, MINIX, MkLinux, QNX va Redox OS. Mikrokernellar o'zlari juda kichik bo'lishiga qaramay, barcha kerakli yordamchi kodlar bilan birgalikda ular aslida monolit yadrolardan kattaroqdir. Monolitik yadrolarning advokatlari, shuningdek, operatsion tizimning aksariyati to'g'ridan-to'g'ri apparat bilan o'zaro aloqada bo'lmagan mikrokernel tizimlarining ikki bosqichli tuzilishi tizim samaradorligi jihatidan ahamiyatsiz bo'lmagan xarajatlarni keltirib chiqarmoqda. Ushbu turdagi yadrolar odatda minimal xizmatlarni taqdim etadi, masalan, xotira manzil maydonlarini aniqlash, jarayonlararo aloqa (IPC) va jarayonni boshqarish. Uskuna jarayonlarini boshqarish kabi boshqa funktsiyalar to'g'ridan-to'g'ri mikrokernellar tomonidan boshqarilmaydi. Mikro yadrolarning tarafdorlari ushbu monolit yadrolarning zararli tomoni shundaki, yadrodagi xato butun tizimning ishdan chiqishiga olib kelishi mumkin. Ammo, agar yadro jarayoni ishdan chiqsa, shunchaki xatoga yo'l qo'ygan xizmatni qayta ishga tushirish orqali umuman tizimning qulab tushishini oldini olish mumkin.
Tarmoq kabi yadro tomonidan taqdim etiladigan boshqa xizmatlar foydalanuvchi uchun mo'ljallangan kosmik dasturlarda amalga oshiriladi serverlar. Serverlar oddiygina dasturlarni ishga tushirish va to'xtatish orqali operatsion tizimni o'zgartirishga imkon beradi. Masalan, tarmoqni qo'llab-quvvatlamaydigan mashina uchun tarmoq serveri ishga tushirilmagan. Ma'lumotlarni turli xil dasturlar va serverlar o'rtasida ko'chirish uchun yadroga kirish va chiqish vazifasi monolit yadrolarga nisbatan mikro yadrolarning samaradorligiga zarar etkazadigan qo'shimcha xarajatlarni keltirib chiqaradi.
Ammo mikrokerneldagi kamchiliklar mavjud. Ba'zilar:
Kattaroq yugurish xotira izi
Interfeys uchun ko'proq dasturiy ta'minot talab qilinadi, ishlashni yo'qotish ehtimoli mavjud.
Monolitik yadroda nusxa ko'chirish bilan solishtirganda uzoqroq sayohat qilishlari sababli xabarlarni tuzatish qiyinroq bo'lishi mumkin.
Umuman olganda jarayonni boshqarish juda murakkab bo'lishi mumkin.
Mikrokernellarning kamchiliklari o'ta kontekstga asoslangan. As an example, they work well for small single-purpose (and critical) systems because if not many processes need to run, then the complications of process management are effectively mitigated.
A microkernel allows the implementation of the remaining part of the operating system as a normal application program written in a yuqori darajadagi til, and the use of different operating systems on top of the same unchanged kernel. It is also possible to dynamically switch among operating systems and to have more than one active simultaneously.[22]
Monolithic kernels vs. microkernels
As the computer kernel grows, so grows the size and vulnerability of its ishonchli hisoblash bazasi; and, besides reducing security, there is the problem of enlarging the xotira izi. This is mitigated to some degree by perfecting the virtual xotira system, but not all kompyuter arxitekturalari have virtual memory support.[32] To reduce the kernel's footprint, extensive editing has to be performed to carefully remove unneeded code, which can be very difficult with non-obvious interdependencies between parts of a kernel with millions of lines of code.
By the early 1990s, due to the various shortcomings of monolithic kernels versus microkernels, monolithic kernels were considered obsolete by virtually all operating system researchers.[iqtibos kerak] As a result, the design of Linux as a monolithic kernel rather than a microkernel was the topic of a famous debate between Linus Torvalds va Endryu Tanenbaum.[33] There is merit on both sides of the argument presented in the Tanenbaum - Torvalds bahslari.
Ishlash
Monolit yadrolari are designed to have all of their code in the same address space (yadro maydoni), which some developers argue is necessary to increase the performance of the system.[34] Some developers also maintain that monolithic systems are extremely efficient if well written.[34] The monolithic model tends to be more efficient[35] through the use of shared kernel memory, rather than the slower IPC system of microkernel designs, which is typically based on xabar o'tmoqda.[iqtibos kerak]
The performance of microkernels was poor in both the 1980s and early 1990s.[36][37] However, studies that empirically measured the performance of these microkernels did not analyze the reasons of such inefficiency.[36] The explanations of this data were left to "folklore", with the assumption that they were due to the increased frequency of switches from "kernel-mode" to "user-mode", to the increased frequency of jarayonlararo aloqa and to the increased frequency of kontekst kalitlari.[36]
In fact, as guessed in 1995, the reasons for the poor performance of microkernels might as well have been: (1) an actual inefficiency of the whole microkernel yondashuv, (2) the particular tushunchalar implemented in those microkernels, and (3) the particular amalga oshirish of those concepts. Therefore it remained to be studied if the solution to build an efficient microkernel was, unlike previous attempts, to apply the correct construction techniques.[36]
On the other end, the hierarchical protection domains architecture that leads to the design of a monolithic kernel[30] has a significant performance drawback each time there's an interaction between different levels of protection (i.e., when a process has to manipulate a data structure both in "user mode" and "supervisor mode"), since this requires message copying qiymati bo'yicha.[38]
The gibrid yadro approach combines the speed and simpler design of a monolithic kernel with the modularity and execution safety of a microkernel.
Hybrid (or modular) kernels
Asosiy maqola: Gibrid yadro
Hybrid kernels are used in most commercial operating systems such as Microsoft Windows NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, XP, Vista, 7, 8, 8.1 and 10. Apple Inco'z macOS uses a hybrid kernel called XNU which is based upon code from OSF / 1"s Mach yadrosi (OSFMK 7.3)[39] va FreeBSD"s monolit yadro. They are similar to micro kernels, except they include some additional code in kernel-space to increase performance. These kernels represent a compromise that was implemented by some developers to accommodate the major advantages of both monolithic and micro kernels. These types of kernels are extensions of micro kernels with some properties of monolithic kernels. Unlike monolithic kernels, these types of kernels are unable to load modules at runtime on their own. Hybrid kernels are micro kernels that have some "non-essential" code in kernel-space in order for the code to run more quickly than it would were it to be in user-space. Hybrid kernels are a compromise between the monolithic and microkernel designs. This implies running some services (such as the tarmoq to'plami yoki fayl tizimi) in kernel space to reduce the performance overhead of a traditional microkernel, but still running kernel code (such as device drivers) as servers in user space.
Many traditionally monolithic kernels are now at least adding (or else using) the module capability. The most well known of these kernels is the Linux kernel. The modular kernel essentially can have parts of it that are built into the core kernel binary or binaries that load into memory on demand. It is important to note that a code tainted module has the potential to destabilize a running kernel. Many people become confused on this point when discussing micro kernels. It is possible to write a driver for a microkernel in a completely separate memory space and test it before "going" live. When a kernel module is loaded, it accesses the monolithic portion's memory space by adding to it what it needs, therefore, opening the doorway to possible pollution. A few advantages to the modular (or) Hybrid kernel are:
Faster development time for drivers that can operate from within modules. No reboot required for testing (provided the kernel is not destabilized).
On demand capability versus spending time recompiling a whole kernel for things like new drivers or subsystems.
Faster integration of third party technology (related to development but pertinent unto itself nonetheless).
Modules, generally, communicate with the kernel using a module interface of some sort. The interface is generalized (although particular to a given operating system) so it is not always possible to use modules. Often the device drivers may need more flexibility than the module interface affords. Essentially, it is two system calls and often the safety checks that only have to be done once in the monolithic kernel now may be done twice. Some of the disadvantages of the modular approach are:
With more interfaces to pass through, the possibility of increased bugs exists (which implies more security holes).
Maintaining modules can be confusing for some administrators when dealing with problems like symbol differences.
Nanokernels
Asosiy maqola: Nanokernel
A nanokernel delegates virtually all services – including even the most basic ones like to'xtatuvchidir yoki taymer - ga qurilma drayverlari to make the kernel memory requirement even smaller than a traditional microkernel.[40]
Exokernellar
Asosiy maqola: Exokernel
Exokernels are a still-experimental approach to operating system design. They differ from the other types of kernels in that their functionality is limited to the protection and multiplexing of the raw hardware, providing no hardware abstractions on top of which to develop applications. This separation of hardware protection from hardware management enables application developers to determine how to make the most efficient use of the available hardware for each specific program.
Exokernels in themselves are extremely small. However, they are accompanied by library operating systems (see also unikernel), providing application developers with the functionalities of a conventional operating system. A major advantage of exokernel-based systems is that they can incorporate multiple library operating systems, each exporting a different API, for example one for high level UI development and one for haqiqiy vaqt boshqaruv.
History of kernel development
Early operating system kernels
Asosiy maqola: Operatsion tizimlarning tarixi
Strictly speaking, an operating system (and thus, a kernel) is not talab qilinadi to run a computer. Programs can be directly loaded and executed on the "bare metal" machine, provided that the authors of those programs are willing to work without any hardware abstraction or operating system support. Most early computers operated this way during the 1950s and early 1960s, which were reset and reloaded between the execution of different programs. Eventually, small ancillary programs such as program loaders va tuzatuvchilar were left in memory between runs, or loaded from ROM. As these were developed, they formed the basis of what became early operating system kernels. The "bare metal" approach is still used today on some video o'yin konsollari va o'rnatilgan tizimlar,[41] but in general, newer computers use modern operating systems and kernels.
1969 yilda RC 4000 dasturlash tizimi introduced the system design philosophy of a small nucleus "upon which operating systems for different purposes could be built in an orderly manner",[42] what would be called the microkernel approach.
Time-sharing operating systems
Asosiy maqola: Vaqtni taqsimlash
In the decade preceding Unix, computers had grown enormously in power – to the point where computer operators were looking for new ways to get people to use their spare time on their machines. One of the major developments during this era was vaqtni taqsimlash, whereby a number of users would get small slices of computer time, at a rate at which it appeared they were each connected to their own, slower, machine.[43]
The development of time-sharing systems led to a number of problems. One was that users, particularly at universities where the systems were being developed, seemed to want to buzmoq the system to get more Markaziy protsessor vaqt. Shu sababli, xavfsizlik va kirishni boshqarish became a major focus of the Multics project in 1965.[44] Another ongoing issue was properly handling computing resources: users spent most of their time staring at the terminal and thinking about what to input instead of actually using the resources of the computer, and a time-sharing system should give the CPU time to an active user during these periods. Finally, the systems typically offered a xotira iyerarxiyasi several layers deep, and partitioning this expensive resource led to major developments in virtual xotira tizimlar.
Amiga
Asosiy maqola: AmigaOS
The Commodore Amiga was released in 1985, and was among the first – and certainly most successful – home computers to feature an advanced kernel architecture. The AmigaOS kernel's executive component, exec.library, uses a microkernel message-passing design, but there are other kernel components, like graphics.library, that have direct access to the hardware. There is no memory protection, and the kernel is almost always running in user mode. Only special actions are executed in kernel mode, and user-mode applications can ask the operating system to execute their code in kernel mode.
Unix
Asosiy maqola: Unix
A diagram of the predecessor/successor family relationship for Unixga o'xshash tizimlar
During the design phase of Unix, programmers decided to model every high-level device as a file, because they believed the purpose of hisoblash edi ma'lumotlarni o'zgartirish.[45]
Masalan; misol uchun, printerlar were represented as a "file" at a known location – when data was copied to the file, it printed out. Other systems, to provide a similar functionality, tended to virtualize devices at a lower level – that is, both devices va files would be instances of some pastki daraja kontseptsiya. Virtuallashtirish the system at the file level allowed users to manipulate the entire system using their existing fayllarni boshqarish utilities and concepts, dramatically simplifying operation. As an extension of the same paradigm, Unix allows programmers to manipulate files using a series of small programs, using the concept of quvurlar, which allowed users to complete operations in stages, feeding a file through a chain of single-purpose tools. Although the end result was the same, using smaller programs in this way dramatically increased flexibility as well as ease of development and use, allowing the user to modify their workflow by adding or removing a program from the chain.
In the Unix model, the operatsion tizim consists of two parts: first, the huge collection of utility programs that drive most operations; second, the kernel that runs the programs.[45] Under Unix, from a programming standpoint, the distinction between the two is fairly thin; the kernel is a program, running in supervisor mode,[46] that acts as a program loader and supervisor for the small utility programs making up the rest of the system, and to provide qulflash va I / O services for these programs; beyond that, the kernel didn't intervene at all in foydalanuvchi maydoni.
Over the years the computing model changed, and Unix's treatment of everything as a file or byte stream no longer was as universally applicable as it was before. Garchi a Terminal could be treated as a file or a byte stream, which is printed to or read from, the same did not seem to be true for a grafik foydalanuvchi interfeysi. Tarmoq posed another problem. Even if network communication can be compared to file access, the low-level packet-oriented architecture dealt with discrete chunks of data and not with whole files. As the capability of computers grew, Unix became increasingly cluttered with code. It is also because the modularity of the Unix kernel is extensively scalable.[47] While kernels might have had 100,000 kod satrlari in the seventies and eighties, kernels like Linux, of modern Unix successors like GNU, have more than 13 million lines.[48]
Modern Unix-derivatives are generally based on module-loading monolithic kernels. Bunga misollar Linux yadrosi in the many tarqatish ning GNU, IBM AIX, shuningdek Berkli dasturiy ta'minotini tarqatish variant kernels such as FreeBSD, DragonflyBSD, OpenBSD, NetBSDva macOS. Apart from these alternatives, amateur developers maintain an active operating system development community, populated by self-written hobby kernels which mostly end up sharing many features with Linux, FreeBSD, DragonflyBSD, OpenBSD or NetBSD kernels and/or being compatible with them.[49]
Mac OS
Asosiy maqolalar: Klassik Mac OS va macOS
olma first launched its klassik Mac OS in 1984, bundled with its Macintosh shaxsiy kompyuter. Apple moved to a nanokernel design in Mac OS 8.6. Against this, the modern macOS (originally named Mac OS X) is based on Darvin, which uses a hybrid kernel called XNU, which was created by combining the 4.3BSD kernel and the Mach yadrosi.[50]
Microsoft Windows
Asosiy maqola: Microsoft Windows tarixi
Microsoft Windows was first released in 1985 as an add-on to MS-DOS. Because of its dependence on another operating system, initial releases of Windows, prior to Windows 95, were considered an ish muhiti (bilan aralashtirmaslik kerak operatsion tizim). This product line continued to evolve through the 1980s and 1990s, with the Windows 9x series adding 32-bit addressing and pre-emptive multitasking; but ended with the release of Windows Me 2000 yilda.
Microsoft also developed Windows NT, an operating system with a very similar interface, but intended for high-end and business users. This line started with the release of Windows NT 3.1 in 1993, and was introduced to general users with the release of Windows XP in October 2001—replacing Windows 9x with a completely different, much more sophisticated operating system. This is the line that continues with Windows 10.
The Windows NT arxitekturasi's kernel is considered a hybrid kernel because the kernel itself contains tasks such as the Window Manager and the IPC Managers, with a client/server layered subsystem model.[51]
IBM Supervisor
Supervisory program or supervisor is a kompyuter dasturi, usually part of an operatsion tizim, that controls the execution of other muntazam va tartibga soladi work scheduling, kirish / chiqish operatsiyalar, error actions, and similar functions and regulates the flow of work in a ma'lumotlarni qayta ishlash tizim.
Historically, this term was essentially associated with IBMning qatori asosiy ramka operating systems starting with OS / 360. In other operating systems, the supervisor is generally called the kernel.
In the 1970s, IBM further abstracted the supervisor davlat from the hardware, resulting in a gipervizator bu yoqilgan to'liq virtualizatsiya, i.e. the capacity to run multiple operating systems on the same machine totally independently from each other. Hence the first such system was called Virtual mashina yoki VM.
Development of microkernels
Garchi Mach, da ishlab chiqilgan Karnegi Mellon universiteti from 1985 to 1994, is the best-known general-purpose microkernel, other microkernels have been developed with more specific aims. The L4 mikrokernellar oilasi (mainly the L3 and the L4 kernel) was created to demonstrate that microkernels are not necessarily slow.[52] Newer implementations such as Fiyasko va Pista are able to run Linux next to other L4 processes in separate address spaces.[53][54]
Qo'shimcha ravishda, QNX is a microkernel which is principally used in o'rnatilgan tizimlar,[55] va ochiq manbali dasturiy ta'minot MINIX, while originally created for educational purposes, is now focussed on being a highly reliable and self-healing microkernel OS.
Shuningdek qarang
Operatsion tizim yadrolarini taqqoslash
Jarayonlararo aloqa
Operatsion tizim
Virtual xotira
Izohlar
^ It may depend on the Kompyuter arxitekturasi
^ a b "Kernel". Linfo. Bellevue Linux Users Group. Olingan 15 sentyabr 2016.
^ Randal E. Bryant; David R. O’Hallaron (2016). Computer Systems: A Programmer's Perspective (Uchinchi nashr). Pearson. p. 17. ISBN 978-0134092669.
^ qarz Daemon (hisoblash)
^ a b Roch 2004
^ a b v d e f g Wulf 1974 pp.337–345
^ a b Silberschatz 1991
^ Tanenbaum, Endryu S. (2008). Zamonaviy operatsion tizimlar (3-nashr). Prentice Hall. 50-51 betlar. ISBN 978-0-13-600663-3. . . . nearly all system calls [are] invoked from C programs by calling a library procedure . . . The library procedure . . . executes a TRAP instruction to switch from user mode to kernel mode and start execution . . .
^ Denning 1976
^ Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."
^ Schroeder 72
^ a b Linden 76
^ Stephane Eranian and David Mosberger, Virtual Memory in the IA-64 Linux Kernel, Prentice Hall PTR, 2002
^ Silberschatz & Galvin, Operating System Concepts, 4th ed, pp. 445 & 446
^ Hoch, Charles; J. C. Browne (July 1980). "An implementation of capabilities on the PDP-11/45". ACM SIGOPS operatsion tizimlarini ko'rib chiqish. 14 (3): 22–32. doi:10.1145/850697.850701. S2CID 17487360.
^ a b A Language-Based Approach to Security, Schneider F., Morrissett G. (Cornell University) and Harper R. (Carnegie Mellon University)
^ a b v P. A. Loskokko, S. D. Smalli, P. A. Muckelbauer, R. Teylor, S. J. Tyorner va J. F. Farrel. Muvaffaqiyatsizlikning muqarrarligi: zamonaviy hisoblash muhitida xavfsizlikni noto'g'ri taxmin qilish Arxivlandi 2007-06-21 da Orqaga qaytish mashinasi. 21-Axborot tizimlari xavfsizligi bo'yicha milliy konferentsiya materiallari, 303-314 betlar, 1998 yil oktyabr. [1].
^ Lepreau, Jay; Ford, Bryan; Hibler, Mike (1996). "The persistent relevance of the local operating system to global applications". Proceedings of the 7th workshop on ACM SIGOPS European workshop Systems support for worldwide applications - EW 7. p. 133. doi:10.1145/504450.504477. S2CID 10027108.
^ J. Anderson, Computer Security Technology Planning Study Arxivlandi 2011-07-21 da Orqaga qaytish mashinasi, Air Force Elect. Systems Div., ESD-TR-73-51, October 1972.
^ * Jerry H. Saltzer; Mike D. Schroeder (September 1975). "The protection of information in computer systems". IEEE ish yuritish. 63 (9): 1278–1308. CiteSeerX 10.1.1.126.9257. doi:10.1109/PROC.1975.9939. S2CID 269166.
^ Jonathan S. Shapiro; Jonathan M. Smith; David J. Farber (1999). "EROS: a fast capability system". Proceedings of the Seventeenth ACM Symposium on Operating Systems Principles. 33 (5): 170–185. doi:10.1145/319344.319163.
^ Dijkstra, E. W. Ketma-ket jarayonlar bilan hamkorlik qilish. Matematika. Dep., Technological U., Eindhoven, Sept. 1965.
^ a b v d e Brinch Hansen 70 pp.238–241
^ "SHARER, a time sharing system for the CDC 6600". Olingan 2007-01-07.
^ "Dynamic Supervisors – their design and construction". Olingan 2007-01-07.
^ Baiardi 1988
^ a b Levin 75
^ Denning 1980
^ Jürgen Nehmer, "The Immortality of Operating Systems, or: Is Research in Operating Systems still Justified?", Lecture Notes In Computer Science; Vol. 563. Proceedings of the International Workshop on Operating Systems of the 90s and Beyond. pp. 77–83 (1991) ISBN 3-540-54987-0 [2] quote: "The past 25 years have shown that research on operating system architecture had a minor effect on existing main stream [sic] systems."
^ Levy 84, p.1 quote: "Although the complexity of computer applications increases yearly, the underlying hardware architecture for applications has remained unchanged for decades."
^ a b v Levy 84, p.1 quote: "Conventional architectures support a single privileged mode ofoperation. This structure leads to monolithic design; any module needing protection must be part of the single operating system kernel. If, instead, any module could execute within a protected domain, systems could be built as a collection of independent modules extensible by any user."
^ "Open Sources: Voices from the Open Source Revolution". 1-56592-582-3. 1999 yil 29 mart.
^ Virtual addressing is most commonly achieved through a built-in xotirani boshqarish bo'limi.
^ Recordings of the debate between Torvalds and Tanenbaum can be found at dina.dk Arxivlandi 2012-10-03 da Orqaga qaytish mashinasi, groups.google.com, oreilly.com va Andrew Tanenbaum's website
^ a b Matthew Russell. "What Is Darwin (and How It Powers Mac OS X)". O'Reilly Media. quote: "The tightly coupled nature of a monolithic kernel allows it to make very efficient use of the underlying hardware [...] Microkernels, on the other hand, run a lot more of the core processes in userland. [...] Unfortunately, these benefits come at the cost of the microkernel having to pass a lot of information in and out of the kernel space through a process known as a context switch. Context switches introduce considerable overhead and therefore result in a performance penalty."
^ "Operating Systems/Kernel Models - Wikiversity". en.wikiversity.org.
^ a b v d Liedtke 95
^ Härtig 97
^ Hansen 73, section 7.3 p.233 "interactions between different levels of protection require transmission of messages by value"
^ Apple WWDC Videos (19 February 2017). "Apple WWDC 2000 Session 106 - Mac OS X: Kernel" - YouTube orqali.
^ KeyKOS Nanokernel Architecture Arxivlandi 2011-06-21 da Orqaga qaytish mashinasi
^ Ball: Embedded Microprocessor Designs, p. 129
^ Hansen 2001 (os), pp.17–18
^ "BSTJ version of C.ACM Unix paper". bell-labs.com.
^ Introduction and Overview of the Multics System, by F. J. Corbató and V. A. Vissotsky.
^ a b "The Single Unix Specification". The open group. Arxivlandi asl nusxasi 2016-10-04 da. Olingan 2016-09-29.
^ The highest privilege level has various names throughout different architectures, such as supervisor mode, kernel mode, CPL0, DPL0, ring 0, etc. See Ring (kompyuter xavfsizligi) qo'shimcha ma'lumot olish uchun.
^ "Unix's Revenge". asymco.com. 2010 yil 29 sentyabr.
^ Linux Kernel 2.6: It's Worth More!, by David A. Wheeler, October 12, 2004
^ This community mostly gathers at Bona Fide OS Development, The Mega-Tokyo Message Board and other operating system enthusiast web sites.
^ XNU: Kernel Arxivlandi 2011-08-12 da Orqaga qaytish mashinasi
^ "Windows - Microsoft Windows 10 Home & Pro OS, noutbuklar, kompyuterlar, planshetlar va boshqa narsalar uchun rasmiy sayt". windows.com.
^ "The L4 microkernel family - Overview". os.inf.tu-dresden.de.
^ "The Fiasco microkernel - Overview". os.inf.tu-dresden.de.
^ Zoller (inaktiv), Heinz (7 December 2013). "L4Ka - L4Ka Project". www.l4ka.org.
^ "QNX Operating Systems". blackberry.qnx.com.
Adabiyotlar
Do'stlaringiz bilan baham: |