More Related Content
Similar to Lecture10 (20)
Lecture10
- 2. Процесс удирдах Windows XP ба UNIX систем ажлыг хэд хэдэн процесст хуваан параллелиар гүйцэтгэнэ. UNIX-д процесс удирдах UNIX хуулбар субпроцесс үүсгэнэ. Үүнийг fork системийн дуудлага гүйцэтгэнэ. Эхний процессийг parent, шинийг — child гэнэ. fork дуудлагаар үүссэн 2 процесс яг ижил ба нэг файлын дескриптор хуваана. Гэхдээ энэ 2 процесс хоорондоо хамааралгүй үүргээ гүйцэтгэнэ.
- 3. Childпроцесс файлын дескрипторын ориентацийг өөрчлөн дараа нь системийн дуудлага exec гүйцэтгэн программ ба өгөгдлийг хийгдэж буй файлын программ өгөгдлөөр солино. Жишээ нь хэрэглэгч xyz команд оруулахад командын интерпретатор fork үйлдэл хийн child процесс үүсгэнэ. Энэ процесс exec дуудлага хийн xyz программыг ачаална. Энэ 2 процесспараллель ажиллах ч заримдаа parentпроцесс ямар нэг шалтгаанаар хүлээж child процесс дуусахыг хүлээн дараа нь үйлдэл хийнэ. Энэ тохиолдолд parent процесс wait эсвэл waitpid системийн дуудлага хийснээр түр зогсон child процесс exit дуудлага хийхийг хүлээнэ.
- 4. Процессfork дуудлага хэдэн ч удаа хийж болох тул мод үүснэ. А процессfork дуудлага 2 дахин хийн В ба С процесс үүсгэнэ. Дараа нь В процесс 2 удаа fork дуудлага, С — нэг дуудлага хийсэн. Ингэж 6 процесстой мод үүссэн.
- 5. UNIX-д процессууд нэг нэгэнтэйгээ тусгай мэдээллийн бүтэц буюу сувгаар харилцана. Суваг буфер хэлбэртэй ба нэг процесс өгөгдлөө бичиж байхад нөгөө нь энэ өгөгдлийг авна. Байтууд бичсэн дарааллаараа сувгаас буцна. Суваг өгөгдлийн фрагментуудын хохронд хил үүсгэдэггүй тул сувагт 128 байт4 фрагмент бичиж өөр процесс 512 байтаар уншдаг бол 2-р процесс бүх өгөгдлийг шууд уншина. Нэг процесст хэд хэдэн программын урсгал явж болно. Энэ урсгалын удирдлагыг программын урсгал гэнэ. Эдгээр нь нэг хаягийн орон зай хуваадаг процесс шиг ч урсгал бүр өөрийн командын тоолуур, регистр, стектэй.
- 6. Хэрэв аль нэг программын урсгал зогсвол бусад процесс нь үргэлжлэнэ. Программын урсгал хэрэглэх жишээ – веб сервер. Сервер үндсэн кэш санах ойд ин хэрэглэгддэг веб-хуудсыг хадгална. Хэрэв хэрэгтэй хуудас кэшд байхгүй бол дискнээс уншина. Үүнд нэмэлт хугацаа (ихэвчлэн 20 миллисекунд) зарцуулна. Энэ хугацаанд процесс блоклогдоно. Үүнийг шийдэхийн тулд нэг процесст ерөнхий кэштэй хэд хэдэн программын урсгал үүсгэнэ. Аль нэг программын урсгал блоклогдоход бусад урсгалуудыг ашиглана. Программын урсгал ашиглахгүй блоклохыг болиулж болно. Үүний тулд хэд хэдэн процесс хэрэгтэй ба кэшийг хуулах хэрэг гарна. Энэ нь санах ойг ихээр ачаална.
- 7. UNIXсистемийн программын урсгалын стандартыг pthreads гэх ба POSIX (P1003.1C)-д хамаарна. Энэ нь программын урсгалын дуудлага ба синхрончлолыг дүрсэлсэн. Программын урсгал удирдах функц:
- 8. pthreadcreateдуудлага шинэ программын урсгал үүсгэнэ. Энэ процедур гүйцэтгэгдсэний дараа хаягийн орон зайд нэг программын урсгал нэмэгдэнэ. Ажлаа дуусгасан программын урсгал pthreadexit функц дуудна. Хэрэв урсгал өөр урсгал дуусахыг хүлээх хэрэгтэй бол threadjoin функц дуудна. Хэрэв энэ өөр программын урсгал ажлаа дуусвал pthreadjoin дуудлага дуусна. Хэрэв дуусаагүй бол блоклогдоно. Программын урсгалыг мьютекс (mutexes) гэдэг объект хэрэглэн синхрончлоно. Мьютекс ямар нэгэн нөөц (жишээ нь, буфер) удирдана.
- 9. Урсгал ерөнхий нөөцөд хандахын тулд эхлээд мьютексыг блоклоод дараа нь блокоо авна. Мьютекс үүсгэх - pthreadmutexinit ба арилгах -pthread mutexdestroy Программын урсгал блоклогдоогүй мьютексыг блоклох бол pthread_mutexlock дуудлага хийгээд дараа нь ажиллагаагаа үргэлжлүүлнэ. Ерөнхий нөөц хэрэглэж байсан урсгал ажлаа дуусвал pthreadmutexuniock дуудлага хийн мьютексын блокийг арилгана.
- 10. Мьютекс богино хугацаагаар блоклох бол урт хугацааны синхрончлолыг нөхцөлт хувьсагч (conditionvariables) хийнэ.Энэ хувьсагч pthread_cond_init дуудлагаар үүсч pthread_cond_destroy дуудлагаар арилна. Нөхцөлт хувьсагч хүлээх ба дохионы 2 программынурсгалтай холбоотой. Хүлээх дуудлага -pthread_cond_wait. Төхөөрөмжтэй ажиллаж дууссан дохионы дуудлага pthreadcondsignal.
- 11. Windows XP-д процесс удирдах Windows XP хоорондоо харилцан ажиллаж синхрончлогдох хэд хэдэн процессыг дэмжинэ. Процесс бүр ядахдаа нэг программын урсгал, нэг хөнгөн урсгал fiber агуулна. Процесс, программын урсгал, fiber нэг болон олон процессорт системд параллелизмыг дэмжинэ. Шинэ процесс үүсгэх функц CreateProcess. Энэ функц 10 аргументтай: - гүйцэтгэж буй файлын нэр заагч; -командын мөр (синтаксийнялгаагүй); - процессын нууцлалын дескриптор заагч; - эх программын урсгалын нууцлалын дескриптор заагч;
- 12. - parent процессийг дүрслэгч шинэ процесс дагалдах эсэхийг заагч бит; - конфигурац бичсэн мөр заагч; - шинэ процессийн ажлын каталогын нэр заагч; - эх цонхыг дэлгэцэн дээр дүрслэх бүтцийг заагч; - дуудагч процедурт 18 утга буцаан олгох бүтцийг заагч. Windows XP-дparent child процесст иерархийн ялгаа байхгүй тэгш эрхтэй. Эх процесст буцаах 18 параметрын нэг нь шинэ процесс дүрслэгч тул дотоод иерархи байна. Гэхдээ энэ иерархи удаан хадгалагдахгүй.
- 13. Программын урсгал үүсгэх дуудлага CreateThreadба 6 параметртэй: -нууцлалын дескриптор; - стекийн хэмжээ; -эхний хаяг; - хэрэглэгчийн параметр; - урсгалын эхний төлөв (бэлээ эсвэл блоклогдсон); -урсгалын идентификатор. Урсгалыг цөм үүсгэх тул бүх программын урсгалыэ тухай мэдээллийг агуулна. Цөм синхрончлол хийхдээ процессийг дуудахаас гадна энэ процессийн бүх урсгалуудыг дуудна.
- 14. Иймээс цөм аль программын урсгал блоклогдсон аль нь үгүйг мэднэ. Программын урсгал цөмийн объект болсон тул нууцлалын дескриптор ба дүрслэгчтэй байна. Дүрслэгчийг өөр процесст дамжуулж болох тул нэг процесс өөр процессийн программын урсгалыг удирдаж болно. Windows XP –д программын урсгал үүсгэхийн тулд цөм ороод гарах шаардлагатай тул үүнийг тойрохын тулд fiber ашиглана.Fiber программын урсгалтай адил ба өөрийг нь үүсгэсэн программын орон зайд гүйцэтгэгдэж синхрончлогдоно.
- 15. Программын урсгал бүр хэд хэдэн fiber- тай байж болно. Fiber блоклогдвол дараалалд орон өөрийнхөө программын урсгал дахь өөр fiber-ийг сонгон ажиллана. Урсгал цааш гүйцэтгэгдэж байгаа тул цөм энэ шилжилтийн тухай мэдэхгүй. Цөм процесс, программын урсгал удирдах ч fiber-ийг удирдахгүй. Өөрийн программын урсгалтай программ Windows XP рүү шилжихэд fiber хэрэг болно. Процессууд хоорондоо олон янзаар харилцаж болно:сувгаар;шуудангийн слот гэж нэрлэгдэх сувгаар; сокетоор, процедурын дуудлагаар, ерөнхий файлаар. Суваг 2 төрөл байна: байтынбамэдээллийн. Төрлийг нь үүсгэхдээ сонгоно.
- 16. Суваг мэдээллийн хилийг хадгалах тул 128 байт 4 бичлэг сувгаас 128 байт 4 мэдээлэл шиг уншигдана. Мөн нэрлэгдсэн суваг байх ба 2 төрөлтэй. Нэрлэгдсэн сувгийг сүлжээнд ашиглаж болох бол жирийн сувгийг болохгүй. Шуудангийн слот (mailslot) — зөвхөн Windows XP-гийн атрибут ба нэг чиглэлт. Харин суваг 2 чиглэлт. Сүлжээнд хэрэглэгдэж болох ч хүргэлт баталгаагүй. Хэд хэдэн хэрэглэгчид broadband мэдээлэл хүргэнэ. Сокет сувагтай төстэй ч өөр машинууд дээрх процессуудыг холбоно. Сокетоор холбох нь суваг эсвэл нэрлэгдсэн сувгаар холбогдохоос дээр.
- 17. Процедур дуудах:А процесс В-гийн хаягийн орон зайд В процессийг дуудан үр дүнг А–д буцаан өгнө. Процессууд ерөнхий санах ойн нэг зэрэг хуваан нэг файлын хэсгүүдэд дүрсэлж болно. Ингэхэд нэг процессоор үүссэн бичлэгүүд өөр процессийн хаягийн орон зайд бий болно. Ийм механизм хэрэглэн ерөнхий (тусгаарлагдсан) буфер үүсгэнэ. Windows XP синхрончлох олон механизмтай (семафор, мьютекс, критик секц, event). Эдгээр механизмууд процесстой биш программын урсгалтай ажиллана. Иймээс урсгал семафорт блоклогдоход бусад программанд нөлөөлөхгүй.
- 18. Семафорүүсгэх функц CreateSemaphore: тодорхой утганд байрлуулан хамгийн их утгыг нь тодорхойлно. Семафор цөмийн объект тул нууцлалын дескрипто ба дүрслэгчтэй. Семафор дүрслэгчийг DuplicateHandle фнкцээр хуулбарлан өөр процесст шилжүүлж болно. Иймээс нэг семафор хэд хэдэн процессийг синхрончилж болно. Мөн up ба down функцийг дэмжинэ: ReleaseSemaphore ( up) ба WaitForSingleObject (down). WaitForSingleObject сул зогсох хамгийн их хугацааг тогтоож болно. Тэгвэл дуудагдсан программыг урсгалын блок семафор 0 байсан ч арилна.
- 19. Гэхдээ таймер уралдах төлөв бий болгоно. Мьютекс цөмийн объект ба семафороос арай хялбар буюу тоолуургүй. Блоклох (WaitForSingieObject) блок арилгах (ReieaseMutex) функцтэй. Мьютекс дүрслэгчийг хуулбарлан өөр процесст дамжуулж болно. Иймээс өөр өөр программын урсгал нэг мьютексэд хандаж болно. Синхрончлох 3 дахь механизм -критик секц. Критик секц мьютекстай төстэй ч цөмийн объект биш тул нууцлалын дескрипторгүй. Иймээс өөр процесст шилжүүлэх боломжгүй. Блоклох функцEnterCriticalSection, блок арилгах –LeaveCriticalSection. Эдгээр нь хэрэглэгчийн орон зайд гүйцэтгэгдэх тул мьютексээс хурдан.
- 20. Сүүлийн механизм event гэж нэрлэгдэх цөмийн объект хэрэглэнэ.Хэрэв программын урсгал аль нэг event-ийг хүлээх бол WaitForSingleObject дуудагдана. SetEvent –ээр хүлээж байгаа 1 программыг урсгалын блоклож, PuiseEvent —ээр бүх хүлээж байгаа урсгалыг блоклоно. Хэд дхэн төрлийн event байна. Event, мьютекс, семафорыг тодорхой нэрээр нэрлэж файлын системд нэрлэсэн суваг мэт болно. Нэг event нээн 2 ба түүнээс дээш процесс, мьютекс,эсвэл семафорыг синхрончлож болно. Үүний тулд объект үүсгэн хуулбарлах хэрэггүй.