Операционная система 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'А
Советы по подготовке спецификаций
Стиль
Левая рекурсия
Уловки анализа лексики

Организация UNIX-систем и ОС Solaris

Первая версия многозадачной многопользовательской системы UNIX была разработана в 1969 году сотрудниками подразделения Bell Labs фирмы AT&T Деннисом Ритчи (Dennis Ritchie) и Кеном Томпсоном (Ken Thompson). Она была написана на ассемблере для компьютера PDP-7. К лету 1972 года систему переписали на язык высокого уровня С, что позволяло перенести ее на любую аппаратную платформу. Создатели UNIX впервые предложили операционную систему, полностью написанную на языке высокого уровня.
Первым компьютером, которым управляла новая версия системы, стал компьютер PDP-11 компании Digital Equipment Corporation (DEC). Несколько десятилетий спустя DEC была переименована в Digital, затем поглощена компанией Compaq, которая, в свою очередь, слилась с Hewlett-Packard.
В начале 70-х годов XX века выпускники Университета в Беркли (University of California-Berkeley), вдохновленные новыми идеями UNIX, начали работу над собственной версией UNIX.
В 1977 году вышла первая версия Berkeley Software Distribution - известная университетская версия UNIX. Так как эта система была основана на коде AT&T, для ее использования была необходима лицензия AT&T. Разработчики BSD, подстегиваемые ростом цен на лицензии, полностью переписали исходный код системы к 1991 году.

Какую систему лучше установить?
Включение и выключение компьютера
Cпособы установки
Отличия установки Solaris на компьютеры SPARC
Файлы устройств Solaris
Оптимизация размеров разделов
Замечание о совместимости утилит
Руководство по Solaris
Запуск и останов: различия между Solaris и другими UNIX
Семейство командных процессоров


Планирование решений в экономике - перейти
Оптимизация бизнес процессов - перейти
Финансовый менеджмент - перейти
Финансовое планирование - перейти
История экономического анализа - перейти
Финансовый анализ - перейти
Торговля золотом - перейти
Концепция контроллинга - перейти
Руководство паровозному машинисту - перейти
Unix Man (Справочное руководство) - перейти
A.OUT - перейти
BACKUP - перейти
HYPOT(3M) - перейти
CURSES(3X) - перейти
DAEMON.MN(7) - перейти