Documente Academic
Documente Profesional
Documente Cultură
Administrarea intrrilor-ieirilor
52. Sincronizarea proceselor 65. Administrarea unui periferic
53. Exprimarea i implementarea restriciilor de precedare 66. Buferizarea imprimrii
54. Probleme de realizare a sincronizrii 67. Sincronizare temporal
55. Monitorul mecanism de sincronizare. Definiii. Ex. 68. Gestionarea dinamic a proceselor
56. Implementarea sincronizrii. Probleme-tip 69. Sincronizarea n Windows
57. Administrarea unei resurse partajate 70. Procese i fire
58. Alocarea resurselor banalizate 71. Necesitatea sincronizrii
59. Modelul cititorului i redactorului 72. Structura mecanismului de sincronizare n Windows
60. Comunicarea ntre procese 73. Administrarea obiectelor de sincronizare n Windows
61. Modelul productorului i consumatorului 74. Excluderea mutual
62. Primitive de comunicare 75. Evenimentele
63. Aplicaii : relaia client-server
51. Excludere mutual (3.2.2.1)
(1) p q
(2) p q p q p q
(3) p q
Procedura lansare_transfer_i pregtete programul pentru schimbul cerut i lanseaz execuia sa. Procesele
apelante ateapt sfritul transferului datorit condiiei sfr_schimb_i. Sosirea unei ntreruperi, care marcheaz
sfritul schimbului de tip i provoac n mod automat executarea urmtoarei secvene:
if sfr_schimb_i.vid then <tratarea eroare ntrerupere care nu este ateptat>
else sfr_schimb_i.semnalizare
endif
Pentru un proces care execut o intrare-ieire apelnd o procedur de schimb a acestui monitor, totul se
petrece ca i cum schimbul este sincron: la returul din procedur, informaia a fost efectiv transferat (sau o
eroare a fost detectat i semnalizat). Mecanismul de blocare evit ateptarea activ i procesorul poate fi
utilizat n timpul transferului de un alt proces.
copie
date date
stiv stiv
procesul fiu
procesul printe
Fig.4.4. Crearea proceselor cu ajutorul instruciunii fork
if (fork() == 0) if (fork() == 0)
codul procesului fiu codul procesului fiu
else else
codul procesului printe codul procesului printe