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

Вирусы в UNIX, или Гибель Титаника II

Считается, что в UNIX-системах вирусы не живут– они там дохнут. Отчасти это действительно так, однако не стоит путать принципиальную невозможность создания вирусов с их отсутствием как таковых. В действительности же, UNIX-вирусы существуют, и на настоящий момент (начало 2004 года) их популяция насчитывает более двух десятков. Немного? Не торопитесь с выводами. "Дефицит" UNIX-вирусов носит субъективный, а не объективный характер. Просто в силу меньшей распространенности UNIX-подобных операционных систем и специфики их направленности в этом мире практически не встречается даунов и вандалов. Степень защищенности операционной системы тут не причем. Надеяться, что UNIX справится с вирусами и сама, несколько наивно и, чтобы не разделить судьбу Титаника, держите защитные средства всегда под рукой, тщательно проверяя каждый запускаемый файл на предмет наличия заразы. О том, как это сделать, и рассказывает настоящая статья.

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

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

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

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

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

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

Операционные системы и программное обеспечение на платформе zSeries

z/OS представляет собой новейшую операционную систему, спроектированную и разработанную для серверов zSeries с учетом перехода на 64-разрядную архитектуру. Как представитель семейства MVS, z/OS унаследовала основные конструктивные элементы своей предшественницы OS/390, сохранив и развив ее базовые возможности. Поэтому рассмотрение архитектуры z/OS целесообразно начать с исторического обзора, раскрывающего особенности технологии MVS и основные этапы совершенствования ОС вместе с совершенствованием аппаратной платформы
Однако в начале введем несколько важнейших понятий, которые помогут сориентироваться тем читателям, которые только начинают знакомиться с мэйнфреймами IBM.

Эволюция z/OS
Пакетное задание (batch job) - внешняя единица работы z/OS. Выглядит как текст, написанный на специальном языке управления заданиями JCL (Job Control Language), в котором указано, какие программы (загрузочные модули), в какой последовательности и с какими данными должны быть исполнены в рамках задания. Задания формируются и направляются в систему пользователями через терминальные устройства, консоли, ранее запущенные программы и т.п.

Элементы z/OS
Базовые элементы (base elements) являются необходимой и неотъемлемой частью программного обеспечения z/OS, поскольку служат для поддержки наиболее важных функций и сервисов системы. К ним относятся средства управления аппаратными ресурсами, средства управления данными, пользовательские и программные интерфейсы, поддержка коммуникаций и др. Базовые элементы всегда включаются в установочный пакет z/OS.

Управление памятью
Управление основной памятью в z/OS базируется на концепции виртуальной памяти, основные принципы которой были изложены при рассмотрении эволюции системы в п. 5.1.1. Важно подчеркнуть, что в z/OS фактически сохранена архитектура, реализованная в MVS/ESA и развитая в дальнейшем в OS/390. Конечно, расширение разрядности адреса (и, следовательно, объема адресного пространства) не могло не привести к целому ряду нововведений, о которых далее и пойдет речь. Но начнем, однако, с общих понятий и терминов, принятых в MVS, OS/390 и z/OS и необходимых для понимания механизмов управления памятью

Средства управления данными в z/OS (DFSMS)
Управление данными в z/OS заключается в организации идентификации, хранения, каталогизации, поиска данных различного назначения (в том числе и программ), которые применяются для системных и пользовательских нужд. Основной единицей управления является набор данных (data set), определяемый как именованая совокупность связанных элементов данных, размещаемых во внешней памяти или иных устройствах.

Понятие задания
Пользователь может запросить у системы выполнение какой-либо работы (конечно, связанной с запуском определенных приложений) с помощью специальным образом записанного и переданного системе текста. Это и есть задание. Задания составляются на языке управления заданиями JCL (Job Control Language) и направляются в систему пользователями через входные устройства и сетевые коммуникации, а также через ранее запущенные приложения. В задании зашифровано, какие программы, в какой последовательности и с какими данными должны быть исполнены, а также в какой форме и куда должны быть направлены результаты выполнения программ.

Элементы z/OS UNIX
Системные сервисы UNIX, получившие в новейших версиях название z/OS UNIX, являются неотъемлемым компонентом z/OS, превратившим ее в открытую операционную систему [19], [20]. Начиная с версии OS/390 V1R2 реализована полная поддержка стандартов POSIX (Portable Operating System Interfaces Unix) и XPG 4.2 (X/Open Portability Guide), принятых многими разработчиками UNIX-систем. Таким образом, в z/OS UNIX реализовано два открытых системных интерфейса:



Утилита работы со списком наборов данных (Dslist)
Работа пользователей операционной системы z/OS, как правило, осуществляется в режиме удаленного доступа через специальные терминалы или рабочие станции, подключенные к мэйнфрейму при помощи сетевых коммуникаций. Сегодня в качестве рабочих станций чаще всего используются персональные компьютеры (ПК), работающие под управлением операционных систем Windows или UNIX (Linux). В этом случае для взаимодействия с мэйнфреймом используются специальные программы эмуляции терминала, которые устанавливают связь с одним из приложений, выполняющимся на мэйнфрейме, воспроизводят на экране ПК исходящие от него сообщения и передают ему управляющие воздействия пользователя, вводимые с клавиатуры.

Базовые средства создания программ
Исходный модуль, содержащий текст программы на одном из поддерживаемых языков программирования, может быть создан средствами TSO/ISPF/UNIX shell или подготовлен, а затем импортирован с рабочей станции. Для размещения исходного модуля может быть использован последовательный или библиотечный (PDS, PDSE) набор данных или файл z/OS UNIX. Компиляция исходного текста программы осуществляется встроенным языковым компилятором или ассемблером. z/OS включает как новые 64-разрядные компиляторы для таких языков, как, например, С/С++ и Cobol, так и множество старых версий.

Назначение и возможности z/VM
Операционная система z/VM представляет второе направление операционных систем IBM, ориентированных на платформу zSeries. z/VM построена на основе концепции "виртуальных машин" (Virtual Machine), которая означает, что в рамках одной системы может одновременно функционировать множество виртуальных машин, каждая из которых функционально эквивалентна реальной ЭВМ. Каждая виртуальная машина использует свою часть ресурсов системы (процессорное время, оперативную память, периферийные устройства).

Электронный бизнес и требования к IT-инфраструктуре
С середины 90-х годов руководители многих компаний во всем мире начали осознавать, что истинное значение Internet заключается не в просмотре Web-страниц и пользовании электронной почтой, а в тех новых возможностях, которые он открывает для совершенствования деловых процессов, сокращения затрат и увеличения прибыли предприятий. Электронный бизнес - это не просто электронный вариант торговых сделок, его задача - использовать современные технологии для реорганизации бизнес-процессов с целью улучшения обслуживания клиентов.

Серверы баз данных DB2 UDB: основные особенности
Параллельная обработка на SMP означает, что на машине с SMP UDB будет одновременно выполнять несколько транзакций (операторов SQL) параллельно, автоматически распределяя их между процессорами. Кроме того, UDB может выполнить параллельную обработку одного запроса (оператора SQL), разбивая его на подзадачи и направляя каждую подзадачу на свой процессор. Более того, если данные для оператора SQL распределены на нескольких дисковых подсистемах, то для параллельного извлечения данных в UDB будут использоваться функции параллельного ввода/вывода.

Основные определения и концепции
Сообщение в терминах WebSphere MQ - последовательность данных, значимых для приложений и/или пользователя. Сообщение MQ, как правило, состоит из двух частей - служебной и содержательной. В служебной части находится информация, которая представляет интерес в процессе пересылки - тип сообщения, путь его следования, время создания и пр. Служебная часть сообщения создается как приложениями, так и серверами, которые осуществляют его пересылку к месту назначения.

Краткая историческая справка
История развития технологий Lotus [6.4] начинается с 80-х годов прошлого столетия, в эпоху появления и развития персональных компьютеров (ПК). Компания Lotus Development Corporation, разрабатывавшая программное обеспечение ПК, выпустила в 1989 году первую версию продукта Lotus Notes, поддерживающего распределенную систему управления документами (совместную работу над документом) с сервером Notes. С 1995 года, когда на сервере были реализованы функции работы с Web-приложениями, он стал называться Domino. К 1996 году компания Lotus продала во всем мире почти 10 млн. лицензий на Lotus Notes. Продуктом заинтересовалась IBM, и в 1996 году она приобрела компанию Lotus.

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