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


       

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

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

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

Выбор языка программирования
Поддерживаемые языки программирования
Язык C
Фортран
Паскаль
Ассемблер
Специализированные языки программирования
Awk(1)
Lex(1)
Yacc(1)

Еще о строках, столбцах и подпрограмме initscr( )
Определив размеры экрана терминала, initscr() присваивает значения переменным LINES и COLS. Эти значения берутся из переменных terminfo, называемых lines и columns. Последние, в свою очередь, извлекаются из базы данных terminfo, если не установлены значения переменных окружения $LINES и $COLUMNS.

Атрибуты вывода
Атрибуты вывода - 2
Звонки, свист, вспышки
Опции ввода
Опции ввода - 2
Работа с окнами
Ввод/вывод
Подпрограммы wnoutrefresh( ) и doupdate( )
Новые окна
Прочие возможности пакета curses

Управление семафорами
Результат системного вызова semctl(2) в случае успешного завершения зависит от выполняемого управляющего действия. Как правило он равен 0, но четыре действия (GETVAL, GETPID, GETNCNT и GETZCNT) являются исключениями. При возникновении ошибки всегда возвращается -1. Аргументы semid и semnum определяют множество или отдельный семафор, над которым выполняется управляющее действие. В качестве аргумента semid должен выступать идентификатор множества семафоров, предварительно полученный при помощи системного вызова semget(2). Аргумент semnum задает номер семафора в множестве. Семафоры нумеруются с нуля.

Операции над множествами семафоров
Использование semop
Программа-пример
Разделяемые сегменты памяти
Использование разделяемых сегментов памяти
Создание разделяемых сегментов памяти
Управление разделяемыми сегментами памяти
Использование shmctl
Программа-пример
Программа-пример - 2

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

Старшинство операций
Старшинство операций - 2
Старшинство операций - 3
Обработка ошибок
Обработка ошибок - 2
Окружение YACC'А
Советы по подготовке спецификаций
Стиль
Левая рекурсия
Уловки анализа лексики

Эволюция современного мирового хозяйства - перейти
Экономика. Региональная - перейти
Муниципальный менеджмент - перейти
Государственные и муниципальные финансы - перейти
Финансы муниципальных образований - перейти
Региональная экономика - перейти
Основные понятия экономики региона - перейти
Экономика. Теневая - перейти
Введение - перейти
Переплетение лучей - перейти
Перекрывание объектов - перейти
Основы микропроцессорной техники - перейти
Что такое микропроцессор? - перейти
Шины микропроцессорной системы - перейти
Функции устройств магистрали - перейти