Распределение программ по главам

Распределение программ по главам

В каталоге каждой главы содержатся все программы, относящиеся к данной главе (за исключением тех, которые были помещены в каталог Utility), а также всевозможные дополнительные программы. Соответствующий их перечень, сопровождаемый кратким описанием служебных программ, представлен ниже. В названиях некоторых программ присутствует суффикс "x"; в эти программы намеренно внесены дефекты, чтобы проиллюстрировать распространенные ошибки программирования.

Примечание

Имена многих программ, например, программ tail и touch, которые рассматривались в главе 7, совпадают с названиями утилит UNIX, работу которых они имитируют. Во избежание путаницы вы можете дать этим программам другие имена. Некоторые программы уже переименованы таким образом; в качестве примера можно указать программы lsW и cpW. 

Глава 1

• срС.с — программа 1.1.

•  cpW.c — программа 1.2; cpwFA.c — ее модифицированный вариант, обеспечивающий лучшую производительность. См. результаты в приложении В.

• cpCF.с — программа 1.3.

• К числу других программ относятся UNIX-версия этой программы (cpU.с), а также программа (cpUC.c), скомпонованная с использованием библиотеки совместимости UNIX, предоставляемой Visual C++. CpwFA.с — вариант Cpw.c, обеспечивающий повышенное быстродействие за счет использования буферов большого размера, флагов последовательного просмотра и других методик, введенных в главе 2.

Глава 2

• Программы 2.1 и 2.2 находятся в упомянутом ранее каталоге Utility.

• cat.с — программа 2.3.

• atou.с — программа 2.4.

• Asc2Un.c — программа 2.5; Asc2UnFA.c и Asc2UnNB.c — ее версии, обеспечивающие лучшую производительность. Все три файла реализуют функцию Asc2Un, которая вызывается программой 2.5.

• pwd.c — программа 2.6; pwda.c — модифицированный вариант, обеспечивающий выделение необходимого объема памяти для размещения пути доступа.

• cd.c — реализация команды UNIX, осуществляющей переход к другому каталогу; эта программа не совпадает с той, которая используется в главе 2.

Глава 3

• RandomAccess.с — программа 3.1.

• lsW.c — программа 3.2. rmW.c — аналогичная программа, предназначенная для удаления файлов.

• touch.с — программа 3.3.

• getn.c — дополнительная программа для чтения записей фиксированной длины, иллюстрирующая доступ к файлам и вычисление позиции в файле.

• lsReg.с — программа 3.4.

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

• TestLock.с — осуществляет блокирование файла.

• tail.с — требуется как часть упражнения 3.3. 

Глава 4

• Программа 4.1 включена в файл ReprtErr.c, находящийся в каталоге Utulity.

• toupper.c — программа 4.2. toupperX.c содержит преднамеренно внесенные ошибки; их устранение послужит для вас хорошим упражнением.

• Exception.с — программа 4.3, а также функция фильтра — программа 4.4.

• Ctrlc.с — программа 4.5.

Глава 5

• sortBT.c — представляет программы 5.1 и 5.2; sortBTSR.c — вариант, в котором отсутствует опция отказа от сериализации при вызове функций управления памятью, что используется для выяснения влияния этого фактора на производительность в случае простых приложений. Читатель может самостоятельно убедиться в том, что наблюдаемый эффект является весьма незначительным.

• Asc2UnMM.с — функция для программы 5.3.

• sortFL.с — программа 5.4, a sortHP.с — аналогичная программа, за исключением того, что вместо отображения файлов используется их считывание в буфер, выделяемый в памяти.

• sortMM.с — программы 5.5 и 5.6.

• atouEL.c — программа 5.7, a Asc2UnDll.c и Asc2UnmmDLL.c — исходные файлы для требуемых библиотек DLL. Asc2Unmmfl.c — еще один вариант, очищающий память при завершении выполнения, что может приводить к общему замедлению программы, но оставляет систему в безопасном состоянии.

• HeapNoSr.c — тестовая программа для количественной оценки эффекта использования флага HEAP_NO_SERIALIZE при распределении памяти. Эту программу можно использовать при выполнении упражнения 5.1.

• RandFile.c — генерирует текстовые файлы заданного размера со случайными ключами; такие файлы удобны для тестирования функций сортировки и используются для генерирования текстовых файлов большого размера во многих тестах с целью определения временных характеристик выполнения программ.

• clear.с — простая программа, выделяющая и инициализирующая память крупными блоками до наступления сбоя. Эта программа используется в перерывах между тестами синхронизации для гарантии того, что данные не кэшируются в памяти, ибо это могло бы искажать результаты тестов. 

Глава 6

• grepMP.c — программа 6.1. grep.с — исходный файл программы поиска заданных символьных шаблонов, которая вызывается как процесс программой grepMP.c.

• timep.с — программа 6.2.

• JobShell.c — программа 6.3, a JobMgt.c предоставляет функции поддержки программ 6.4, 6.5 и 6.6.

• catHA.c и grepMPha.c — модифицированные версии других программ, предназначенных для демонстрации передачи дескриптора в командной строке, что используется при решении упражнения 6.2.

• version.с — получает сведения об операционной системе, включая номер ее версии.

Глава 7

• grepMT.c — программа 7.1. grepMTx.c — ее вариант с преднамеренно введенными дефектами; устранение этих дефектов предлагается в упражнении 7.7.

• sortMT.c — программа 7.2. sortMTx.c — ее вариант с преднамеренно введенными дефектами.

• wcMT.с — решение упражнения 7.6. Имеются также две версии с преднамеренно введенными дефектами и еще одна версия, сериализующая обработку файла, которая предусмотрена для анализа временных характеристик выполнения программ.

• Во всех соответствующих проектах используется библиотека С с многопоточной поддержкой, о чем говорится в тексте главы.

Глава 8

• simplePC.с — программа 8.1.

• eventPC.с — программа 8.2.

Глава 9

• statsMX.c — программа 9.1. Ее различными вариантами являются statsNS.c, statsCS.cn statsIN.c.

• TimedMutualExclusion.c — используется для исследования временных характеристик, предлагаемого в тексте главы и упражнениях. 

Глава 10

• В программе 10.1 содержится часть файла SynchObj.h, находящегося в каталоге Include. Остальная часть указанного файла содержится в программе 10.3.

• ThbObject.c — программа 10.2. testTHB — соответствующая тестовая программа.

• QueueObj.с — программа 10.4, различными вариантами которой являются программы QueueObjCS.c (используется объект CRITICAL_SECTION), QueueObjSOAW.c (используется функция SignalObjectAndWait) и версия, использующая сигнальную модель.

• ThreeStage.c — программа 10.5, для проекта которой требуются файлы Messages.с и QueueObj.c.

• QueueObjCancel.с — программа 10.6, которая работает в сочетании с программой ThreeStageCancel.c.

• MultiSem.c — вместе с тестовой программой TestMultiSem.c образует решение упражнения 10.11.

• MultiPCav.c — использует Pthreads; будет очень неплохо, если в качестве упражнения вы попытаетесь преобразовать эту программу к форме, использующей Windows API или библиотеку Pthreads с открытым исходным кодом.

Глава 11

• pipe.с — программа 11.1. Для демонстрации работы этой программы удобно использовать команду wc.с. pipeNP.с — вариант, использующий именованный канал.

• clientNP.с — программа 11.2.

• serverNP.с — программа 11.3.

• SrvrBcst.c — программа 11.4.

• LocSrver.с — программа 11.5.

Глава 12

• clientSK.с — программа 12.1.

• serverSK.c — программа 12.2.

• command. с — программа 12.3.

• SendReceiveSKST.c — программа 12.4, a serverSKST.c и clientSKST.c — соответствующие варианты программ serverSK.c и clientSK.с, незначительно модифицированных для обеспечения потокового ввода/вывода. Программу SendReceiveSKST.c следует компоновать как библиотеку DLL, которая должна неявно связываться с проектами сервера и клиента.

• SendReceiveSKHA.c — программа 12.5, a serverSKHA.c — соответствующий сервер, который использует DLL. Программа clientSKST.c будет работать с этим сервером.

Глава 13

• SimpleService.c — программа 13.2; дополнительно включает все, что требуется для программы 13.1.

• ServiceShell.с — программа 13.3.

• ServiceSK.с — это программа serverSK (программа 12.2), преобразованная в службу.

Глава 14

• atouOV. с — программа 14.1.

• atouEX.c — программа 14.2, выполняющая ту же задачу с использованием расширенного ввода/вывода.

• atouMT.с — выполняет ту же задачу с использованием многопоточного режима вместо асинхронного ввода/вывода Win32. atouMT_dh.с — неправильная версия, включенная для иллюстрации одной интересной, хотя и сопряженной с определенными рисками возможности дублирования дескрипторов.

• atouMTCP.с — использует порты завершения ввода/вывода.

• TimeBeep.с — программа 14.3.

• serverCP.c — программа 14.4, представляющая собой версию программы serverMT, в которой используются порты завершения ввода/вывода и перекрывающийся ввод/вывод.

Глава 15

• chmodW.с — программа 15.1, в которую добавлены возможности различения элементов АСЕ, предоставляющих и отменяющих разрешения доступа (как описано в тексте). chmodBSD.c — видоизмененный вариант программы, в котором используется функция BuildSecurityDescriptor.

• lsFP.с — программа 15.2.

• InitUnFp.c — код для программ 15.3, 15.4 и 15.5. Эти функции нужны программам 15.1 и 15.2. Кроме того, в исходном модуле содержится код, показывающий, как получить имя группы-владельца, что вам предлагается самостоятельно сделать в упражнении 15.12. 

• TestFp.c — дополнительная тестовая программа, которая оказалась полезной в процессе тестирования.

• serverNP_secure.с — программа 15.6.

• JobShell_secure.c и JobMgt_secure.с — усовершенствованные варианты программ для системы управления заданиями, которая рассматривается в главе 6.

Глава 16

Для этой главы предусмотрен только один файл с исходным кодом, а именно, sortMM64.c, который представляет собой программу sortMM.c из главы 5, усовершенствованную таким образом, чтобы она могла выполняться на обеих платформах Win32 и Win64.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.5.3 Распределение памяти

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

1.5.3 Распределение памяти Ядро постоянно располагается в оперативной памяти, наряду с выполняющимся в данный момент процессом (или частью его, по меньшей мере). В процессе компиляции программа-компилятор генерирует последовательность адресов, являющихся адресами


9 РАСПРЕДЕЛЕНИЕ РЕСУРСОВ ДЛЯ ДОКУМЕНТИРОВАНИЯ

Из книги ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ автора Автор неизвестен

9 РАСПРЕДЕЛЕНИЕ РЕСУРСОВ ДЛЯ ДОКУМЕНТИРОВАНИЯ Основными ресурсами, требуемыми для документирования, являются следующие:персонал (см. 9.1);средства (см. 9.2);финансирование (см.


Выравнивание и распределение

Из книги Photoshop. Мультимедийный курс автора Мединов Олег

Выравнивание и распределение Когда активен инструмент Перемещение, на панели под строкой меню появляется набор кнопок для выравнивания и распределения изображений и объектов (рис. 9.1). Рис. 9.1. Кнопки выравниванияПиктограммы на кнопках подсказывают, как будут


Распределение

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Распределение Для одного или нескольких выделенных объектов или их групп можно задать одно из девяти предопределенных положений (то есть применить автоматическое распределение). Чтобы применить к группе объектов распределение, выделите нужные объекты и нажмите кнопку


Выравнивание и распределение

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Выравнивание и распределение В тех случаях, когда необходимо расположить объекты с высокой точностью по отношению друг к другу (например, ровно в ряд на равном расстоянии), но точность расположения на странице не требуется, мы можем прибегнуть к процедурам выравнивания и


Распределение памяти

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Распределение памяти Стандартная библиотека компиляторов содержит специальные функции управления памятью – malloc, free, а также другие разновидности этих функций. Они позволяют получить для использования блок оперативной памяти, и затем отдать его обратно операционной


Глава 5 Распределение IP-адресов с помощью DHCP

Из книги Сетевые средства Linux автора Смит Родерик В.

Глава 5 Распределение IP-адресов с помощью DHCP В главе 2 рассматривались различные способы настройки компьютера для работы в сетях TCP/IP. Один из этих способов предполагал использование сервера DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки узла). Чтобы определить


Динамическое распределение IP-адресов

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Динамическое распределение IP-адресов Наиболее просто устанавливается конфигурация сервера DHCP, предполагающая динамическое распределение IP-адресов. В этом случае сервер сам решает, какой адрес следует выделить компьютеру, который обратился к нему. IP-адреса для


Динамическое распределение памяти

Из книги Приемы создания интерьеров различных стилей автора Тимофеев С. М.

Динамическое распределение памяти Библиотека языка Си предоставляет механизм распределения динамической памяти (heap). Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти.Работа


Распределение текстур

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Распределение текстур Мы рассмотрели общие основы создания и наложения текстур на объекты. Наверняка вы уже успели столкнуться с необходимостью распределения текстур по поверхности объекта. Подобная необходимость возникает при текстурировании постоянно. Дело в том,


Распределение графики по слоям

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Распределение графики по слоям Иногда бывает нужно "разбросать" фрагменты изображения, находящиеся в одном слое, по разным слоям. В терминологии Flash эта операция называется распределением графики по слоям. При этом Flash сам создаст нужное количество слоев и переместит на


Распределение функций

Из книги Язык Си - руководство для начинающих автора Прата Стивен

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


РАСПРЕДЕЛЕНИЕ ПАМЯТИ: malloc( ) И са11ос( )

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

РАСПРЕДЕЛЕНИЕ ПАМЯТИ: malloc( ) И са11ос( )      Ваша программа должна предоставить достаточный объем памяти для запоминания используемых данных. Некоторые из этих ячеек памяти распределяются автоматически. Например, мы можем объявить char place[ ] = "Залив Свиной печенки";и будет


Помидоры и распределение времени

Из книги автора

Помидоры и распределение времени Для управления своим временем и концентрацией я также использую чрезвычайно эффективный помидорный метод планирования.[41] Основная идея очень проста: вы ставите стандартный кухонный таймер (традиционно такие таймеры оформляются в виде