1.9. Резюме
1.9. Резюме
Взаимодействие процессов традиционно является одной из проблемных областей в Unix. По мере развития системы предлагались различные решения, и ни одно из них не было совершенным. Мы подразделяем IPC на четыре главных типа.
1. Передача сообщений (каналы, FIFO, очереди сообщений).
2. Синхронизация (взаимные исключения, условные переменные, блокировки чтения-записи, семафоры).
3. Разделяемая память (неименованная и именованная).
4. Вызов процедур (двери в Solaris, RPC Sun).
Мы рассматриваем взаимодействие как отдельных потоков одного процесса, так и нескольких независимых процессов.
Живучесть каждого типа IPC определяется либо процессом, либо ядром, либо файловой системой в зависимости от продолжительности его существования. При выборе типа IPC для конкретного применения нужно учитывать его живучесть.
Другим свойством каждого типа IPC является пространство имен, определяющее идентификацию объектов IPC процессами и потоками, использующими его. Некоторые объекты не имеют имен (каналы, взаимные исключения, условные переменные, блокировки чтения-записи), другие обладают именами в рамках файловой системы (каналы FIFO), третьи характеризуются тем, что в главе 2 названо «именами IPC стандарта Posix», а четвертые — еще одним типом имен, который описан в главе 3 (ключи или идентификаторы IPC стандарта System V). Обычно сервер создает объект IPC с некоторым именем, а клиенты используют это имя для получения доступа к объекту.
В исходных кодах, приведенных в книге, используются функции-обертки, описанные в разделе 1.6, позволяющие уменьшить объем кода, обеспечивая, тем не менее, проверку возврата ошибки для любой вызываемой функции. Имена всех функций-оберток начинаются с заглавной буквы.
Стандарты IEEE Posix — Posix.1, определяющий основы интерфейса С в Unix, и Posix.2, определяющий основные команды, — это те стандарты, к которым движутся большинство производителей. Однако стандарты Posix в настоящее время быстро поглощаются (включаются в качестве части) и расширяются коммерческими стандартами, в частности The Open Group (Unix 98).
Таблица 1.5. Версии модели клиент-сервер
Листинг Описание 4.1 Два канала между родительским и порожденным процессами 4.5 Использует popen и cat 4.6 Использует два канала FIFO между родительским и порожденным процессами 4.7 Два канала FIFO между независимым сервером и неродственным клиентом 4.10 Каналы FIFO между независимым последовательным сервером и несколькими клиентами 4.12 Программный канал или FIFO: формирование записей в потоке байтов 6.7 Две очереди сообщений System V 6.12 Одна очередь сообщений System V с несколькими клиентами 6.16 Одна очередь сообщений System V для каждого клиента; клиентов несколько 15.15 Передача дескриптора через дверьТаблица 1.6. Версии модели производитель-потребитель
Листинг Описание 7.1 Взаимное исключение, несколько производителей, один потребитель 7.5 Взаимное исключение и условная переменная, несколько производителей, один потребитель 10.8 Именованные семафоры Posix, один производитель, один потребитель 10.11 Семафоры Posix в памяти, один производитель, один потребитель 10.12 Семафоры Posix в памяти, несколько производителей, один потребитель 10.15 Семафоры Posix в памяти, несколько производителей, несколько потребителей 10.18 Семафоры Posix в памяти, один производитель, один потребитель: несколько буферовТаблица 1.7. Версии программы с увеличением последовательного номера
Листинг Описание 9.1 Индекс в файле, без блокировки 9.3 Индекс в файле, блокировка с помощью fcntl 9.9 Индекс в файле, блокировка с использованием функции open 10.10 Индекс в файле, блокировка с помощью именованного семафора Posix 12.2 Индекс в общей памяти mmap, блокировка с помощью именованного семафора Posix 12.3 Индекс в общей памяти mmap, блокировка с помощью семафора Posix в памяти 12.4 Индекс в неименованной общей памяти 4.4BSD, блокировка с помощью именованного семафора Posix 12.5 Индекс в общей памяти SVR4 /dev/zero, блокировка с помощью именованного семафора Posix 13.6 Индекс в общей памяти Posix, блокировка с помощью семафора Posix в памяти А.19 Измерение производительности: блокировка взаимным исключением между потоками А.22 Измерение производительности: блокировка чтения-записи между потоками А.23 Измерение производительности: блокировка между потоками с помощью семафоров Posix в памяти А.25 Измерение производительности: блокировка между потоками с помощью именованных семафоров Posix А.28 Измерение производительности: блокировка между потоками с помощью семафоров System V А.29 Измерение производительности: блокировка между потоками с помощью fcntl А.33 Измерение производительности: блокировка между процессами с помощью взаимных исключенийБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Резюме
Резюме В этой главе предлагается обсуждение сервисов сериализации. Вы могли убедиться в том. что платформа .NET для корректного учета всего множества связанных объектов, подлежащих сохранению в потоке, использует объектные графы. Когда каждый член объектного графа
Резюме
Резюме В этой главе были рассмотрены варианты конфигурации компоновочных блоков .NET, позволяющие совместное использование типов за рамками одного приложения. Вы увидели, что удаленный объект можно сконфигурировать, как MBV-или MBR-тип. Именно от этого, в конечном счете,
Резюме
Резюме Эта глава рассказывает об основах построения графического интерфейса с помощью типов, содержащихся в пространстве имен System.Windows.Forms. Сначала вам предлагается создать несколько приложений вручную, и в процессе этого выясняется, что GUI-приложение, как минимум,
Резюме
Резюме Аббревиатура GDI+ используется для обозначения ряда связанных пространств имен .NET, используемых для визуализации графических образов на поверхности производных от Control типов. Значительная часть этой главы была посвящена выяснению того, как работать с базовыми
РЕЗЮМЕ
РЕЗЮМЕ Основной темой данной главы было обсуждение возможностей управления ходом выполнения программы. Язык Си предоставляет много средств для структурирования программ. С помощью операторов while и for реализуются циклы с предусловием. Второй оператор особенно подходит
РЕЗЮМЕ
РЕЗЮМЕ Для создания больших программ вы должны использовать функции в качестве "строительных блоков". Каждая функция должна выполнять одну вполне определенную задачу. Используйте аргументы для передачи значений функции и ключевое слово return для передачи
Резюме
Резюме Итак, в этой главе вы познакомились с основами технологий оптических дисков и теперь, вооружившись знаниями, можете приступить к освоению самой программы Nero. По своей мощности и эффективности она не знает себе равных, но и требования, которые она предъявляет к
Резюме
Резюме В этой главе вы научились устанавливать пакет программ Nero 8 Premium Reloaded, познакомились со средствами запуска приложений пакета с помощью панели StartSmart, узнали, как работать со справочной системой приложений Nero 8 Premium. С помощью Start Smart пользователь пакета сможет
Резюме
Резюме В этой главе вы узнали, как создавать слайд-шоу. Для этого были использованы средства входящего в пакет Nero 8 приложения Nero Vision. Теперь вы знаете, как поместить фотографии в цифровой фотоальбом, сделать к ним звуковое сопровождение, создать красивое и понятное меню
Резюме
Резюме В этой главе вы узнали, что можно делать со звуковыми файлами при помощи встроенных в пакет Nero 8 приложений.Как записать файлы формата Audio CD на жесткий диск, как декодировать звуковые файлы в компактный MP3-формат, как с его помощью создать и сохранить на дисках свою
Резюме
Резюме Подведем краткий итог тому, что вы узнали из этой главы. Прежде всего, вы познакомились с новым приложением Nero Vision, входящим в состав пакета Nero 8. Вы научились создавать диски формата Video CD, используя два приложения – Nero Vision и Nero Burning ROM. Вы узнали, как выбрать
Резюме
Резюме Итак, подведем итог. Копирование дисков может осуществляться при помощи двух приводов, либо виртуального устройства. Копирование либо с помощью двух приводов осуществляется «на лету» с привода-источника на привод-приемник. А копирование посредством виртуального
Резюме
Резюме В этой главе мы рассмотрели две очень интересные программы пакета Nero 8 Premium – Nero Vision и Nero Recode, которые позволяют создавать DVD-Video либо из собственных видеоматериалов, либо из уже имеющихся дисков DVD-Video. Теперь вы знаете, как можно, пользуясь Nero Vision, получить
Резюме
Резюме Мы рассмотрели возможности пакета Nero 8 по архивированию и восстановлению данных средствами приложения Nero BackItUp. Теперь сохранение важной информации в виде резервных копий не будет представлять для вас трудностей. Воспользовавшись информацией из этой главы, вы
Резюме
Резюме В этой главе вы познакомились со вспомогательными инструментами пакета Nero 8. Теперь для вас не составит труда очистить перезаписываемый диск от ненужных записей, настроить скорость вращения диска в приводе. В этой главе мы также рассмотрели работу новых
Резюме
Резюме Эта глава была достаточно насыщена информацией и, честно говоря, была посвящена не столько алгоритмам и структурам данных, сколько технологиям увеличения быстродействия кода и процедурным методам.Иногда быстродействие является результатом правильного выбора