Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Семинары 6.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
68.58 Кб
Скачать

Семинары 6-7. Средства System V ipc. Организация работы с разделяемой памятью в unix. Понятие нитей исполнения (thread'ов).

(Основывается на лекции 4 и лекции 5)

Предыдущий семинар | Программа курса | Следующий семинар

Программа семинара

  1. Преимущества и недостатки потокового обмена данными.

  2. Понятие о System V IPC.

  3. Пространство имен. Адресация в System V IPC. Функция ftok().

  4. Дескрипторы System V IPC.

  5. Разделяемая память в UNIX. Системные вызовы shmget(), shmat(), shmdt().

  6. Команды ipc и ipcrm.

  7. Использование системного вызова shmctl() для освобождения ресурса.

  8. Разделяемая память и системные вызовы fork(), exec() и функция exit().

  9. Понятие о нити исполнения (thread) в UNIX. Идентификатор нити исполнения. Функция pthread_self().

  10. Создание и завершение thread'а. Функции pthread_create(), pthread_exit(), pthread_join().

  11. Необходимость синхронизации процессов и нитей исполнения, использующих общую память.

Цели занятия

  1. Дать общее представление о System V IPC.

  2. Привить навыки работы с разделяемой памятью.

  3. Дать опыт работы с командами ipcs и ipcrm.

  4. Научить создавать и завершать threads в рамках одного процесса.

  5. Студент должен осознать разницу между созданием нового процесса и созданием нового thread’а.

  6. Студент должен понять необходимость синхронизации процессов и нитей исполнения при использовании разделяемой памяти.

Практические работы

  1. Прогон программ с использованием разделяемой памяти

  2. Работа с командами ipcs и ipcrm.

  3. Самостоятельное написание, компиляция и запуск программы для организации связи двух процессов через разделяемую память.

  4. Прогон программы с использованием двух нитей исполнения.

  5. Написание, компиляция и прогон программы с использованием трех нитей исполнения.

  6. Прогон программ, иллюстрирующих необходимость синхронизации процессов и нитей исполнения, использующих общую память.

 

План занятия

  1. Преимущества и недостатки потокового обмена данными.

На предыдущем семинаре мы познакомились с механизмами, обеспечивающими потоковую передачу данных между процессами в операционной системе UNIX, а именно с pip'ами и FIFO. Потоковые механизмы достаточно просты в реализации и удобны для использования, но обладают рядом существенных недостатков:

  • Операции чтения и записи не анализируют содержимое передаваемых данных. Процесс, прочитавший 20 байт из потока, не может сказать, были ли они записаны одним процессом или несколькими, записывались ли они за один раз или было, например, выполнено 4 операции записи по 5 байт. Данные в потоке никак не интерпретируются системой. Если требуется какая-либо интерпретация данных, то передающий и принимающий процесс должны заранее согласовать свои действия и уметь осуществлять ее самостоятельно.

  • Для передачи информации от одного процесса к другому требуется, как минимум, две операции копирования данных: первый раз - из адресного пространства передающего процесса в системный буфер, второй раз - из системного буфера в адресное пространство принимающего процесса.

  • Процессы, обменивающиеся информацией, должны одновременно существовать в вычислительной системе. Нельзя записать информацию в поток с помощью одного процесса, завершить его, а затем, через некоторое время, запустить другой процесс и прочитать записанную информацию.