Практическая работа — Файловая система ОС UNIX
1 Основная часть
- Цель работы: познакомиться с файловой системой ОС UNIX, изучить механизмы ее функционирования, основные элементы файловой системы: суперблок, массив индексных дескрипторов файлов, типы файлов, список свободных индексных дескрипторов файлов, список свободных блоков данных.
- Постановка задачи: Познакомиться с файловой системой ОС UNIX и программными средствами работы с ней.
Разработать программу, которая выводит на экран содержимое текущего каталога в алфавитном порядке. Каталоги не выводить.
Составить программу на языке Си, реализующую требуемые действия.
Отладить и оттестировать составленную программу, используя инструментарий ОС UNIX.
3.1 Текст программы с комментариями:
//сортировка файлов используя scandir(), alphasort().
#include <stdio.h> /* для printf() etc. */
#include <errno.h> /* для errno */
#include <sys/types.h> /* для системных типов */
#include <dirent.h> /* для функций каталогов */
//глоб перемнная имени файла
char *myname;
// функция где сортирует файлы
int process(const char *dir);
/* main — перечислить аргументы каталога */
//точка входа в программу
int main(int argc, char **argv)
{
int i;
int errs = 0;
myname = argv[0];
if (argc == 1)
errs = process(«.»); /* по умолчанию текущий каталог */
else
for (i = 1; i < argc; i++)
errs += process(argv[i]);
return (errs != 0);
}
/* nodots — игнорирует файлы с точкой, для scandir() */
int
nodots(const struct dirent *dp)
{
return (dp->d_name[0] != ‘.’);
}
/*
* process — сделать что-то с каталогом, в данном случае,
* вывести в стандартный вывод пары индекс/имя.
* Вернуть 0, если все нормально, в противном случае 1.
*/
int process(const char *dir)
{
DIR *dp;
struct dirent **entries;//структура куда помещаются имена файлов
int nents, i;
//сканиурем директурию на наличие файлов
nents = scandir(dir, &entries, nodots, alphasort);
if (nents < 0) {
fprintf(stderr, «%s: scandir failed: %sn», myname,
strerror(errno));
return 1;
}
//выводим список в файл или на консоль
for (i = 0; i < nents; i++) {
printf(«%1d %s\n», entries[i]->d_ino, entries[i]->d_name);
free(entries[i]);
}
free(entries);
return 0;
}

4.1 Ответы на контрольные вопросы:
- Как производится выделение свободных блоков под файл?
Ответ: Если массив s_inode[] в суперблоке не пуст, ядро выделяет очередной описатель файла и назначает его некоторому файлу.
Если массив пуст, ядро просматривает таблицу описателей файлов, выбирая из неё номера свободных описателей файлов, и заполняет ими массив s_inode[], причём запоминается та точка таблицы описателей файлов, на которой закончен просмотр с тем, чтобы при следующем заполнении массива s_inode[] начать с этой точки.
Алгоритм alloc:
1.если суперблок заблокирован, приостановиться до тех пор пока не будет снята блокировка
2.удалить блок из списка свободных блоков суперблока
3.если из списка удалён последний блок:
-заблокировать суперблок
-прочитать блок, только что взятый из списка свободных блоков
-скопировать номера блоков, хранимых в этом блоке, в массив s_free суперблока
-снять блокировку суперблока
4.переписать в буфер блок, удалённый из массива s_free
5.уменьшить общее число свободных блоков
6.пометить суперблок, как изменённый
7.возвратить буфер, содержащий выделенный блок.
- Как производится освобождение блоков данных, занятых под файл?
Ответ:
1.If(список в суперблоке не полон) номер освобождаемого блока включается в список s_free
2.if(список полон) освобождённый блок включается в списковую структуру и ядро записывает
в этот блок содержимое массива s_free
3.Массив s_free очищается и его елинственным элементом становится номер этого блока.
- Каким образом осуществляется монтирование дисковых устройств?
Ответ: Mount <устройство монтирования> <точка монтирования>
Для выполнения монтирования требуются права суперпользователя.
1.Если пользователь не root, возвратить ошибку.
2.Получить описатель файла для блочного специального файла.
3.Проверить допустимость значений параметров.
4.Получить описатель файла для каталога, где производится монтирование.
5.Если описатель файла не принадлежит каталогу или счётчик ссылок больше единицы:
-освободить описатель файлов;
-возвратить ошибку.
6.Найти свободное место в таблице монтирования.
7.Запустить процедуру открытия блочного устройства для данного драйвера. 8.Получить свободный буфер из буферного кэша.
9.Считать суперблок в свободный буфер.
10.Проинициализировать поля суперблока.
11.Получить корневой описатель файла монтируемой системы, сохранив его в таблице монтирования.
12.Сделать пометку, что описатель файла каталога, являющегося вторым аргументом является точкой монтирования.
13.Снять блокировку с описателя файла каталога, который является точкой монтирования.
- Что хранится в структуре stat?
Ответ: Структура stat содержит информацию о файле. Содержится в <sys/stat.h>. Возвращается функцией stat(char *name, stat *info).
Описание:
struct stat
{
dev_t st_dev; /* устройство, содержащее файл */
| ino_t st_ino; | /* индекс */ |
| ushort st_mode; /* биты режима */ | |
| short st_nlink; | /* число связей файла */ |
| ushort st_uid; | /* пользовательский ID */ |
| ushort st_gid; | /* ID группы */ |
| dev_t st_rdev; | /* для спец. файлов */ |
| off_t st_size; | /* размер файла */ |
time_t st_atime; /* время последнего чтения */
time_t st_mtime; /* время последнего редактирования */ time_t st_ctime; /* время последнего изменения статуса */
}
Поле st_mode содержит флаги, описывающие файл. Флаги несут следующую информацию:
S_IFMT 0170000 — тип файла S_IFDIR 0040000 — каталог
S_IFCHR 0020000 — байт-ориентированный специальный файл
S_IFBLK 0060000 — блок-ориентированный специальный файл
S_IFREG 0100000 — обычный файл S_IFFIFO 0010000 — дисциплина FIFO
S_ISUID 04000 — идентификатор владельца
S_ISGID 02000 — идентификатор группы S_ISVTX 01000 — сохранить свопируемый текст S_ISREAD 00400 — владельцу разрешено чтение S_IWRITE 00200 — владельцу разрешена запись
S_IEXEC 00100 — владельцу разрешено выполнение.
- Каким образом осуществляется защита файлов в ОС UNIX?
Ответ: Каждый файл или каталог имеет права доступа. Права доступа определяют, КТО и ЧТО может делать с содержимым файла. Существуют три группы прав доступа: для владельца файла, для членов группы, для всех остальных ( Таблица 1.)
Таблица 1
| Право | Обозначение | Файл | Каталог |
| Чтение | r | Файл можно посмотреть и скопировать | Можно посмотреть список входящих файлов |
| Запись | w | Файл можно изменить и переименовать | Можно создавать и удалять файлы |
| Выполнение | x | Файл можно “выполнить”(скрипты и программы) | Можно входить, делать текущим |
Примеры
-rw-r- -r- — , … где (-) — тип файла (крайнее левое поле), (r w -) — права доступа владельца файла,
(r — -) — права доступа группы владельца файла, (r — -) — права доступа всех остальных.
В поле тип файла символ (-) обозначает файл, а символ (d) — каталог. В остальных полях символ (-) обозначает отсутствие прав доступа. В приведенном примере владелец имеет право читать и изменять файл, члены группы могут читать файл, все остальные могут только читать файл.
- Каковы права доступа к файлу, при которых владелец может выполнять все операции (r, w, x), а прочие пользователи — только читать?
Ответ: Права доступа могут быть заданы в команде не только в символьном виде, но и в цифровой форме (восьмеричное значение). Связь между цифровой и символьной формами приведена в таблице 2.
Таблица 2
| Цифровая форма | Символьная форма | |
| двоичная | восьмеричная | |
| 111 | 7 | rwx |
| 110 | 6 | rw |
| 101 | 5 | r-х |
| 100 | 4 | r— |
| 011 | 3 | -wx |
| 010 | 2 | -w- |
| 001 | 1 | —x |
| 000 | 0 | — |
- Какие типы файлов можно выделить в UNIX?
Ответ: Файлы символьного режима: эти файлы являются либо специальными системными файлами (типа /dev/null, который мы уже рассматривали), либо периферийными устройствами (последовательные или параллельные порты), характерной особенностью которых является то, что их содержимое (если оно есть) не буферизуется (т.е. оно не хранится в памяти). Такие файлы идентифицируются буквой c.
Файлы блочного режима: эти файлы являются периферийными устройствами, и, в отличие от символьных файлов, их содержимое буферизуется. Например, файлами этой категории являются жесткие диски, разделы на жестком диске, дисководы, CD-ROM и так далее. Примеры файлов блочного доступа: /dev/hda, /dev/sda5. В информации, выводимой командой ls -l, они идентифицируются буквой b.
Символические ссылки: эти файлы являются очень распространенными и часто используется в процедуре запуска системы Mandrakelinux (см. главу Глава 11, Загрузочные файлы: init sysv). Как следует из их имени, их цель — связывать файлы символическим способом, что означает, что они являются файлами, содержащими путь к другому файлу. Они могут и не указывать на существующий файл. Очень часто их называют «мягкими ссылками», и идентифицируются они буквой «l».
Именованные каналы: если вы были удивлены, то так оно и есть, да, они очень похожи на каналы, используемые в командах shell’а, но с той разницей, что у этих каналов и в самом деле есть имена. Однако они очень редки и маловероятно, что вы встретите их во время своего путешествия по дереву файлов. На всякий случай, чтобы вы знали, они идентифицируются буквой p. Чтобы узнать больше об этом, загляните в «Анонимные каналы и именованные каналы».
Сокеты: это тип файла для всех сетевых подключений, но только некоторые из них имеют названия. А самое главное, что существует несколько типов сокетов, а связь может быть установлена только через один из этих типов, но это уже выходит за рамки данной книги. Такие файлы идентифицируются буквой s.
2 Список литературы
- Современные операционные системы [Текст] / Э. Таненбаум ; 3-е изд. — СПб.: Питер, 2012. — 1120 с. : ил. — (Классика computer science).
- Современные операционные системы [Текст] : учеб. пособие / С.В. Назаров, А.И. Широков. — 2-е изд., испр. и доп. — М. : БИНОМ. Лаборатория знаний, 2013. — 367 : ил., табл. — (Основы информационных технологий). — ISBN 978-5-9963-1499-7.
- Руководство FreeBSD [Электронный ресурс] // URL:http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/ (дата обращения: 09.04.2017).
- FreeBSD. От новичка к профессионалу [Текст] / Д. Н. Колисниченко. — СПб.: БХВ-Петербург, 2011. – 544 с.: ил. – (В подлиннике).
- Linux. Администрирование и системное программирование [Текст] / М. Собель ; 2-е изд. — СПб. : Питер, 2011. — 880 с. : ил.
или напишите нам прямо сейчас:
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.