Spinlock

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

Эргэх түгжээ (spinlock) гэдэг нь хэрэв түгжээ яг тэр дор ашиглахад бэлэн биш бол CPU-г дахин дахин ямар нэгэн тасралтгүйгээр оролдон эргэх харилцан үгүйсгэлцэхүйг (mutex) хэлнэ. (mutex - mutually exclusive. Энэ нь зэрэг ажиллах (concurrent) програмчлалын үед хуваалцах ёсгүй эх үүсвэрийг зэрэг ашиглалгүйгээр ажиллах алгоритмд хэрэглэгддэг ойлголт юм) CPU түгжээг авахаас нааш өөр ямар нэгэн ажил хийхгүй. CPU-нууд дээр олон хэрэглэгчийн (userland) процессийг зэрэг ажиллахыг зөвшөөрөх ба тухайн агшинд зөвхөн нэг CPU кернелд байхыг зөвшөөрдөг. Энэ нь кернел уруу орох оролтыг хамгаалсан “mplock” буюу эргэх түгжээ юм. Хэрэглэгчийн тал дээр ихэвчлэн ажилладаг, ихэвчлэн тооцоолох үйлдэл хийдэг ажлууд дээр сайн ажилладаг боловч оролт/гаралт (I/O), сүлжээ, болон кернелийн бусад үйлчилгээнүүдийг ачаалалтай ашиглаж ажилладаг ажлууд дээр маш муу ажилладаг юм. Зарим үйлдлийн системд эргэх түгжээ буюу spinlock байхгүй болсон. Түүний оронд өөрийн синхрончлол болон олон процессорын аюулгүй байдлыг хангах кернелийн янз бүрийн үйлчилгээнүүдийг зөвшөөрдөг түгжих болон синхрончлолын хялбаршмалууд байгаа. Олон процессууд кернелд зэрэг байрлах нь зөвшөөрөгдсөн. Унтах түгжээ (sleep lock) гэдэг нь хэрэв түгжээ яг тэр дор ашиглахад бэлэн биш бол одоо ажиллаж байгаа thread/процесс (thread/process)-ийг унталтын байдалд оруулна. Түгжээг эзэмшигч түгжээг сулласны дараа thread сэргэн ажиллана. Энэ хугацаанд CPU бусад thread-үүдийг ажиллуулан завгүй байна. Хуваалцан үгүйсгэлцэхүй (SX or shared-exclusive) түгжээ нь олон thread-үүдийг зэрэг унших төлөвт барьж зөвхөн нэг thread-ийг бичих төлөвт байлгадаг унтах түгжээ юм. Унших ба бичих гэдэг нь түгжээгээр хамгаалагдсан эх үүсвэрүүд дээр хийгдэх үйлдлүүд юм. Блок хийх (blocking) гэдэг нь унтах гэдэгтэй адил утгатай. Thread нь блок хийгдэх үед өөрийгөө хуваарилагчийн (scheduler) унтах дараалалд хийх ба түгжээ суллах гэх мэт үйл явдлаар сэргэтлээ тэнд байрлана. Тоолох семафорууд бас байна. Эдгээр нь унтах түгжээнүүд бөгөөд тодорхой тооны thread-үүд түгжээг зэрэг барихыг зөвшөөрнө.

Эх сурвалж[засварлах | edit source]

  • Operating System Concepts 7th edition