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

More Related Content

What's hot (6)

Lec07 exclusion
Lec07 exclusionLec07 exclusion
Lec07 exclusion
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
 
Lecture 15, 16
Lecture 15, 16Lecture 15, 16
Lecture 15, 16
 
Lec12 translation
Lec12 translationLec12 translation
Lec12 translation
 
Lecture16
Lecture16Lecture16
Lecture16
 
Lec16 io
Lec16 ioLec16 io
Lec16 io
 

Viewers also liked

Lecture 4
Lecture 4Lecture 4
Lecture 4
Muuluu
 
Lecture13
Lecture13Lecture13
Lecture13
Muuluu
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
Muuluu
 
History
HistoryHistory
History
Muuluu
 
Lecture1
Lecture1Lecture1
Lecture1
Muuluu
 
Lecture 7, 8
Lecture 7, 8Lecture 7, 8
Lecture 7, 8
Muuluu
 
Botany
BotanyBotany
Botany
Muuluu
 
Лекц 11
Лекц 11Лекц 11
Лекц 11
Muuluu
 
Lecture 5, 6
Lecture 5, 6Lecture 5, 6
Lecture 5, 6
Muuluu
 
Lecture 9, 10
Lecture 9, 10Lecture 9, 10
Lecture 9, 10
Muuluu
 
2.1 users & groups
2.1 users & groups2.1 users & groups
2.1 users & groups
Muuluu
 
IV лекц
IV лекцIV лекц
IV лекц
Muuluu
 
Лекц 7
Лекц 7Лекц 7
Лекц 7
Muuluu
 
Лекц 9
Лекц 9Лекц 9
Лекц 9
Muuluu
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
Muuluu
 
Лекц 13
Лекц 13Лекц 13
Лекц 13
Muuluu
 
Лекц 16
Лекц 16Лекц 16
Лекц 16
Muuluu
 

Viewers also liked (19)

Lecture 4
Lecture 4Lecture 4
Lecture 4
 
Lecture13
Lecture13Lecture13
Lecture13
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
History
HistoryHistory
History
 
Lecture1
Lecture1Lecture1
Lecture1
 
Lecture 7, 8
Lecture 7, 8Lecture 7, 8
Lecture 7, 8
 
Botany
BotanyBotany
Botany
 
Лекц 11
Лекц 11Лекц 11
Лекц 11
 
Lecture 5, 6
Lecture 5, 6Lecture 5, 6
Lecture 5, 6
 
Lecture 9, 10
Lecture 9, 10Lecture 9, 10
Lecture 9, 10
 
2.1 users & groups
2.1 users & groups2.1 users & groups
2.1 users & groups
 
IV лекц
IV лекцIV лекц
IV лекц
 
Лекц 7
Лекц 7Лекц 7
Лекц 7
 
Лекц 9
Лекц 9Лекц 9
Лекц 9
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
Лекц 13
Лекц 13Лекц 13
Лекц 13
 
Лекц 16
Лекц 16Лекц 16
Лекц 16
 

Similar to Lecture10 (20)

Lecture7
Lecture7Lecture7
Lecture7
 
Lecture 2
Lecture  2Lecture  2
Lecture 2
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Lec2
Lec2Lec2
Lec2
 
Mac os x kernel
Mac os x kernelMac os x kernel
Mac os x kernel
 
Computer hereglee
Computer heregleeComputer hereglee
Computer hereglee
 
Mtms2b software
Mtms2b   softwareMtms2b   software
Mtms2b software
 
C# hicheelin lekts
C# hicheelin lektsC# hicheelin lekts
C# hicheelin lekts
 
Lecture 6,7
Lecture 6,7Lecture 6,7
Lecture 6,7
 
бие даалт
бие даалтбие даалт
бие даалт
 
бие даалт
бие даалтбие даалт
бие даалт
 
Lecture tread
Lecture treadLecture tread
Lecture tread
 
бие даалт
бие даалтбие даалт
бие даалт
 
Lab 8
Lab 8Lab 8
Lab 8
 
Lec03 concurrency (2)
Lec03 concurrency (2)Lec03 concurrency (2)
Lec03 concurrency (2)
 
Computer virus
Computer virusComputer virus
Computer virus
 
Lecture 9 os
Lecture 9 osLecture 9 os
Lecture 9 os
 
Lecture 3 os
Lecture 3 osLecture 3 os
Lecture 3 os
 
Lecture6
Lecture6Lecture6
Lecture6
 
программ хангамжийн їндсэн ойлголт
программ хангамжийн їндсэн ойлголтпрограмм хангамжийн їндсэн ойлголт
программ хангамжийн їндсэн ойлголт
 

More from Muuluu

Lecture 3
Lecture 3Lecture 3
Lecture 3
Muuluu
 
Basic software
Basic software Basic software
Basic software
Muuluu
 
Wide area networks
Wide area networksWide area networks
Wide area networks
Muuluu
 
NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
Muuluu
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocol
Muuluu
 
Firewall
FirewallFirewall
Firewall
Muuluu
 
User practical
User practicalUser practical
User practical
Muuluu
 
Active directory
Active directoryActive directory
Active directory
Muuluu
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
Muuluu
 
6 network devices
6 network devices6 network devices
6 network devices
Muuluu
 
Бие даалт
Бие даалтБие даалт
Бие даалт
Muuluu
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
Muuluu
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
Muuluu
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
Muuluu
 
Лекц 13
Лекц 13Лекц 13
Лекц 13
Muuluu
 
Лекц 12
Лекц 12Лекц 12
Лекц 12
Muuluu
 
Switch function
Switch functionSwitch function
Switch function
Muuluu
 

More from Muuluu (20)

Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Basic software
Basic software Basic software
Basic software
 
Wide area networks
Wide area networksWide area networks
Wide area networks
 
NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocol
 
Firewall
FirewallFirewall
Firewall
 
User practical
User practicalUser practical
User practical
 
Active directory
Active directoryActive directory
Active directory
 
Hardware
HardwareHardware
Hardware
 
windows server 2003
 windows server 2003 windows server 2003
windows server 2003
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
 
6 network devices
6 network devices6 network devices
6 network devices
 
Бие даалт
Бие даалтБие даалт
Бие даалт
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
 
Лекц 13
Лекц 13Лекц 13
Лекц 13
 
Лекц 12
Лекц 12Лекц 12
Лекц 12
 
Switch function
Switch functionSwitch function
Switch function
 

Lecture10

  • 1. Boot sector, дискний төрөл Лекц 10
  • 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 ба түүнээс дээш процесс, мьютекс,эсвэл семафорыг синхрончлож болно. Үүний тулд объект үүсгэн хуулбарлах хэрэггүй.