Читайте данную работу прямо на сайте или скачайте

Скачайте в формате документа WORD


Сравнение операционных систем DOS, UNIX, OS2, WINDOWS (Write)

ВВЕДЕНИЕ

Операционные системы, развиваясь вместе с ЭВМ, прошли длинный путь от простейших программ в машинных кодах длинной в несколько килобайт до монстров, написанных на языках высокого ровня, размер которых исчисляется десятками мегабайт. Такой значительный рост размера операционных систем обусловлен, главным образом, стремлением разработчиков ТукраситьТ операционную систему, расширить ее возможности, добавить возможности, изначально несвойственные операционным системам, также сделать интерфейс пользователя интуитивным. Все эти попытки дали свои результаты, и положительные, и отрицательные (усложнение настройки и програмного интерфейса при прощении пользовательского).

На сегодняшний день на рынке програмного обеспечения для IBM PC-совместимых компьютеров сосуществуют несколько семейств операционных систем. Однозадачные однопользовательские ОС MS-DOS и PC-DOS являются самыми распространенными ввиду своей простоты и ТнеприхотливостиТ, большую роль здесь играет и то, что подавляющее большинство программ работает именно под их управлением. MS-DOS и PC-DOS характеризуются минимальным пользовательским и програмным интерфейсами, в тоже время, работая со всевозможными програмными оболочками, интегрированными средами (такими как Microsoft Windows или DESQview), создают комфортабельную среду для пользователя и программы.

ОС Microsoft Windows NT, ориентированая на работу в разнородных сетях, высоконадежна, однако, это достигнуто за счет частичной потери совместимости с MS-DOS.

Операционная система OS/2 стоит особняком: будучи полноправной многозадачной операционной системой со своим оригинальным графическим пользовательским и програмным интерфейсами, она сохраняет совместимость с MS-DOS и PC-DOS (начиная с версии WARP 3.0 и с Microsoft Windows).

ОС UNIX - одна из старейших и наиболее простых операционных систем, изначально была расчитана на разработку программ (для нее самой и не только) на мини-ЭВМ и позволяла без больших затрат труда программиста переносить программу из одной системы ЭВМ на другую. Неудивительно, что сейчас продается много различных вариантов мобильной операционной системы UNIX, таких как XENIX, UNIXWARE, SUN-OS, LINUX, BSD.

Рассмотрим програмные интерфейсы Microsoft Windows, ОS/2 и UNIX (согласно стандарту POSIX) для персональных ЭВМ, совместимых с IBM PC.

ОБЩИЕ СВЕДЕНИЯ

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

УПРАВЛЕНИЕ ПАМЯТЬЮ

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

Операционная система OS/2 использует страничную модель памяти, то есть программа получает память порциями по 4 кб; подкачка также осуществляется порциями по 4 кб. Программа не может правлять процессом подкачки.

Важной особенностью OS/2 является возможность создания специальных разделяемых областей памяти, которые могут использоваться для межпроцессного взаимодействия ( см. гл. межпроцессное взаимодействие ).

Microsoft Windows использует сегментированную модель память. Исторически сложилось так, что ОС (а, точнее, програмная оболочка) Microsoft Windows до разработки процессора 80386 работала в реальном режиме (Тreal modeТ) и защищенном режиме 80286-го процессора (Тstandart modeТ). В реальном режиме механизм подкачки не использовался; при наличии 286-го процессора ОС позволяла выгружать на диск только MS-DOS-освские программы. С появлением процессора 80386 и использованием его защищенного режима, возможности использования виртуальной памяти резко расширились: появилась возможность выгрузить на диск любой сегмент памяти компьютера. С помощью системных вызовов, программа пользователя может правлять многими нюансами распределения памяти: разрешением на выгрузку страницы, сборкой мусора, перемещением обьектов в памяти.

ФАЙЛОВАЯ СИСТЕМА

Все системы поддерживают следующие элементы иерархических файловых систем: обычные файлы, каталоги, специальные байт-ориентированные и блок-ориентированные файлы. Файл является массивом байтов (блоков фиксированной длины). Каталоги обеспечивают связь между именами файлов и собственно файлами. Каждый элемент каталога содержит имя файла и ссылку на конкретный файл. Для именования файлов используются корневой и текущий каталоги. Имя файла состоит из последовательности компонентов - локальных имен, разделенных символами '\' (В операционной системе UNIX - '/').

ОС UNIX характеризуется единственной однородной файловой системой на один или несколько компьютеров. В Microsoft Windows и OS/2 файловые системы ассоциируются с носителями (посредством логических имен - букв латинского алфавита).

Операционная система OS/2, кроме того, поддерживает свою файловую систему - HPFS (High Performance File System - высокопроизводительная файловая система), характеризующаяся хранением имен файлов и каталогов в виде B-дерева.

Внешние стройства ( такие как терминал, принтер) так же часто представляются как файлы для прощения работы с ними.

Операционные системы предоставляют следующие системные вызовы: запрос на смену и получение имени текущего каталога; создание, открытие, закрытие, даление, переименование и получение информации о файле или каталоге, позиционирование в них.

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

УПРАВЛЕНИЕ ПРОЦЕССАМИ

Единцей правления и потребления ресурсов в многозадачной системе является процесс. В частности, ввод-вывод выполняется синхронно, и процесс приостанавливается до его завершения. Если требуется продолжить выполнение процесса параллельно с инициированным има вводом-выводом, нужно предварительно породить другой процесс для реализации ввода-вывода. Microsoft Windows, OS/2 и UNIX предоставляют сходные системные вызовы для обслуживания и правления процессами ('сессия' в OS/2): порождение, ничтожение.

OS/2 предоставляет гораздо более широкий спектр системных вызовов для правления процессами. В OS/2 существуют три вида процессов: нити (цепи или треды), 'настоящие' процессы и экранные группы. Экранные группы - наиболее независимый тип процессов. Каждая экранная группа имеет свою собственную виртуальную консоль, адресное пространство, открытые файлы, очереди и каналы (см. ниже). Внутри экранной группы могут находится один или более 'настоящих' процессов, у каждого из которых могут быть свои открытые файлы и свое адресное пространство. Нити - самый простой класс процессов, они имеют только свое собственное адресное пространство, все остальные ресурсы наследуют от породившего их 'настоящего' процесса.

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

В Microsoft Windows планировщика задач распределяет кванты процессорного времени аналогично алгоритму абсолютных приоритетов в операционной системе OS/2. Программа никак не может повлиять на количество предоставляемого ей процессорного времени.

В операционной системе UNIX алгоритм работы планировщика задач зависит от реализации.

МЕЖПРОЦЕССНОЕ ВЗАИМОДЕЙСТВИЕ

Операционные системы используют разные термины для определения способов межпроцессного взаимодействия.

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

Операционная система OS/2 предоставляет три типа межпроцессного взаимодействия: каналы, очереди и семафоры.

Канал представлет собой кольцевой буфер с двумя казателями - начала и конца; используется для перенаправления ввода-вывода и стандартных файлов между процессами. Только два процесса могут читать или писать в канал - сервер и клиент.

Очередь - это порядоченный список из 32-битных значений, интерпретируемых процессом по контексту (это может быть целое, казатель на общую область памяти или просто флаг). Любой процесс может прочесть информацию из канала в любом порядке или записать туда любую информацию.

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

Когда семафор событий находится в нерабочем состоянии, операционная система блокирует исполнение всех процессов, которые запрашивают состояние семафора.

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

Семафор взаимного ожидания представляет собой пакет из семафоров взаимного исключения или семафоров событий. Система может приостановить процесс до тех пор, пока один или все семафоры внутри именованного семафора не окажутся в состоянии 'свободен'( в зависимости от потребности процесса).

Реакция на именованный семафор зависит от процессов, совместно использующих его.

В операционных системах OS/2 и Microsoft Windows существует специальный механизм для взаимодействия процессов в реальном масштабе времени. Этот механизм называется DDE (Dynamic Data Exchange - динамический обмен данными). Он стандартизирует процесс обмена командами, сообщениями и объектами для обработки между задачами. Наиболее распространенные действия, для которых используются DDE - печать.

Другим интерфейсом для обмена данными является OLE (Object Linking and Embedding - объектное связывание со встраиванием). Этот интерфейс позволяет хранить объекты, созданные одной программой, в объектах, созданных другой программой, также редактировать (печатать) их без нарушения целостности информации и связей.

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

Операционная система UNIX не предоставляет этого способаобмена инфорацией, Microsoft Windows же позволяета задачам обмениватся информацией таким образом даже в DOS-сессиях.

ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ

Графический интерфейс пользователя изначально был несвойственнен неигровым программам, однако будучи призваным облегчить общение пользователя с компьютером и программой, хорошо прижился на IBM PC и стал неотьемлемой частью любой важающей себя операционной системы.

Оболочка Microsoft Windows не была изаначально операционной системой, да и сейчас не может считаться в полноценной операционной системой, так как она существует ТповерхТ операционной системы типа MS-DOS. Она возникла в виде стандартизатора графического интерфейса и прижилась исключительно потому, что пользователь хотел видеть программу, с которой ему часто приходится работать красивой, практичной, добной и легкой в освоении и использовании.

Для ОС UNIX также был создан специальный графический интерфейс - X-Windows; промышленный гигант - фирма IBM выпустила вместе с операционной системой OS/2 свой вариант графического интерфейса пользователя (GUI - Graphics User Interface) - Presentation Manager.

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

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

Операционная система (оболочка), ориентированная на графический интерфейс пользователя, предоставляет не только функции, поддерживающие ввод-вывод, но и широкий спектр системных вызовов, позволяющих использовать различные графические примитивы: от самых простых ( точки, линии, дуги) до самых сложных ( области, окна, курсоры ). Основным преимуществом использования графического интерфейса операционной системы является то, что с помощью него программа может создавать графические изоражения, которые будут выглядеть одинаково на всех стройствах, поддерживаемых операционной системой ( принцип What We See Is What We Get - что видим, то и получаем ).

Большое внимание в графическом интерфейсе операционной системы обычно деляется шрифтам. Исторически сложилось так, что первыми и долгое время единственными шрифтами для компьютеров оставались растровые (точечно-матричные) шрифты. Такие шрифты занимали малый объем памяти, однако, их невозможно было вращать, наклонять, меньшать, без искажений, величивать можно было только в целое число раз. С появлением графического интерфейса, операционные системы стали предоставлять системные вызовы для поддержки использования векторных шрифтов, которые не только легко масштабируются, меняют наклон и толщину, но и выглядят одинаково на всех стройствах, поддерживаемых операционной системой. Каждая операционная система поддерживает свой стандарт векторных шрифтов (TrueType для Microsoft Windows; Adobe Type Manager для OS/2; GhostScript для LINUX).

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И ОПЕРАЦИОННЫЕ СИСТЕМЫ

Использование объектно-ориентированного подхода к разработке программ не могло не оказать своего влияния на операционную систему. Графическитй интерфейс пользователя и програмный интерфейс операционной системы начали также использовать объектно-ориентированный подход.

Наиболее развитый объектно-ориентированный программный интерфейс имеет операционная система OS/2. Все графические и программные примитивы представляются в ней в виде объектов (память, дисплей, принтер, папка, звуковая карта, дисковод - все это - объекты).Однако, объектно-ориентированный подход неэффективно использует ресурсы памяти, поэтому использование операционной системы OS/2 на компьютерах с 4 мб памяти (на одном из таких писался данный реферат) затруднительно.

ВЫВОДЫ

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


ВВЕДЕНИЕ

Операционная ситема UNIX изначально была написана для ЭВМ DEC PDP-7 в 1969 г., в 1970 г. была переписана с машинно-зависимого языка ассемблера (на котором тогда писались все операционные системы) на язык высокого ровня - Си и перенесена на более мощную машину - PDP-11/20. В 1974 г. UNIX была передана ниверситетам Фдля образовательных целей, несколько лет спустя нашла коммерческое применение.

UNIX стала первой операционной системой, написанной на языке высокого ровня, что сильно облегчало ее перенос на другие ЭВМ, aдаптацию в соответствии с конкретными требованиями пользователя. Главной отличительной чертой этой системы является ее модульность и обширный набор системных тилит, простота их совместного использования, которые позволяют создать благоприятную операционную обстановку для пользователя-программиста.

Операционные системы семейства MS-DOS (PC-DOS, DR-DOS и др.) появились вместе с первыми персональными компьютерами фирмы IBM в 1981 г. Персональные компьтеры IBM PC тогда имели неважные технические характеристики, были расчитаны на однопользовательский однозадачный режим (в отличае от UNIX - систем, работавших в многопользовательском многозадачном режиме). Обьем оперативной памяти компьютера IBM PC образца 1981 г. был 64 Kб., что предопределяло небольшой размер операционной системы и относительную бедность ее ситемных функций, и хотя в более поздних версиях набор средств был значительно расширен (версия 3.3, о которой и будет идти речь, включает в себя средства для работы в сети и защиту файлов), MS-DOS так и не Фдоросла до UNIX. С самого начала и компьютер, и операционная система были ориентированы на не очень квалифицированного пользователя, работающего с небольшим количеством программ зкого профессионального назначения.

ЖИЗНЕННЫЙ ЦИКЛ ПРОЦЕССА (ПРОГРАММЫ)

Единицей правления и потребления ресурсов в системе служит процесс (в MS-DOS - программа). Процесс - последовательное (или псевдо-параллельное) вычисление. В частности, ввод/вывод обычно выполняется синхронно, и процесс приостанавливается до его завершения. Если требуется продолжить выполнение процесса параллельно с инициированным им вводом/выводом, в UNIX нeoбходимо предварительно породить другой процесс для реализации ввода/вывода; в MS-DOS можно воспользоваться механизмом прерываний. Каждый процесс работает в своем адресном пространстве.

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

Функции семейства exec операционной системы UNIX позволяет передать правление другой программе, заменив текущий образ процесса образом новой программы, без создания нового процесса. При этом возврат к старому процессу невозможен.

В MS-DOS программа может быть загружена в память с немедленным запуском (запуск начинается с первой инструкции) или без запуска (оверлей) на выполнение, при этом для каждой программы в начале ее рабочей памяти создается специальная правляющая структура PSP - program segment prefix, которая отвечает за передачу правления в и иза прогаммы, хранит информацию об открытых файлах, параметрах, переданных программе при вызове.

В обеих операцоинных системах процесс (программа) наследует все файлы, открытые его отцом, текущий каталог и правляющий терминал.

Процесс (программа) завершаются нормальным образом по своей инициативе (вызовом специальной функции в UNIX, системным прерыванием в MS-DOS) и возвращают отцу код завершения, или аварийным образом - получив сигнал.

РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Распределение памяти неразрывно связано с механизмом процессов (программ).

MS-DOS является однозадачной однопользовательской системой, и поэтому программе гарантировано монопольное владение всеми ресурсами (в частнисти памятью); программа, работающая в среде MS-DOS, должна сама заботится о распределении памяти. При запуске новой программы, запускающая программа должна освободить столко памяти, сколько необходимо для загрузки запускаемой программы, посредством вызова специальной системной функции.

Системные функции UNIX обеспечивают выделение, изменение размера и освобождение частков памяти.

СИГНАЛЬНЫЙ МЕХАНИЗМ

Сигнальный механизм UNIX (в MS-DOS не документирован и не стандартизирован) позволяет процессам и операцоинной системе обмениваться информацией в реальном масштабе времени.

Сигналы различаются своими номерами - целыми числами, начиная с 1 (сигнал 0 - зарезервирован). Среди них: аварийное завершение, арифметическая исключительная ситуация, разрыв связи, недопустимая инструкция, нарушение защиты памяти, запись в програмный канал, не открытый для чтения, также различные сигналы завершений. Кроме стандартных сигналов, процесс может определить собственные - 'пользовательские' сигналы.

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

На каждый сигнал, определенный в системе, процесс должен иметь реакцию - действие, которое он выполняет при получении сигнала. Когда вызывается определенная для данного процесса и сигнала реакция, считается, что сигнал передан процессу, которому он был предназначен.

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

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

Допустимы три вида реакции на сигнал: игнорировние, перехват и стандартная реакция системы, перехват и вызов функции внутри процесса. Перехват и игнорирование сигналов приостановки и ничтожения процесса невозможны.

МНОГОПОЛЬЗОВАТЕЛЬСКАЯ ЗАЩИТА (только ОС UNIX)

Пользователи, которым разрешено входить в систему, перечислены в четной базе пользователей. Пользователи обьединены в группы; последние перечисленны в в четной базе групп. Каждому пользователю и каждой группе присвоены целочисленные идентификаторы.

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

С каждым файлом связана пара идентификаторов: пользовательский и групповой. Файл наследует эти идентификаторы от эффективных идентификаторов процесса, создавшего данный файл. Процесс, эффективный пользовательский идентификатор которого совпадает с пользовательским идентификатором файла, считается владельцем данного файла.

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

Проверка прав происходит, когда процесс пытается открыть файл для чтения или записи, выполнить его.

Все пользователи, имеющие доступ в систему, разделены по отношению к файлу на три категории: владельцев (эффективный пользовательский идентификатор процесса совпадает с пользовательским идентификатором файла), членов группы (эффективный групповой идентификатор процесса совпадает с групповым идентификатором файла) и прочих.

Процесс может иметь зависящие от реализации привилегии, которые дают ему дополнительные права при доступе к файлу.

Если процесс не имеет привилегий, то ему разрешается доступ к файлу в трех случаях:

- процесс является владельцем файла (см. выше) и аттрибуты защиты файла разрешают запрашиваемый вид действия владельцу;

- эффективный групповой идентификатор процесса совпадает с групповым идентификаторoм файла и аттрибуты файла разрешают запрашиваемый вид действия группе;

- аттрибуты файла разрешают запрашиваемый вид действия всем процессам.

Если ни одно из словий не выполняется, то процесс не получает доступ к файлу.

Системные вызовы операционной системы UNIX обеспечивают: получение информации о пользователях и группах в четной базе (при наличии соответствующих привилегий) и получение информации о защите конкретного файла.

ФАЙЛОВАЯ СИСТЕМА

За основу фаийловой системы MS-DOS была взята фаиловая система UNIX, поэтому они очень похожы.

Допускаются следующие типы файлов: обычные файлы, специальные байт-ориентированные и блок-ориентированные файлы, FIFO-файлы. Обычный файл - бесструктурный массив с прямым доступом. Каталог обеспечивает связь между именами файлов и собственно файлами. Каждый элемент каталога содержит локальное имя файла и ссылку на конкретный файл. В UNIX различные элементы каталогов могут ссылаться на один и тот же файл. Иерархия файлов образует древовидную структуру. Для именования файла используются корневой и текущий каталоги. Процесс (программа) может сменить текущий каталог.

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

Обе операционные ситемы обеспечивают смену и получение имени текущего каталога, создание, даление, переименование и перемещение фаилов и каталогов, получение информации о файле или каталоге (размер, дату, время последней модификации; UNIX дополнительно обеспечивает информацию о разграничении доступа). UNIX обеспечивает создание и даление связей файла (см. выше).

БАЗОВЫЙ ВВОД-ВЫВОД

Базовый уровень в обеих системах обеспечивает обмен с файлом, интерпретируемым как одномерный массив батов с прямым последовательным доступом.

Для каждого файла система ведет казатель чтения /записи. При чтении (записи) n байтов указатель продвигается вперед по файлу на n байтов и станавливается в позицию очередного читаемого (записываемого) символа.

В начале работы с файлом его создают или открывают. Файлы открытые данной программой, имеют внутреннюю (в пределах данного процесса) нумерацию, начиная с 0. Системный вызов, открывающий файл, возвращает номер открытого файла, который используется при чтении и записи. После того как файл открыт, к нему могут применятся функции чтения или записи. При чтении из файла последовательно читаются очередные байты и возвращается число прочитанных байтов. Оно может оказаться меньше требуемого числа, если до конца файла осталось меньше байтов, чем требуется, или если стройство не передает такого числа байтов.

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

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

Процесс может правлять открытым файлом, получая и задавая значения его аттрибутов, а также блокируя частки файла от доступа к ним других процессов (в MS-DOS возможна только блокировка файла целиком).

По окончании работы с файлом, его следует закрыть. При завершении программы, все открытые файлы закрываются автоматически.

Особенность каталога состоит в том, что запись в него может делать только система - программа может только читать элементы каталога. MS-DOS, в отличае от UNIX, позволяет искать в каталогах файлы по маске.


СТАНДАРТНЫЙ БУФФЕРИЗИРОВАННЫЙ ВВОД/ВЫВОД

Стандартный буферизированный ввод-вывод является надстройкой над базовым ровнем. Подобно базовому ровню, он интерпретирует файл (поток, в терминах данного ровня), как одномерный массив байтов с прямым доступом.

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

Когда процесс начинает работу, он получает открытыми в обеих системах 3 стандартных потока: стандартный ввод ('stdin' - в UNIX, 'CON' - канал 0 в MS-DOS), стандартный вывод ('stdout' - в UNIX, 'CON' - канал 1 в MS-DOS), стандартную диагностику ('stderr' - в UNIX, канал 2 в MS-DOS).MS-DOS предоставляет дополнительно еще 3 стандартных потока - канал связи ('AUX' - канал 3) и стандартное стройство печати ('PRN' - канал 4). Стандартный ввод используется как стройство чтения по умолчанию, стандартный вывод - как стройство записи по молчанию, стандартная диагностика - для вывода сообщений об ошибках.

В обеих операционных системах средства ввода-вывода буферизированного обмена позволяют передавать символы, символьные строки, форматировать выводимую информацию. Как и на базовом ровне возможна становка позиции в потоке.

UNIX предоставляет широчайшие возможности по форматному вводу-выводу чисел: знаковый и беззнаковый форматы различной точности; преобразование и ввод/вывод в различных системах исчисления, в нормализованном представлении; вывод чисел, адресованных с помощью казателя и т. д. В операционных системах семейства MS-DOS специальных функций ввода/вывода чисел нет.

РИФМЕТИЧЕСКИЕ ВЫЧИСЛЕНИЯ

UNIX, имеет обширный набор математических функций для работы с действительными числами двойной точности: все тригонометрические и гиперболические функции, возведение в степень, взятие логарифма, вычисление остатка, взятие целых и дробных частей, взятие модуля числа, генерация псевдослучайных чисел. Имеются также функции целочисленного деления и вычисления модуля числа.

MS-DOS не предоставляет никаких системных вызовов для поддержки математических вычислений.

ОПЕРАЦИИ С СИМВОЛЬНЫМИ ДАННЫМИ И СТРОКАМИ

Обе операционные системы предоставляют системные функции для преобразования строк к верхнему и нижнему регистрам, копирование, сравнение, поиск и транслитерацию строк.

UNIX дополнительно обеспечивает перевод строки символов в число и наоборот, определение типа символа (печатаемый или непечатаемый, правляющий или нет, и т.д.).


СИСТЕМНОЕ ВРЕМЯ

Обе операционные системы предоставляют программе пользователя возможность знать текущие дату и время, соответствующие григорианскому календарю. За начало отсчета в MS-DOS принята дата 1 января 1980 г. 0 часов 0 минут 0 секунд по Гринвичу, в UNIX 1 января 1970 г. Обе системы предоставляют возможность измерения временных интервалов короче 1 секунды с помоищью специальных системных вызовов. UNIX может переводить дату и время из внутреннего числового представления в символьное (пригодное к выводу, например, на терминал); местное время в время по Гринвичу и наоборот; предоставлять информацию о часовом поясе, летнем и зимнем времени.

КОНФИГУРАЦИЯ СИСТЕМЫ

Прикладная программа в обеих операционных системах может знать в процессе своей работы характеристики конкретной реализации системы, в среде которой она функционирует: имя, версию и редакцию операционной системы, тип и технические характеристики компьютера.

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