Операционная система UNIX. Руководство программиста

       

В 1983 году Кен Томпсон


В 1983 году Кен Томпсон и Деннис Ритчи были удостоены Премии Тьюринга Ассоциации Пользователей Вычислительных Машин (ACM) за разработку операционной системы UNIX. В аннотации, в частности, говорилось:
Успех системы UNIX основывается на удачном выборе нескольких ключевых идей и их элегантной реализации. Благодаря системе UNIX появилось поколение разработчиков программного обеспечения с новой идеологией программирования, основой которой является многократное использование имеющихся программ.
Должны ли программисты, использующие ОС UNIX, интересоваться тем, что делали Томпсон и Ритчи? Имеет ли это сегодня какой-либо смысл? Это необходимо, поскольку понимание идеологии, заложенной в проект системы, а также знание атмосферы, в которой проходила ее реализация, способствует наиболее быстрому ее освоению.



Данная глава предназначается тем, кто только учится программировать в среде ОС UNIX. По классификации, приведенной в предыдущей главе, это, как правило, программисты-одиночки, не интересующиеся программированием глубоко. Может оказаться, что в данной главе и в связанной с ней справочной информации имеется все, что им необходимо для подготовки и запуска программ на компьютере.
Программистам с более высокими требованиями, например, участвующим в различных прикладных проектах или разрабатывающим программы, которые будут переноситься на другие компьютеры, следует рассматривать эту главу всего лишь как введение.



В текущей версии системы UNIX реализованы два вида блокировки сегментов и файлов: слабая и сильная. Назначение этих средств - дать возможность программам, одновременно обрабатывающим одни и те же данные, синхронизировать свою работу. Поскольку подобный режим обработки данных характерен для многопользовательских приложений, необходимость общего решения проблемы синхронизации признана такими авторитетными в области стандартов организациями, как /usr/group, которая объединяет многочисленных пользователей системы UNIX во многих странах.
Слабая блокировка файлов и сегментов может быть использована для взаимной синхронизации процессов. При использовании сильной блокировки стандартные подпрограммы и системные вызовы ввода-вывода учитывают выполнение протокола блокировок. Таким образом, сильная блокировка обеспечивает дополнительный контроль очередности обращений к данным за счет небольшой потери эффективности.
Далее приводится описание использования возможностей блокировки сегментов и файлов. Рассматриваются примеры корректного исполь- зования средств блокировки сегментов. Мы старались рассеять возможные заблуждения относительно уровня защиты данных, который обеспечивается блокировкой сегментов: она должна рассматриваться в качестве средства синхронизации, а не как механизм обеспечения безопасности данных.
В связи с тем, что ниже содержатся ссылки на описания системного вызова fcntl(2), библиотечной функции lockf(3C), а также на команды и структуры данных fcntl(5), Вам, прежде чем продолжать чтение, следует ознакомиться с соответствующими разделами Справочника программиста.



Какой бы ни была мощность компьютера, работающего под управлением ОС UNIX, рано или поздно встает задача максимально эффективного использования процессора, оперативной и дисковой памяти. Разделяемые библиотеки позволяют достичь экономии каждого из перечисленных ресурсов. Например, хорошо организованная разделяемая библиотека уменьшает расход как дискового пространства, необходимого для хранения выполняемых объектных файлов, так и оперативной памяти, отводимой под процессы.
Изучение раздела 2, Использование разделяемых библиотек, поможет Вам овладеть методами работы с разделяемыми библиотеками в ОС UNIX V. В разделе объясняется, что такое разделяемая библиотека, и как ее использовать при построении выполняемых файлов. В нем также содержатся рекомендации относительно того, когда следует (или не следует) применять разделяемые библиотеки, и как определить, использует ли выполняемый файл подобную библиотеку.
В разделе 3, Создание разделяемой библиотеки, описывается процесс построения разделяемых библиотек. Чтобы уметь пользоваться разделяемыми библиотеками, нет необходимости читать эту часть, она предназначена для хорошо подготовленных программистов, которые, возможно, захотят создать свою собственную разделяемую библиотеку.
Примечание
Разделяемые библиотеки являются особенностью версии 3.0 ОС UNIX V. Выполняемые объектные файлы, использующие разделяемые библиотеки, в более ранних версиях ОС UNIX будут неработоспособны.


Содержание раздела