Оқулық «Федералдық білім беруді дамыту институты»



Pdf көрінісі
бет181/220
Дата25.02.2022
өлшемі2,22 Mb.
#26438
түріОқулық
1   ...   177   178   179   180   181   182   183   184   ...   220
ХАБАРЛАМАЛАР 
 
Бұдан  бұрын  қарастырылған  сигналдар  механизмі  процестер 
арасындағы  ақпарат  алмасуды  қажет  етпейтін  жағдайларда  процесс 
аралық  өзара  әрекеттесуді  ұйымдастыруда  ыңғайлы.  Мысалы,  өзара 
әрекеттесуші процестер мәтіндік ақпарат алмасқан жағдайда, сигналдар 
нашар қолданылады. 
 
Дегенмен,  сигналдар  мына  жағдайда  қолданылуы  мүмкін,  мысалы 
әр  символ  нақты  сигналдар  тізбегімен  кодталады,  жіберілімнің  басы 
және  аяғы  нақты  типтің  сигналдарымен  белгіленеді.  Мұндай  тәсілдің 
ыңғайлылығы  бір  символды  жіберу  үшін  сигналдардың  үлкен    саны 
жеткілікті (латын әрпін жібері үшін — символ жіберілімінң басы және 
аяғын  бейнелейтін  төртеу  шамасында),  ал  бұл  сигналдар  жоғалған 
кезде,  ақпараттардың  жоғалуымен  байланысты.  Одан  басқа,  мұндай 
алмасу тәсілі процестің екі ақпарат  алмасушысы да бір уақытта жұмыс 
жасағанда ғана қолданылады. 
 
Процестер  арасында  ақпарат  алмасу  үшін  (мүмкін,  әр  түрлі 


209 
 
 
уақыттарда  орындалатындар)  UNIX-жүйелерінде  хабарлама  механизмі 
бар. 
 
Бұл механизмнің жұмысы, ортақ қолжетімді пошталық жәшікті еске 
түсіреді.  Адамдар  бұл  жәшікке  конвертке  мекен-жай  атын  жазып, 
хаттарын  сала  алады,  ал  мекенжайлар  ара-тұра  пошталық  жәшіктің 
мазмұнын  тексереді,  оларды  мекенжай  аттарымен  қондыра  отырып, 
өзіне  арналған  хатты  алады.  Сонымен  қатар  жәшікке  хатты  салуда, 
тізбектеулі  сақталады,  егер  адамға  бірнеше  хат  келген  болса,  басында 
ол  ең  бірінші  келгендерін  оқиды,  одан  кейін  жаңаларына  өтеді.  
Хаттардың мекенжай бойынша бөлінгенінен басқа, хаттардың әр түрлі 
жәшік  бойынша  бөлінуі  мүмкін,  мысалы  бір  жәшік  тек  екі  адамның 
сұхбаттасуына арналуы мүмкін. 
 
Хабарлама  механизмі  осы  тәрізді  жұмыс  жасайды,  операциялық 
жүйе  -    хабарламалар  кезегі  деп  аталатын  -  хабарламалар  тізбегі 
сақталатын  арнайы  жадтың  саласын  көрсетеді,  мұнда  процестер 
пошталық  жәшік  сияқты,  өзінің  хабарламаларын  сыйдыра  алады.  Әр 
хабарлама, жіберілетін ақпаратты таситын, сандық идентификатор мен 
ақпараттар блогынан тұрады. Ақпараттарды кезекке орналастыру және 
оларды  кезектен  алып  тастау  FIFO  (first  in  —  first  out)  принципі 
бойынша  жүреді,  яғни  кезектен  ең  көне  хабарлама  алынып  тастайды. 
Дегенмен  тізімдегі  әр  хабарлама  идентификаторға  ие,  ол  кезектегі 
барлық  хабарламалардың  ішіндегі  ең  көне  болуы  міндетті  емес, 
идентификаторы берілген көне хабарламалар алынады (10.6 - сурет ).
 
Осылайша,  операциялық  жүйе  хабарламалардың  сақталуына 
кепілдік береді және  кезек  түсу  ретімен  олардың өңделуіне  мүмкіндік 
береді.  Дегенмен  хабарламалардың  өзіне  арналған  емес,  басқа 
процеспен  кезектен  алынуына  кепілдік  бермейді.    Бұл  алынатын 
хабарламаның  идентификаторы  кабылдаушы  –  процесті  беруімен 
байланысты.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


 
210 
 
 
 
 
 
 
 
10.6-сурет. Хабарламалар кезегінің құрылымы 
 
 
Хабарламалар кезегі және ондағы хабарламалар, оны пайдаланатын 
процестерге тәуелді емес. Осылайша, жөнелтуші процесі хабарламаны 
кезекке  қояды  және  өзінің  орындалуын  тоқтататын  жағдайлар  болуы 
мүмкін.    Қабылдаушы-процесс,  жөнелтуші-процестің  қолжетімсіз 
болуына қарамастан, бұл хабарламаны қабылдап алады.  
Әр  хабарлама  кезегі,  кезекке  хабарлама  қоятын  және  бір-біріне 
тәуелсіз  кезектен  алып  тастайтын,  бірнеше  процеспен  қолданылуы 
мүмкін.  Сонымен  қатар  процестің  әрі  өзінің  идентификатор  жинағын 
қолданады.    Дегенмен  ,  егер  бірнеше  процесс  бір  идентификаторды 
қолданатын  болса,  әртүрлі  жіберушілерден  келген  хабарламалар 
араласып кетуі мүмкін. 
 
Бірнеше процестің, бір уақытта кезекке бірдей идентификаторлы екі 
хабарламаны  сыйғызатын  жағдай  да  болуы  мүмкін.  Мұнда  
хабарламаларды кезекке сыйғызу реті ерікті болады және операциялық 
жүйенің ядросының жасалуына байланысты болады.  
 
Бірнеше процестің бір уақытта кезектен, берілген идентификаторлы 
соңғы  хабарламаны  алуына  тырысатын  жағдайларда  болуы  мүмкін. 
Хабарламаны  процеске  беру  реті  анықталмаған  және  ОЖ  ядросының 
жасалуына байланысты. 
 
Әдетте  мұндай  жағдайлар  өзімен  күрделі  мәселелерді  ұсынбайды, 
себебі  бір  кезекте  ақпараттар  алмасатын  процестер  жұбын  байқап 
жобаласа,  байланыспайтын  көптеген  идентификаторларды  қолданады. 
Құрылған кезек, ОЖ процесінің құрылуымен  және осыған құқығы бар 


211 
 
 
процеспен  өшірілу  сәтіне  дейін  болады  немесе  ОЖ  жұмысының 
аяқталуына  дейін.  Кезек  өмірінің  уақыты,  оны  құрған  процесс  өмірі 
уақытынан ұзақ болуы мүмкін. 
 
Хабарламалар  кезегінің  параметрі,  kemel.msgmni,  kemel.msgmax 
және  kemel.msgmnb  параметрлерімен  анықталады.    Параметр  kernel. 
msgmni  хабарламалар  кезегінде    идентификатордың  максималды 
санын,  kemel.msgmax  —  байтта  хабарлама  максималды  өлшемін 
анықтайды,  ал  kemel.msgmnb  байтта  кезектің  максималды  өлшемін 
береді.  Бұл  параметрлерді  /proc  файлдық  жүйеде  орналасқан 
файлдарды  пайдаланып,  өзгертуге  болады.  Ол  үшін  мына 
командаларды қолдануға болады: 
 
echo 2048 > /proc/sys/kernel/msgmax 
echo 4096 > /proc/sys/kernel/msgmni
 
Бұл өзгерістерді, оның қайта жүктелімінен кейін де, жүйеде сақтау 
үшін  бұл  параметрлердің  мәндерін  қолмен  /etc/sysctl.conf  файлына 
енгізу  керек.  Бұл  файлды  «kemel.msgmnb=8192»  түрінде  жолға  түсіру 
керек немесе sysctl -w 
 =  командасын қолдану керек, 
мысалы sysctl -w kernel.msgmnb=8192.
 
Хабарламалар  кезегі  параметріндегі  ағымдағы  мәндері  туралы 
ақпараттарды, ipcs –lq командасының көмегімен алуға болады:
 
$ ipcs -lq
 
 
 Messages: Limits  ------------ 
 
max queues system wide = 496 
// MSGMNI
 
max size of message (bytes) = 8192 
// MSGMAX
 
default max size of queue (bytes) = 16384 
// MSGMNB
 
Қазіргі  сәтте  пайда  болған  кезектерді  қарау  үшін  жүйеде  ipcs 
командасы  қолданылады.  Параметрсіз  іске  асатын, командалар  жалпы 
жадының барлық пайда болған бөліктерін, семафорды және кезектерді 
шығарады. Пайда болған кезектерді қарау үшін командалық жолдан -q 
параметрімен ipcs іске асыру қажет:
 
$ ipcs -q
 
 
 Message Queues  ------------ 
 
key 
msqid  owner  perms  used-bytes 
messages
 
0x000001f4 

admin  644 
20 
1
 
0x1cda78da 
486 
root 
600 
18920 
211
 


 


Достарыңызбен бөлісу:
1   ...   177   178   179   180   181   182   183   184   ...   220




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет