Nonpreemptive kernels

Чөлөөт нэвтэрхий толь — Википедиагаас
Jump to navigation Jump to search
           Давуу эрхгүй кернелүүд

Бид бүх процессыг тэг биш хурдтайгаар гүйцэтгэгддэг гэж таамагладаг. Хэдий тийм боловч бид n процессуудын харьцангуй хурдыг авч үзэлгүйгээр тодорхойлолт гаргаж болохгүй. Олон тооны кернел төлөв дэх процессууд нь тодорхой хугацаанд үйлдлийн системд идэвхитэй байдаг. Үүний дүнд үйлдлийн системийг биелүүлж буй код (кернел код) нь хэд хэдэн өрсөлдөөнт нөхцөл байдлыг хариуцдаг. Систэм дэх бүх нээлттэй байгаа файлуудын нэрсийн жагсаалтыг агуулдаг кернел дата бүтэц байна гэж үзье. Энэ жагсаалт нь шинээр файл нээгдэх эсвэл хаагдах бүрт өөрчлөгдөж байх ёстой(файлыг жагсаалтад нэмэх эсвэл хасах). Хэрэв хоёр процесс нэгэн зэрэг файлуудыг нээх ёстой болвол жагсаалтад тусдаа бүртгэгдэх ба энэ нь өрсөлдөөнт нөхцөлд хүргэж болно. Өрсөлдөөнт нөхцөлд өртөмтгий өөр кернел дата бүтцүүдэд санах ойн хуваарилалтын бүтэц, процессын жагсаалтын бүтэц ба тээвэрлэлтийг саатуулах бүтэц зэрэг орно. Үйлдлийн систем ийм өрсөлдөөнт нөхцөлгүй байх нь кернел боловсруулагч нарын хариуцлага юм. Үйлдлийн систем дэх осолтой хэсгүүдийг удирдах хоёр үндсэн арга зам байдаг: (1) давуу эрхтэй кернелүүд ба (2) давуу эрхгүй кернелүүд. Давуу эрхтэй кернел нь кернел төлөвт байгаа процессыг давуу эрхтэй байх боломж олгодог. Давуу эрхгүй кернел нь кернел төлөвт байгаа процессыг давуу байх боломж олгодоггүй; кернел төлөв дэх процесс нь кернел төлвөөс гартлаа үргэлжлэнэ эсвэл сайн дураараа CPU-ийн удирдлагыг авдаг. Мэдээж кернелд цорын ганц процесс идэвхитэй байх тул давуу эрхгүй кернэл нь өрсөлдөөнт нөхцөлд огт өртөхгүй. Бид бүх давуу эрхгүй кернелүүд адилхан өртөхгүй гэж баталж чадахгүй тул бүх тараагдсан кернелүүд нь өрсөлдөөнт нөхцөлд өртөхгүй байхаар болгоомжтой зохиогдсон байх ёстой. Давуу эрхтэй кернелийг SMP архитектурт зориулж зохиоход тун хэцүү. Учир нь энд хоёр кернел төлөв дэх процесс нь нэгэн зэрэг өөр процессорууд дээр ажиллах боломжтой байдаг. Тэгвэл яагаад хүмүүс давуу эрхтэй кернэлийг давуу эрхгүй кернэлээс илүүд үздэг вэ? Давуу эрхтэй кернел нь тухайн үеийн програмчилалд илүү тохиромжтой, учир нь энэ нь одоо үеийн процесс кернелд ажиллаж байгаа процессийг давах боломж олгодог. Түүнээс гадна кернел төлөвийн процесс нь дураараа удаан хугацаагаар ажиллах эрсдэл багатай тул давуу эрхтэй кернел нь илүү хариу үзүүлэх чадвар сайтай байдаг. Мэдээжийн хэрэг энэхүү үйлчлэл нь ингэж удаан ажилладаггүй кернэл код зохиосноор багасгагдаж болно. Windows XP, Windows 2000 болон уламжлалт UNIX Kernel нь давуу эрхгүй кернелүүд юм. Linux 2.6 хүртэлх Linux кернел нь мөн давуу эрхгүй байсан. Тэгсэн хэдий ч 2.6 кернел гарснаар Linux давуу эрхтэй загвар болсон. Unix-ийн Solaris, IRIX зэрэг хэд хэдэн хувилбар нь давуу эрхтэй.


Ашигласан материал:

- Abraham Silberschatz. Operating system concepts, 7th edition (194-195-р хуудас)