Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 15-Файлы, внешняя сортировка.pps
Скачиваний:
61
Добавлен:
02.06.2015
Размер:
942.08 Кб
Скачать

Организация ввода-вывода и управление внешними устройствами

Управление вводом/выводом и внешними устройствами (накопителями на магнитных дисках, принтерами, манипуляторами типа «мышь» и клавиатурой и т.п.) – функция ОС, обеспечивающая работу с данными на ВЗУ, выполнение операций ввода-вывода.

Данные, которые обрабатываются программой, должны быть помещены в оперативную память (ОЗУ), только тогда над ними можно выполнять операции в программе.

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

21

Управление внешними устройствами: понятие драйвера

Для управления внешними устройствами на компьютерах устанавливаются специальные программы драйверы.

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

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

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

22

Организация файлов в ОС

Простейший способ организации файлов для ОС – файл представляет собой неструктурированную последовательность байтов.

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

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

23

Логическая организация файлов

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

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

Простейшая «запись» – символ, если файл содержит текст, состоящий из символов.

В файле можно хранить данные различных типов в их внутреннем двоичном – представлении. Записями в бинарных

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

Структуризация файлов: записи

Каждый файл, обрабатываемый программой, в простейшем случае представляет собой последовательность записей («массив»,

размер которого может изменяться: при добавлении записи – увеличивается, при удалении записи из файла – уменьшается). Элементом «массива» может быть

символ,

число (двоичное целое или действительное),

запись (структура), включающая разнотипные данные.

 

Разбивка файлов на последовательность записей фиксированного

 

размера (блоков, состоящих из последовательностей байтов,

 

сгруппированных в зависимости от типа данных, размещаемых на

 

внешнем устройстве, заданного в программе) – первый шаг к

 

структуризации файлов.

25

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

имеющих свою внутреннюю структуру.

Последовательная организация файлов

При последовательной организации файл представляет собой «массив», в котором в каждый момент содержится определенное число записей (от 0 и более):

Для того чтобы прочитать запись Ri необходимо прочитать все предшествующие ей записи, т.е. запись Ri может быть прочитана только после записи Ri–1.

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

26Если необходимо обработать только определенные записи, то этот

способ неудобен, т.к. в худшем случае для поиска нужной записи

Последовательная организация файлов: запись в файл

Файл

FibNumbers.Data

27

Program WriteFile;

type Element = record

ElementNumber: integer;

FibNumber: integer end;

var I, N: integer;

E: Element;

F: file of Element;

function Fib(m: Integer): integer; begin

if m = 0 then Fib := 0 else if m = 1 then Fib :=

else Fib := Fib(m-2) +

end; begin

write('Введите количество чисел::

readln(N);

Assign(F, 'FibNumbers.Data');

rewrite(F);

for I:=0 to N do begin

E.ElementNumber := I; E.FibNumber := Fib(I);

write(F, E) end;

close(F) end.

«Связываем» файловую переменную с файлом на внешнем устройстве

Последовательная организация файлов: запись в файл

 

Program WriteFile;

 

type Element = record

 

ElementNumber: integer;

 

FibNumber: integer

 

end;

 

var I, N: integer;

 

E: Element;

 

F: file of

 

function Fib(m:

 

begin

 

if m = 0

 

else if

 

end; else

 

begin

 

write('Введите

 

readln(N);

 

Assign(F,

 

rewrite(F);

 

for I:=0 to

 

begin

 

E.

 

E.FibNumber

 

write(F, E)

 

end;

28

close(F)

end.

«Связываем» файловую переменную с файлом на внешнем устройстве

Открываем файл для записи – по каталогу ищется местоположение файла, если он существует, файл очищается; если файла нет, он создается и данные о нем вносятся в каталог

Последовательная организация файлов: запись в файл

 

Program WriteFile;

 

type Element = record

 

ElementNumber: integer;

 

FibNumber: integer

 

end;

 

var I, N: integer;

 

E: Element;

 

F: file of

 

function Fib(m:

 

begin

 

if m = 0

 

else if

 

end; else

 

begin

 

write('Введите

 

readln(N);

 

Assign(F,

 

rewrite(F);

 

for I:=0 to N

 

begin

 

E.ElementNumber

 

E.FibNumber

 

write(F, E)

 

end;

29

close(F)

end.

«Связываем» файловую переменную с файлом на внешнем устройстве

Открываем файл для записи

Запись в файл: в файл вносится N+1 запись в цикле

Последовательная организация файлов: запись в файл

 

Program WriteFile;

 

 

type Element = record

 

 

ElementNumber: integer;

 

FibNumber: integer

 

end;

 

 

var I, N: integer;

«Связываем» файловую

 

E: Element;

 

F: file of

переменную с файлом на

 

function Fib(m:

внешнем устройстве

 

begin

 

 

if m = 0

 

 

else if

 

 

end; else

 

 

begin

 

 

write('Введите

 

 

readln(N);

Открываем файл для записи

 

Assign(F,

 

 

rewrite(F);

 

 

for I:=0 to N

Запись в файл

 

begin

 

 

E.ElementNumber

 

 

E.

Закрываем файл – обновляются в

 

write(F,

 

каталоге сведения о его размере,

 

end;

30

close(F)

времени изменения и пр.

end.

 

Соседние файлы в папке Презентации лекций по ТОИ