Что такое файловая структура записи. Файловая система в Android-устройствах. Файловый менеджер – ваш помощник

Что такое файловая структура записи. Файловая система в Android-устройствах. Файловый менеджер – ваш помощник

15.06.2019

Все программы и данные хранятся в долговременной памяти компьютера в виде файлов .

Определение 1

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

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

Рисунок 1.

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

В именах файлов запрещено использовать знаки:

\ / * ? : “ | .

Расширение некоторых типов файлов:

Рисунок 2.

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

Рисунок 3.

Классификация значков файлов

Рисунок 4.

Определение 2

Файловая структура – совокупность файлов и взаимосвязь между ними.

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

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

Каждый диск имеет логическое имя, обозначаемое латинской буквой со знаком двоеточия:

  • C:, D:, E: и т.д. – жесткие и оптические диски,
  • А:, В: - гибкие диски.

Папкой верхнего уровня для диска является корневая папка, которая в OS Windows обозначается добавлением к имени диска значка «\», например, D:\ - обозначение корневой папки.

Пример файловой структуры :

Рисунок 5.

Каталог - это папка или директория, куда помещают файлы и другие каталоги.

Каталог, который не является подкаталогом ни одного другого каталога , называется корневым . Такой каталог находится на самом верхнем уровне иерархии всех каталогов. В Windows каждый из дисков имеет свой корневой каталог (D:\, C:\, E:).

Каталоги в OS Windows делятся на системные и пользовательские. Пример системных каталогов: «Рабочий стол», «Сетевое окружение», «Корзина», «Панель управления».

Рисунок 6. Системные каталоги OS Windows

Слева направо: системная папка

Корзина, папка Мои документы, ярлык к папке Мои документы

Каталог и папка физически одно и тоже.

Путь к файлу – это его адрес.

Путь к файлу всегда начинается с указанием логического имени диска (D:\, C:\, E:), затем записывается последовательность имен вложенных друг в друга папок, в последней папке содержится нужный файл. Путь к файлу вместе с именем файла называют полным именем файла, например: D:\Мои документы\Литература\Сочинение.doc полное имя файла Сочинение.doc.

Рисунок 7. Дерево каталогов и файлов

Схематично файловую структуру диска представляют в виде дерева.

Рисунок 8. Файловая структура диска Z:

  • Z:\box\box1 – полное имя папки (каталога) box1
  • Z:\box\box.txt – полное имя файла box.txt
  • Z:\box\box2\box3\box1 - полное имя папки (каталога) box1
  • Z:\box\box2\box3\box.txt - полное имя файла box.txt

Лабораторная работа №10

ВЫВОД НА ДИСК И ПРИНТЕР

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

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

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

Что такое файловая структура

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

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

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

Рис. 1. Некоторое время данные хранятся в буфере

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

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


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

Почти все компиляторы Си и Си++ хранят информацию, необходимую для работы с файлами, в файле заголовков STDIO.H. Этот файл содержит определения констант, которые нужны для операций с файлами. Кроме того, он может содержать описание файловой структуры. Для того, чтобы воспользоваться функциями работы с файлами, программу следует начинать с инструкции

#include,

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

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

Указатель на файл

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

FILE *file_pointer;

Имя структуры FILE говорит программе о том, что определяемая переменная является указателем именно на файловую структуру. Звездочка предписывает создать указатель с соответствующим именем переменной.

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

FILE *infile, *outfile;

Как открыть файл

Связь между программой и файлом устанавливается при помощи функции fopen(), синтаксис которой показан на рис. 3.

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


Рис. 3. Синтаксис функции fopen()

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

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

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

Например, если вы хотите создать файл с именем CD.DAT для хранения картотеки коллекции компакт-дисков, вы должны использовать следующие инструкции:

FILE *cdfile;cdfile = fopen("CD.DAT", "w");

Если в программе требуется осуществить чтение из файла, а не запись в него, используйте следующую запись:

FILE *cdfile;cdfile = fopen("CD.DAT", "r");

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

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

FILE *cdfile;cdfile = fopen("PRN", "w");

Учтите, что вывод информации на принтер возможен только с режимом доступа "w".

Как Си/Си++ работает с файлами

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

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

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

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

Как закрыть файл

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

Fclose(file_pointer);

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

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

Листинг 1. Использование одного указателя файла в двух операциях.

FILE *cdfile;if((cdfile = fopen("CD.DAT", "w")) == NULL) { puts("Невозможно открыть файл"); exit(); }/* Здесь должны располагаться инструкции записи в файл */fclose(cdfile);if((cdfile = fopen("CD.DAT", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); }/* В этом месте должны быть записаны инструкции чтения из файла */fclose(cdfile);

Здесь файл сначала открывается с использованием режима доступа "w", затем в него записывают данные. Во второй раз файл открывается с использованием режима доступа "r", что позволяет прочитать данные и вывести их на экран.

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

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

Функции ввода и вывода

Существует несколько способов передачи данных в файл и получения их из файла в зависимости от используемой функции:

· посимвольная запись данных в файл или вывод их на принтер с использованием функции putc() или fputc();

· посимвольное чтение данных из файла с использованием функции getc() или fgetc();

· построчная запись данных в файл или вывод их на принтер с использованием функции fputs();

· построчное чтение данных из файла с использованием функции fgets();

· форматированный вывод символов, строк или чисел на диск или на принтер с помощью функции fprintf();

· форматированный ввод символов, строк или чисел из файла с помощью функции fscanf();

· запись целой структуры с использованием функции fwrite();

· чтение целой структуры с использованием функции fread().

Работа с символами

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

/*fputc.c*/#include main() { FILE *fp; char letter; if((fp = fopen("MYFILE","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } do { letter=getchar(); fputc(letter, fp); } while(letter != "\r"); fclose(fp); }

Файл открывается с режимом доступа "w". Если файл с именем MYFILE не существует к моменту выполнения программы, он будет создан. В цикле do, с помощью функции getchar(), осуществляется ввод последовательности символов, которые затем записываются в файл с помощью функции putc(). Синтаксис записи putc() таков:

Putc(char_variable, file_pointer);

С теми же аргументами может использоваться и функция fputc().

Цикл выполняется до тех пор, пока не нажата клавиша Enter , которая вводит код «возврат каретки» (\r), после чего файл закрывается.

Работа со строками

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

Функция fputs() имеет следующий синтаксис:

Fputs(string_variable, file_pointer);

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

/*fputc.c*/#include main() { FILE *fp; char flag; char name; if((fp = fopen("MYFILE","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } flag = "y"; while(flag != "n") { puts("Введите имя"); gets(name); fputs(name, fp); fputs("\n",fp); printf("Желаете ввести другое имя?"); flag=getchar(); putchar("\n"); } fclose(fp); }

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

Если ваш компилятор может использовать функцию strlen(), можно несколько упростить процедуру ввода, используя следующие инструкции:

Printf("Пожалуйста, введите имя: ");gets(name);while(strlen(name) > 0) { fputs(name, fp); fputs("\n", fp); printf("Пожалуйста, введите имя: "); gets(name); }

Символы, которые вы набираете на клавиатуре, присваиваются строковой переменной name, а затем проверяется, не оказалась ли длина строки равной 0. Если на запрос сразу же нажать клавишу Enter, строка будет иметь нулевую длину и выполнение цикла прекратится. Если до нажатия Enter ввести хотя бы один символ, строка и код «новая строка» будут записаны на диск.

Некоторые компиляторы позволяют еще более упростить алгоритм ввода строки, например, так:

Printf("Пожалуйста, введите имя: ");while(strlen(gets(name)) > 0) { fputs(name, fp); fputs("\n", fp); printf("Пожалуйста, введите имя: "); }

где ввод строки выполняется внутри условия while.

Для того чтобы напечатать строку на принтере, вместо записи ее на диск используется имя файла "prn". Чтобы открыть файл, требуется указать:

If ((fp = fopen("prn", "w")) == NULL)

Для создания программы печати длина строки определяется равной 81 символу, чтобы строка могла уместиться во всю ширину экрана, прежде чем будет нажата клавиша Enter . В Листинге 2 приводится текст программы, которая демонстрирует, как можно написать простой текстовый процессор. Строка не посылается на принтер до тех пор, пока не нажата клавиша Enter , что позволяет с помощью клавиши Backspace корректировать ошибки ввода строки.

Листинг 2. Программа вывода строки на печатающее устройство.

/*wp.c*/#include "stdio.h"main() { FILE *fp; char line; if ((fp = fopen("prn", "w")) == NULL) { puts("Принтер не готов к работе"); exit(); } puts("Введите текст, после ввода каждой строки нажимайте Enter\n"); puts("Для прекращения ввода нажмите Enter в начале новой строки\n"); gets(line); while (strlen(line) > 0) { fputs(line, fp); fputs("\n", fp); gets(line); } fclose(fp); }

Чтение строк

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

Fgets(string_variable, lenght, file_pointer);

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

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

/*fgets.c"/#include "stdio.h"main() { FILE *fp; char name; if ((fp = fopen("MYFILE", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); } while(fgets(name, 12, fp) != NULL) { printf(name); } fclose(fp); }

Ввод выполняется внутри цикла while до тех пор, пока значение читаемого символа не равно NULL. Как только указатель достигнет конца файла, строковой переменной присваивается значение NULL. При построчном чтении из файла для указания конца файла всегда используется NULL, а EOF используют при посимвольном чтении.

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

Кстати, обратите внимание, что функция printf() используется в этом примере для вывода содержимого строковой переменной без указателей формата. Каждая строка, читаемая из файла, включает код «новая строка», который был записан в файл в инструкции fputs("\n", fp);, и никаких дополнительных кодов «новая строка» в параметры функции printf() включать не требуется.

Листинг 3. Форматированный вывод.

/*fprintf.c*/#include "stdio.h"main() { FILE *fp; char name; int quantity; float cost; if ((fp = fopen("MYFILE", "w")) == NULL) { puts("Невозможно открыть файл"); exit(); } printf("Введите наименование товара: "); gets(name); while (strlen(name) > 0) { printf("Введите цену товара: "); scanf("%f", &cost); printf("Введите количество единиц товара: "); scanf("%d", &quantity); fprintf(fp, "%s %f %d\n", name, cost, quantity); printf("Введите наименование товара: "); gets(name); } fclose(fp); }

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

Do { printf("Введите наименование товара: "); gets(name); printf("Введите цену: "); scanf("%f", &cost); printf("Введите количество единиц товара: "); scanf("%d", &quantity); fprintf(fp, "%s %f %d\n", name, cost, quantity); }while (strlen(name) > 0);

и эта программа работала бы столь же успешно, не считая того, что для окончания цикла требовалось бы нажать клавишу Enter трижды: первый раз при вводе названия и еще два раза в ответ на просьбу ввести цену и количество товара.

Внутри цикла while данные о цене и количестве каждого наименования товара вводятся с использованием функции scanf(), а затем записываются на диск с помощью инструкции

Fprintf(fp, "%s %f %d\n", name, cost, quantity);

Обратите внимание, что код «новая строка» записывается в файл в конце каждой строки. Если просмотреть содержимое файла с помощью команды TYPE операционной системы MS-DOS, то каждая строка инвентарной описи и на экране будет начинаться с новой строки:

Если бы код «новая строка» не был записан на диск, текст выводился бы подряд, в одну строку на экране, и выглядел примерно так:

Дискеты 1.120000 100лента 7.340000 150картридж 75.000000 3

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

Дискеты 1.120000 Memoryexлента 7.340000 Okaydataкартридж 75.000000 HP

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

Дискеты 1.120000 Memoryexлента

Все выведенные на диск данные, даже значения типа int или float, хранятся в виде текстовых символов. Об этом мы будем говорить чуть позже.

Листинг 4. Чтение форматированного текста из файла.

/*fscanf.c*/#include "stdio.h"main() { FILE *fp; char name; int quantity; float cost; if ((fp = fopen("MYFILE", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); } while (fscanf(fp, "%s%f%d", name, &cost, &quantity) != EOF) { printf("Наименование товара: %s\n", name); printf("Цена: %.2f\n", cost); printf("Количество единиц: %d\n", quantity); } fclose(fp); }

Работа со структурами

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

Синтаксис функции fwrite() такой:

Fwrite(&structure_variable, structure_size, number_of_structures, file_pointer);

На первый взгляд, эта инструкция выглядит несколько устрашающей, но на самом деле использовать ее очень легко:

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

· structure_size - это количество символов в структуре; не обязательно подсчитывать его самому, для этого можно использовать библиотечную функцию sizeof(), записанную следующим образом:

Sizeof(structure_variable)

которая автоматически определит размер указанной структуры;

· number_of_structures - это целое число, определяющее количество структур, которые мы хотим записать в один прием; здесь всегда следует указывать число 1, если только вы не собираетесь создать массив структур и записать его одним большим блоком;

· file_pointer - указатель на файл.

В качестве примера предположим, что вы хотите записать на диск сведения о своей коллекции компакт-дисков. Используя структуру CD, которую мы подробно разбирали ранее, пишем инструкцию: fwrite(&disc, sizeof(disc), 1, fp);

Выполнение этой инструкции иллюстрирует рис. 5.

Текст программы, которая вводит данные в структуру CD, а затем сохраняет ее на диске, приведен в Листинге12.5. Для ввода имени создаваемого файла используется функция gets(). Переменная, в которой хранится имя файла, используется функцией fopen() для того, чтобы открыть файл.

Информация о каждой структуре CD вводится с клавиатуры, после чего структура целиком записывается на диск.



Рис. 5. Синтаксис функции fwrite() в инструкции записи структуры CD

Листинг 5. Запись структуры CD.

/*fwrite.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; char filename; printf("Введите имя файла, который вы желаете создать: "); gets(filename); if ((fp = fopen(filename, "w")) == NULL) { printf("Невозможно открыть файл %s\n", filename); exit(); } puts("Введите сведения о диске\n"); printf("Введите название диска: "); gets(disc.name); while (strlen(disc.name) > 0) { printf("Введите описание: "); gets(disc.description); printf("Введите категорию: "); gets(disc.category); printf("Введите цену: "); scanf("%f", &disc.cost); printf("Введите номер ячейки: "); scanf("%d", &disc.number); fwrite(&disc, sizeof(disc), 1, fp); printf("Введите название: "); gets(disc.name); } fclose(fp); }

Чтение структур

Fread(&structure_variable, structure_size, number_of_structures, file_pointer);

За исключением имени функции эта инструкция полностью совпадает с записью функции fwrite(). Программа, в которой из файла считывается структура CD, приведена в Листинге 6. Для чтения данных используется цикл while:

While (fread(&disc, sizeof(disc), 1, fp) == 1)

Функция fread() возвращает значение, соответствующее количеству успешно прочитанных структур. Так как в аргументе функции мы указали, что читать следует по одной структуре, функция возвращает значение 1. Цикл while будет выполняться до тех пор, пока считывание структур с диска проходит успешно. Если чтение структуры становится невозможным, например потому, что достигнут конец файла, функция возвращает значение 0, и выполнение цикла прекращается.

Листинг 6. Чтение структуры CD с диска.

/*fread.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; char filename; printf("Введите имя файла, который желаете открыть: "); gets(filename); if ((fp = fopen(filename, "r")) == NULL) { printf("Невозможно открыть файл %s\n", filename); exit(); } while (fread(&disc, sizeof(disc), 1, fp) == 1) { puts(disc.name); putchar("\n"); puts(disc.description); putchar("\n"); puts(disc.category); putchar("\n"); printf("%f", disc.cost); putchar("\n"); printf("%d", disc.number); } fclose(fp); }

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

Таблица 1. Функции ввода в файл и вывода из файла.

Чтение в массив

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

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

Total = total + disc.cost;index++;count++;

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

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

Листинг 7. Чтение структуры в массив.

/*rarray.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; int index, count; float total; count = 0; total = 0; char filename; printf("Введите имя файла данных: "); gets(filename); while ((fp = fopen(filename, "r")) == NULL) { printf("Невозможно открыть файл %s\n", filename); printf("Введите имя файла данных: "); gets(filename); } index = 0; while (fread(&disc, sizeof(disc), 1, fp) == 1) { puts(disc.name); putchar("\n"); puts(disc.description); putchar("\n"); puts(disc.category); putchar("\n"); printf("%f", disc.cost); putchar("\n"); printf("%d", disc.number); total = total + disc.cost; index++; count++; } fclose(fp); printf("Общая стоимость коллекции составляет %.2f\n", total); printf("Коллекция содержит %.d дисков\n", count); }

Листинг 8. Программа копирования содержимого файлов.

/*filecopy.c*/#include "stdio.h"main() { FILE *fp1, *fp2; char infile, outfile; int letter; printf("Введите имя файла для чтения: "); gets(infile); if ((fp1 = fopen(infile, "r")) == NULL) { printf("Невозможно открыть файл %s", infile); exit(); } printf("Введите имя файла для записи: "); gets(outfile); if ((fp2 = fopen(infile, "w")) == NULL) { printf("Невозможно открыть файл %s", outfile); fclose(fp1); exit(); } while ((letter = fgetc(fp1)) != EOF) { putchar(letter); fputc(letter, fp2); } fclose(fp1); fclose(fp2); }

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


Рис. 6. Функция fprintf() записывает числовые значения в виде текстовых символов

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

Функция fprintf() записывает все данные в виде текста. Например, если использовать fprintf() для записи числа 34.23 на диск, пять символов будут записаны так, как это показано на рис. 6. Если в дальнейшем для чтения данных из файла используется функция fscanf(), символы будут преобразованы в числовое значение и в таком виде записаны в переменную.

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

Двоичный формат

Для сохранения числовых переменных в двоичном формате используется функция fwrite(). Записанные таким образом данные на диске займут столько же места, сколько и в памяти. Если просмотреть содержимое такого файла с помощью команды TYPE, мы увидим на месте числовых значений бессмысленные буквы и значки. Это ASCII-символы, эквивалентные записанным в файл значениям.

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

Печать данных

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

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

Листинг 9. Чтение и печать содержимого дискового файла.

Каждая структура целиком вводится функцией fread(), после чего отдельные члены структуры печатаются с использованием функции fprintf(). Функция fread() может читать строки, включающие пробелы, поэтому ее применение предпочтительнее, чем использование функции fscanf().

Инструкции

Fprintf(ptr, "\n\n");

выводят по две пустые строки между отдельными структурами CD.

Проектирование программы

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

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

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

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

Определение файла

Работой любого компьютера руководит операционная система, без которой невозможно его использовать по прямому предназначению. Для понимания того, что представляет собой ФС, необходимо вникнуть в суть другого термина - файла. С английского слово file переводится как "папка" и означает именованную область данных диска либо любого другого носителя информации. Также можно дать и такое определение файла: это - последовательность определенного количества байтов, причем его длина произвольная.

Как понять файловую структуру персонального компьютера наиболее адекватно, и о каких данных идет речь? Обычно любая хранимая или обрабатываемая информация - это:

  • электронные документы;
  • изображения;
  • программное обеспечение;
  • музыкальные композиции;
  • видеоконтент и прочее.

Однако всю эту информацию необходимо как-то упорядочить, что делается для удобства в отношении пользователя. Но это относится не только к файлам. К примеру, все мы храним обувь в отдельности от одежды. То же самое применимо и к продуктам, ведь никто не хранит обувь рядом с ними?! Поэтому мы прибегаем к двум проверенным способам:

  • сортировка;
  • группировка.

Что касается файлов, то здесь используется 2 способ. За что и отвечает операционная система. Но действует она посредством файловой системы или структуры.

Что понимать под файловой системой?

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

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

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

Если необходимо проделать какое-либо действие над файлом (открыть, переместить и так далее), то операционная система обращается как раз к файловой системе. Именно последняя и производит необходимые манипуляции. Теперь можно сформировать более понятное определение файловой системы. Это - организационный процесс хранения данных на каком-нибудь носителе.

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

Функциональность ФС

Файловая система выполняет несколько полезных функций:

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

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

Иерархия

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

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

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

Конечно, это сделать никто не запретит, но здесь не будет никакого смысла. Кроме того, папка со значением exe, к примеру, "Фильмы.exe" в большинстве случаев указывает на присутствие вируса - в этом случае не рекомендуется открывать ее.

Атрибуты файлов

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

  • Read only - только для чтения (R).
  • System - системный (S).
  • Hidden - скрытый (H).
  • Archive - архивный (A).

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

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

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

Атрибут A указывает, что файл сжат.

Разновидности файловой системы

Существует несколько типов файловых систем, между которыми рядовой пользователь не найдет видимых различий. А между тем каждой разновидности присущи свои характеристики. Файловые системы подразделяются в зависимости от предназначения:

  • для жестких дисков;
  • для магнитных носителей;
  • для оптических носителей;
  • для виртуальной среды;
  • сетевые.

Наибольшее распространение получили следующие файловые системы:

  • EXFAT.
  • NTFS.

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

EFS

Полностью звучит так: Encrypting File System. Данная файловая структура операционной системы персонального компьютера наиболее предпочтительна в силу того, что все данные располагаются в зашифрованном виде. Благодаря этому этот тип широко распространен и работает с операционными системами всего семейства Windows.

Шифрование задается просто. Для этого нужно зайти в свойства файла, нажать на кнопку «Другие», найти пункт «Шифровать содержимое для защиты данных» и поставить рядом галочку. После этого нажать «Приметить» и «ОК». Помимо этого, можно указать кому разрешен доступ к зашифрованному файлу.

Universal Disk Format или UDF

Данная файловая система предназначена для носителей информации, в частности оптических дисков. Поддерживается операционной системой Windows XP и старше. Имеет свои особенности: длина имени файлов не превышает 255 символов (ASCII-кодировка) или 127 (Unicode-кодировка).

Что касается регистра, то он может быть как нижним, так и верхним. При этом максимальная длина пути составляет 1023 символа.

EXFAT

Что такое файловая структура компьютера EXFAT? Преимущественно она используется для переносных накопителей информации (флешки). Это своего рода посредник между Windows и Linux, который ответственен за преобразование файлов из одной системы в другую. В Windows Vista и Windows 7 можно отформатировать накопители посредством стандартного инструмента.

EXT

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

  • ext2;
  • ext3;
  • ext3cow;
  • ext4.

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

FAT

Теперь подошла очередь для узнаваемых систем, среди которых FAT. Система была создана в конце прошлого столетия, а за ее разработку ответственны Билл Гейтс и Марк МакДональд. В силу своей простоты она используется во многих флеш-накопителях и в настоящее время.

Существуют несколько ее разновидностей:

  • FAT12.
  • FAT16.
  • FAT32.

Между собой они отличаются разрядностью, то есть количеством бит, которое отводится для хранения одного кластера. Соответственно чем выше разрядность, тем больший объем может поддерживать система FAT. Самая первая ее версия поддерживала небольшой объем данных по современным меркам - всего лишь 2 Гб. Соответственно, для разделов или дисков с большим объемом она не подходит, а потому быстро устарела.

В отношении же FAT32 речь идет уже о 127 гигабайтах, в чем ее максимальный размер для диска. И в настоящее время в большинстве случаев как раз она и используется.

NTFS

Что такое файловая структура компьютера NTFS? Эта самая популярная на сегодня система, которую начала разрабатывать компания Microsoft, известная нам по серии операционных систем Windows. Главное ее качество заключается в том, что в случае произошедшего сбоя операционной системы, все данные будут сохранены, поскольку подобная разновидность способна самовосстанавливаться.

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

Впервые система NTFS была представлена в 1993 году одновременно с выходом Windows NT 3.1. Если сравнивать с другой разновидностью - FAT, то здесь можно найти немалое количество улучшений. К примеру, теперь практически нет ограничений в отношении размеров жесткого диска или его разделов. Также стали поддерживаться некоторые полезные функции: жесткие ссылки, шифрование, сжатие.

В заключение

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

Какие-то уже больше не используются. Связано это главным образом, с тем, что объем данных постоянно увеличивается. И если ранее вполне хватало 80-100 Гб, то теперь это мизерное количество. Сейчас счет ведется уже на терабайты.

Одной из компонент ОС является файловая система – основное хранилище системной и пользовательской информации. Все современные ОС работают с одной или несколькими файловыми системами, например, FAT (File Allocation Table), NTFS (NT File System), HPFS (High Performance File System), NFS (Network File System), AFS (Andrew File System), Internet File System.

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

В широком смысле понятие "файловая система" включает:

Совокупность всех файлов на диске;

Наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;

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

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

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

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

Отслеживает свободное пространство на носителе.

Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жестком диске или блоке флэш-памяти) он записан. Все, что знает программа – это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

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


3.1.5 Логическая структура диска

Для того чтобы компьютер мог хранить, читать и записывать информацию жесткий диск предварительно должен быть размечен. На нем с помощью соответствующих программ создаются разделы – это и называется "разбить жесткий диск". Без этой разметки на жесткий диск не удастся установить операционную систему (хотя Windows XP и 2000 могут устанавливаться на неразбитый диск, но они такую разметку проводят сами в процессе установки).

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

Кроме того, существуют и другие причины разбиения диска на разделы, например:

Возможность использования под управлением MS DOS дисков с емкостью большей, чем
32 Мб;

В случае повреждения диска, пропадает только та информация, которая находилась на этом диске;

Реорганизация и выгрузка диска маленького размера проще и быстрее, чем большого;

Каждому пользователю можно выделить свой логический диск.

Операция подготовки диска к работе называется форматированием , или инициализацией . Всё доступное дисковое пространства разбивается на стороны, дорожки и сектора, причем дорожки и стороны нумеруются с нуля, а сектора – с единицы. Совокупность дорожек, находящихся на одинаковом удалении от оси диска или пакета дисков, называется цилиндром. Таким образом физический адрес сектора определяется следующими координатами: номер дорожки (цилиндра – С), номер стороны диска (головки – H), номера сектора – R, т.е. CHR.

В самом первом секторе жесткого диска (C=0, H=0, R=1) содержится главная загрузочная запись Master Boot Record . Эта запись занимает не весь сектор, а только его начальную часть. Главная загрузочная запись является программой – внесистемным загрузчиком.

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

1) активный раздел или нет;

2) номер сектора, соответствующего началу раздела;

3) номер сектора, соответствующего концу раздела;

4) размер раздела в секторах;

5) код операционной системы, т.е. какой ОС принадлежит данный раздел.

Раздел называется активным, если он содержит программу загрузки операционной системы. Первым байтом в элементе раздела идет флаг активности раздела (0 – не активен, 128 (80H) – активен). Он служит для определения, является ли раздел системным (загрузочным), и для необходимости производить загрузку операционной системы с него при старте компьютера. Активным может быть только один раздел. Небольшие программы, называемые менеджерами загрузки (Boot Manager), могут располагаться в первых секторах диска. Они интерактивно запрашивают пользователя, с какого раздела производить загрузку и соответственно корректируют флаги активности разделов. Поскольку в Partition Table четыре строки, то на диске может быть до четырех различных ОС, следовательно, диск может содержать несколько первичных разделов, принадлежащих разным операционным системам.

Пример логической структуры жесткого диска, состоящего из трех разделов, два из которых принадлежат DOS, а один принадлежит UNIX, приведен на рисунке 3.2а.

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

На практике диск разбивается чаще всего на два раздела. Размеры разделов, объявление их активными или нет, устанавливаются пользователем в процессе подготовки жесткого диска к работе. Делается это с помощью специальных программ. В DOS эта программа называется FDISK, в версиях Windows-XX – Diskadministrator.

В DOS первичный раздел – Primary Partition , это тот раздел, который содержит загрузчик операционной системы и саму ОС. Таким образом, первичный раздел является активным разделом, используется как логический диск с именем C:.

Операционная система WINDOWS (а именно WINDOWS 2000) изменила терминологию: активный раздел называется системным, а загрузочным называется логический диск, который содержит системные файлы WINDOWS. Загрузочный логический диск может совпадать с системным разделом, но может находиться в другом разделе того же жесткого диска или на другом жестком диске.

Расширенный раздел Extended Partition может разбиваться на несколько логических дисков с именами от D: до Z:.

На рисунке 3.2б представлена логическая структура жесткого диска, в котором всего два раздела и четыре логических диска.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows