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

 

 

Системное ПО – совокупность программ и программных комплексов для обеспечения работы компьютера и сетей ЭВМ.

Системное ПО направлено:

 

В структуру системного ПО входит базовое ПО и сервисное ПО.

 

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

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

Сетевые ОС – комплекс программ, обеспечивающий обработку, передачу и хранение данных в сети ( н-р, WindowsNT).

 

Сервисное ПО – это программы и программные комплексы, которые расширяют возможности базового ПО и организуют более удобную среду работы пользователя.

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

 

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

 

Аппаратная часть компьютера состоит из следующих элементов:

ОС может поддерживать одно- и многозадачный режим работы (в зависимости от числа параллельно выполняемых программ). Например, ОС MS-DOS поддерживает однозадачный режим работы компьютера. Это значит, что в данный момент на компьютере может выполняться только одна программа, запущенная пользователем на исполнение. И только после того, как выполнение этой программы будет завершено, пользователь может инициализировать другую программу. ОС Windows  поддерживает многозадачный режим работы компьютера. Пользователь может запустить сразу несколько прикладных программ и работать с ними одновременно. Запущенные программы называются активными задачами, и все они отражаются значками на панели задач Windows. Нередко встречается такая ситуация, когда одна из запущенных программ требует длительного времени для своей работы. Например, большие математические вычисления или проверка дисков на наличие вирусов. В таком случае эта программа выполняется в фоновом режиме, т.е. ее исполнение не прекращается до полного завершения, а в то же время на ее фоне пользователь может выполнять какую-то оперативную работу с другими программами, например, может набирать текст в текстовом редакторе.

Кроме того, ОС бывают одно- и многопользовательские (в зависимости от числа пользователей, одновременно работающих с операционной системой); непереносимые и переносимые на другие типы компьютеров; несетевые и сетевые, обеспечивающие работу в локальной вычислительной сети.

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

Суть режима разделения времени состоит в следующем. Каждой программе, находящейся в оперативной памяти и готовой к исполнению, выделяется для исполнения фиксированный, задаваемый в соответствии с приоритетом пользователя интервал времени (интервал мультиплексирования). Если программа не выполнена до конца за этот интервал, ее исполнение принудительно прерывается, и программа переводится в конец очереди. Из начала очереди извлекается следующая программа, которая исполняется в течение соответствующего интервала мультиплексирования, затем поступает в конец очереди и т.д. Если интервал мультиплексирования достаточно мал (200 мс), а средняя длина очереди готовых к исполнению программ невелика (10), то очередной квант времени выделяется программе каждые 2 с. В этих условиях ни один из пользователей практически не ощущает задержек, т.к. они сравнимы со временем реакции человека.

 

Структура ОС:

 

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

Файл – это поименованная совокупность данных, хранимых во внешней памяти и имеющих определенную структуру.

Имя файла состоит из двух частей, разделенных точкой: собственно имя файла (в ОС MS-DOS имя файла может содержать не более 8 символов – латинских букв и цифр; в ОС Windows имя файла может иметь длину до 255 символов, причем можно использовать русский алфавит) и расширение, определяющее его тип (программные – имеют расширение .exe или .com и файлы данных – например, текстовый редактор Word сохраняет документы в файлах типа .doc, табличный процессор Excel – файлы типа .xls и т.д.).

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

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

Например, в корневом каталоге  могут находиться два вложенных каталога 1-го уровня (Каталог_1, Каталог_2) и один файл (Файл_1). В свою очередь в каталоге 1-го уровня (Каталог_1) находятся два вложенных каталога второго уровня (Каталог_1.1, Каталог_1.2) и один файл (Файл_1.1).

                    

Чтобы найти файлы в иерархической файловой системе, нужно указать путь к файлу. В путь к файлу входят записываемые через разделитель «\» логическое имя диска и последовательность имен вложенных друг в друга каталогов, в последнем из которых содержится нужный файл. Например, C:\GAMES\CHESS\chess.exe. Путь к файлу вместе с именем файла называют полным именем файла.

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

 

Общие средства для работы с текстовыми файлами в языке Паскаль

 

Файл – это идентифицированная совокупность экземпляров описанного в программе типа данных, находящихся во внешней памяти и доступных программе посредством специальных операций. Любой файл имеет три характерные особенности:

1)      у него есть имя;

2)      он содержит компоненты одного типа; тип компонент файла может быть любым кроме файлового;

3)      длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается ёмкостью устройств внешней памяти.

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

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

 

f0

f1

f2

f3

маркер конца файла

 

                                                        ^тм

 

Здесь т.м. – текущий маркер, указывающий на рабочую позицию файла; маркер конца файла – специальный код, автоматически формируемый вслед за последним элементом файла.

Файлы в Паскале классифицируются по двум признакам:

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

Файловый тип данных задается в программе следующим образом:

type <имя файлового типа> = file of <тип компонентов>.

Описание файловой переменной задается обычным способом в разделе описания:

var <имя файловой переменной> : <имя файлового типа> ,

а если  файловый тип не был описан в разделе описания типов, то:

var < имя файловой переменной > : file of <тип компонентов>.

Турбо-Паскаль вводит ряд процедур и функций, применимых для любых типов файлов:

 Assign,  Reset,  Rewrite,  IOResult,  Close,  Rename, Erase, Eof.

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

Assign (<имя файловой переменной>, <имя физического файла>),

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

Для работы с файлом его необходимо открыть, а по окончании работы – закрыть. Файл открывается для чтения оператором reset(<имя файловой переменной>), для записи – оператором   rewrite(<имя файловой переменной >).

Чтение и запись данных осуществляется с помощью процедур (кроме нетипизированных файлов):

read(f,X);    

write(f,X),    

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

read(f,X12, …, Хk) и write(f,X12, …, Хk),            

где  f – имя файловой переменной, а переменные Х1, Х2,...ХК  должны  иметь  тот  же  тип, что и объявленный тип компонент файла f.
Закрытие файла осуществляется командой close(<имя файловой переменной >). Если не закрыть файл, то все сделанные в нём изменения не сохранятся!!!

При выполнении процедуры  reset(<имя файловой переменной>)  физический файл или логическое устройство подготавливается к чтению информации. В результате текущий маркер будет указывать на начало файла. Если делается попытка открытия для чтения несуществующего файла, то возникает ошибка, которая может быть сообщена программе с помощью встроенной функции  IOResult:Integer; если операция открытия завершилась успешно, то функция возвращает «0», а если неуспешно, то функция возвращает код ошибки. Функция становится доступной только при отключенном автоконтроле ошибок ввода - вывода. Директива компилятора {$I-} отключает, а {$I+} – включает автоконтроль ошибок.

Процедура rewrite(<имя файловой переменной >) создает новый физический файл, имя которого связано с указанной файловой переменной. Если такой файл уже существует, то он удаляется и на его месте создается новый пустой файл. При открытии файла этой процедурой текущий маркер устанавливается в его начало.

Структура чтения файла имеет вид: reset(f);

                                                            …………

                                                              read(f,<список ввода>);

                                                            …………

                                                              close(f).

Структура записи файла имеет вид: rewrite(f);

                                                            …………

                                                              write(f,<список ввода>);

                                                            …………

                                                              close(f).

В Паскале предусмотрены встроенные функции по работе с файлами:

 

ТЕКСТОВЫЕ файлы.

 

Для описания текстовых файлов используется стандартный тип Тext:

type <имя файлового типа> = Тext     или

var < имя файловой переменной > : Тext.

Текстовый файл можно представить как страницу книги, в конце каждой строки которой стоит маркер конца строки:

 

Код символа

К.с.

маркер конца строки

 

К.с.

К.с.

К.с.

М.к.с.

К.с.

М.к.с.

 

 

 

 

 

Отличие текстового файла от файла типа char:

1)      автоматическое преобразование числовых данных в цепочку символов при записи значений в файл, и обратное преобразование символов, являющихся числами, в числовые значения при выполнении операции чтения;

2)      записывать в текстовый файл и читать из него разрешается только переменные некоторых стандартных типов (целые, действительные, символьные, строковые)

3)      текстовый файл не имеет прямого доступа;

4)      при работе с типизированными файлами, в частности с файлами типа char,  разрешается открывать их  для чтения  процедурой reset и при этом использовать процедуру write для записи; для текстовых файлов такой возможности не предусмотрено;

5)      наличие признаков конца строки; с признаком конца строки связана функция eoln(<имя файловой переменной>) - возвращает значение TRUE, если найден конец строки;

6)      при работе с текстовыми файлами можно использовать стандартные процедуры readln(f,X), writeln(f,X), а также readln(f,X12, …, Хk) и writeln(f,X12, …, Хk),  где f - имя файловой переменной, X, Х1, Х2,...ХК могут быть  переменными целого,  действительного, символьного или строкового типа.          

 

К текстовым файлам относятся стандартные файлы ввода-вывода Input, Output. Работа с этими файлами имеет особенности: имена этих файлов в списке ввода-вывода не указываются; применение процедур Reset, Rewrite и Close к ним запрещено.

Турбо-Паскаль вводит дополнительные процедуры и функции, применимые только к текстовым файлам:

 

Пример. Составить программу формирования и вывода на экран текстового файла, который содержит следующие строки: (рис.1).

Program FileText; uses crt;

Var f: text; i,j: integer; a:array [1..5,1..5] of integer; b:string;

Begin clrscr;

assign(f, 'tablichka'); {связываем файловую переменную f с файлом 'tablichka.txt'}

rewrite(f); {открываем файл для записи}

writeln('Формирование текстового файла'); writeln;

for i:=1 to 5 do for j:=1 to 5 do

   begin if i=j then a[i,j]:=1 else  a[i,j]:=0;

   str(a[i,j],b); {число a[i,j] преобразуется в строку b путем навешивания апострофов}

   write(f,b) {записываем b файл f }

   end;

close(f); {закрываем файлы, чтобы сохранить изменения}

writeln('Вывод содержимого файла на экран'); writeln;

assign(f, 'tablichka.txt'); {хотя второй раз можно не связывать, т.к. это уже делали}  

reset(f);  {открываем файл для чтения}

while not eof(f) do {пока не конец файла считываем и выводим на экран его элементы}

begin

  while not eoln(f) do {пока не конец строки считываем и выводим на экран ее элементы}

     begin read(f,b); write(b) end;

     readln(f)  {переходим на следующую строку файла}

end;

close(f); readkey end.

Hosted by uCoz