Professional Documents
Culture Documents
ДЗ10
ДЗ10
Які синхронізаційні примітиви на рівні ядра ОС можуть бути використані для обміну даними цим
каналом відповідно до технології програмних каналів (pipes)? Як приклад ОС візьміть систему
Linux.
3. Система обміну повідомленнями надає примітиви send і receive. Примітив recei ve призупиняє
процес, якщо немає повідомлень, призначених для нього. Чи можливе взаємне блокування
процесів, якщо не враховувати інших повідомлень, а спільних даних у процесів немає?
Все залежить від того який тип передачі повідомлень (прямий або непрямий)
використаний. При прямому способі необхідно вказувати конкретний процес
з яким необхідно обмінюватись інформацією. Непрямий обмін здійснюють
через спеціальний об'єкт (поштову скриньку і т.д.). Більшість сучасних
технологій обміну повідомленнями використовує непрямий обмін даними.
Тому відповідь ні.
4. Перелічіть спільні риси і відмінності поіменованих каналів і сокетів.
ного або одночасно кількох потоків (негайно або через деякий проміжок
часу).
ситуація трапляється найчастіше, тому саме для цього випадку потрібно до-
темних викликів.
ний виклик, щоб призупинити поточний потік. Така ситуація виникає рідше,
Реалізація такого блокування була інтегрована у ядро Linux версії 2.6. Вона
дістала назву ф'ютекс (futex, від fast user-level mutex - швидкий м'ютекс кори-
стувача) [73].
створювати безліч.
ного виклику.
ний час очікування). У коді цього виклику адресу пам'яті додають у ядрі
це й зроблено у NPTL).
Синхронізація в ядрі