Разделы презентаций


ОП.14 Основы функционирования UNIX - систем

Содержание

Файловая система Функции API для работы с файламиAPI, программный интерфейс приложения, интерфейс прикладного программирования (от английского application programming interface, API) — описание способов, которыми одна компьютерная программа может взаимодействовать с другой

Слайды и текст этой презентации

Слайд 1ОП.14 Основы функционирования UNIX - систем


занятие 04, 05

ОП.14  Основы функционирования UNIX - системзанятие 04, 05

Слайд 2Файловая система Функции API для работы с файлами
API, программный интерфейс приложения,

интерфейс прикладного программирования (от английского application programming interface, API) —

описание способов, которыми одна компьютерная программа может взаимодействовать с другой программой.
Обычно входит в описание стандарта вызовов функций операционной системы.
Часто реализуется отдельной программной библиотекой или сервисом операционной системы.
Используется программистами при написании всевозможных приложений.
Файловая система Функции API для работы с файламиAPI, программный интерфейс приложения, интерфейс прикладного программирования (от английского application

Слайд 3Функции API для работы с файлами
В операционные системы UNIX включен

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

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

Функции API для работы с файламиВ операционные системы UNIX включен целый ряд функций прикладного интерфейса программирования API

Слайд 4Функции API для работы с файлами
Стандарт POSIX пред­лагает стандартный интерфейс

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

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

Слайд 5Функции API для работы с файлами
Системные вызовы для работы

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

Функции API для работы с файламиСистемные  вызовы для работы с объектами  файловой  системы

Слайд 6Функции API для работы с файлами
Системные вызовы. Таблица (продолжение).

Функции API для работы с файламиСистемные  вызовы. Таблица (продолжение).

Слайд 7Функции API для работы с файлами
Системные вызовы. Таблица (продолжение).

Функции API для работы с файламиСистемные  вызовы. Таблица (продолжение).

Слайд 8Функции API для работы с файлами
Системные вызовы. Таблица (окончание).

Функции API для работы с файламиСистемные  вызовы. Таблица (окончание).

Слайд 9Функции API для работы с файлами
В большинстве команд операционной системы

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


Например, на основе функций API link () и unlink () созданы одноименные команды UNIX. To же самое касается, например, команд chmod и chown, в основе которых лежат одноименные функции API.
Вкратце рассмотрим синтаксис наиболее часто используемых функций API: open(), read(), write() и close().
Начнем с сис­темного вызова open().
Функции API для работы с файламиВ большинстве команд операционной системы UNIX использо­ваны эти функции, причем иногда мнемонические

Слайд 10Функции API для работы с файлами
Функция open() устанавливает соединение между

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

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

Слайд 11Функции API для работы с файлами
Очень часто при определении операции

записи или чтения говорят "запись в дескриптор файла" или "чтение

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

Слайд 12Функции API для работы с файлами
Функция имеет прототип:
#include


#include int

open(const char* path,

int access_mode, mode_t permission);
Функции API для работы с файламиФункция имеет прототип:  #include     #include  int

Слайд 13Функции API для работы с файлами
Смысл параметров функции следующий:

path — имя файла, которое

может быть:
- абсолютным (сим­вольная строка, начинающаяся символом / ),
- относительным (символьная строка, не начинающаяся символом / ),
- сим­волической ссылкой;
Функции API для работы с файламиСмысл параметров функции следующий: •  path  —  имя

Слайд 14Функции API для работы с файлами
• access_mode —

целочисленное значение, показывающее, ка­кие типы доступа

к файлу разрешены вызывающему процес­су.
Все типы доступа определены как макросы в файле fcntl.h и могут иметь одно из следующих значений:
- O_RDONLY — файл доступен только для чтения;
- O_WRONLY — файл доступен только для записи;
- O_RDWR — файл доступен для чтения и для записи.
Функции API для работы с файлами•  access_mode  —  целочисленное  значение,  показывающее,

Слайд 15Функции API для работы с файлами
Кроме того, можно

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

их с указанными флагами доступа, что расширяет или изменяет механизм доступа:
- O_APPEND — позволяет добавить данные в конец файла;
- O_CREAT — позволяет создать файл, если он не существует;
- O_TRUNC — отбрасывает содержимое файла, устанавливая его размер равным 0;
Функции API для работы с файламиКроме того,  можно  задавать один или несколько  указанных далее

Слайд 16Функции API для работы с файлами
• permission —

необходим только в том случае,

если в пара­метре access_mode присутствует флаг O_CREAT.
Этот параметр задает права доступа к файлу для владельца, группы-владельца и остальных пользователей.
Пример вызова функции open() приведен далее:

int fd = open("/home/userl/text", 0_RDWR | 0_CREAT | 0_APPEND);
Функции API для работы с файлами•  permission  —  необходим  только  в

Слайд 17Функции API для работы с файлами
Здесь функция open() открывает файл

/home/userl/text для чте­ния/записи, при этом, если файл не существует, он

создается, а для существующего файла данные будут добавлены в его конец.
Функция возвращает дескриптор fd, который помещается в таб­лицу дескрипторов файлов процесса и будет использоваться при последующих операциях.
Функции API для работы с файламиЗдесь функция open() открывает файл /home/userl/text для чте­ния/записи, при этом, если файл

Слайд 18Функции API для работы с файлами
Функция read() читает

блок данных указанного размера из

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

#include
#include

ssize_t read(int fd, void* buf, size_t size);
Функции API для работы с файламиФункция  read() читает  блок  данных  указанного  размера

Слайд 19Функции API для работы с файлами
Параметры функции означают следующее:

fd — дескриптор открытого файла, полученный ранее с по­мощью

системного вызова open() или иным способом;
• buf — буфер данных, куда помещаются данные, считанные из файла;
• size — количество байтов, которое необходимо прочитать из файла (тип этого параметра эквивалентен unsigned int).
Функция read() возвращает количество байтов, прочитанных в буфер памяти buf.
Функции API для работы с файламиПараметры функции означают следующее: •  fd — дескриптор открытого файла, полученный

Слайд 20Функции API для работы с файлами
Вот пример использования функции:
char

buf[128];
int bytesRead;
bytesRead = read(fd, buf, sizeof(buf));
В этом

примере функция read() пытается прочитать 128 байтов в буфер buf с открытого файла, указанного дескриптором fd.
В переменную bytesRead будет помещено количество считанных байтов.
Функции API для работы с файламиВот пример использования функции: char buf[128]; int bytesRead; bytesRead = read(fd, buf,

Слайд 21Функции API для работы с файлами
Функция write() записывает блок данных

фиксированного раз­мера в файл, дескриптор которого задается в качестве первого

параметра функции.
Прототип функции выглядит так:
#include
#include

ssize_t write(int fd, const void* buf, size_t size);
Функции API для работы с файламиФункция write() записывает блок данных фиксированного раз­мера в файл, дескриптор которого задается

Слайд 22Функции API для работы с файлами
Параметры функции имеют следующий смысл:


• fd — дескриптор открытого файла, полученный при вызове

функции open() или иным способом;
• buf — буфер данных, откуда выбираются данные;
• size — количество записываемых байтов.
Функции API для работы с файламиПараметры функции имеют следующий смысл: •  fd — дескриптор открытого файла,

Слайд 23Функции API для работы с файлами
Следующий пример

показывает использование функции

write():

char *str = "String to write";
write(fd, str, strlen(str));
Функции API для работы с файламиСледующий   пример   показывает   использование

Слайд 24Функции API для работы с файлами
Здесь в открытый файл с

дескриптором fd записывается строка str, размер которой определяется функцией strien(str).
Функция

close() закрывает открытый дескриптор файла, при­нимая значение дескриптора в качестве единственного пара­метра.
Функции API для работы с файламиЗдесь в открытый файл с дескриптором fd записывается строка str, размер которой

Слайд 25Операции с файлами. Индексные дескрипторы
Любой файл операционной системы UNIX

описывается информационным блоком, который называется i-node (индексный де­скриптор).
Это исключительно

важная структура, поскольку по­вреждение или некорректная информация, помещенная в индексный дескриптор, фактически означает уничтожение фай­ла.
Все операции с объектами файловой системы осуществляются только через индексные дескрипторы, поэтому рассмотрим эту информационную структуру подробно.
Операции с файлами. Индексные дескрипторы Любой файл операционной системы UNIX описывается информационным блоком, который называется i-node (индексный

Слайд 26Операции с файлами. Индексные дескрипторы
Если файл открыт, то операционная

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

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

Операции с файлами. Индексные дескрипторы Если файл открыт, то операционная система создает копию ин­дексного дескриптора в памяти,

Слайд 27Операции с файлами. Индексные дескрипторы
• время последнего изменения,

последнего доступа и послед­ней модификации;
• счетчик жестких

ссылок;
• размер файла в байтах;
• адреса физических блоков на жестком диске.
Структура информационных полей в индексном дескрипторе одинакова для всех операционных систем UNIX и состоит из 16-ти 32-разрядных значений (смотри следующий рисунок).
Операции с файлами. Индексные дескрипторы •  время последнего изменения,  последнего доступа и послед­ней модификации; •

Слайд 29Операции с файлами. Индексные дескрипторы
Индексный дескриптор содержит 13

адресов физических блоков, каждый из которых

занимает 3 байта (в последних версиях FreeBSD и Linux операционной системы UNIX для адресации используется 4 байта).
Первые 10 адресов блоков непосредственно ссылаются на блоки данных, а оставшиеся 3 содержат ад­реса индексных блоков, которые, в свою очередь, ссылаются на следующие блоки данных.
Предполагается, что все данные файла, размещенные по физи­ческим адресам, указанным в индексном дескрипторе, находятся на одном и том же физическом диске.
Операции с файлами. Индексные дескрипторы Индексный дескриптор содержит  13  адресов физических блоков, каждый  из

Слайд 30Операции с файлами. Индексные дескрипторы
Если файл

открывается для выполнения операции,

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

Слайд 31Операции с файлами. Индексные дескрипторы
Такая копия "в

памяти" помимо стандартной информации,

рассмотренной ранее, содержит несколько дополнительных полей:
• счетчик ссылок (reference count), показывающий количество одновременно открытых копий данного файла;
• статусную информацию, указывающую на такие состояния:
• индексный дескриптор блокирован;
• процесс ожидает разблокирования;
Операции с файлами. Индексные дескрипторы Такая  копия

Слайд 32Операции с файлами. Индексные дескрипторы

индексный дескриптор, находящийся в памяти, отличается от версии на диске

(dirty);
• выполнены какие-то модификации файла, не сохраненные к настоящему моменту на диске;
• номер дискового устройства, где расположен файл.
Обратите внимание на то, что в индексном дескрипторе не ука­зывается имя файла — операционная система помещает имя файла вместе с номером индексного дескриптора (i-number) в каталог, где располагается файл.
Операции с файлами. Индексные дескрипторы    •  индексный дескриптор, находящийся в памяти, отличается от

Слайд 33Операции с файлами. Индексные дескрипторы
Для более ранних

версий операционных систем UNIX каждая

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

Слайд 34Операции с файлами. Индексные дескрипторы
Структура записи в каталоге

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

Слайд 35Операции с файлами. Индексные дескрипторы
В операционной системе UNIX

для каждой файловой системы создается таблица индексных дескрипторов,

в которой хранится информация обо всех файлах.
Каждая запись в такой таблице содержит индексный дескриптор и его номер.
Например, если ядру понадобится получить доступ к информации о файле, ин­дексный дескриптор которого имеет номер 69, то оно будет про­сматривать все записи таблицы индексных дескрипторов в по­исках записи, содержащей индексный дескриптор с номером 69.
Операции с файлами. Индексные дескрипторы В операционной системе  UNIX для каждой файловой системы создается  таблица

Слайд 36Операции с файлами. Индексные дескрипторы
Так как номер индексного дескриптора

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

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

Операции с файлами. Индексные дескрипторы Так как номер индексного дескриптора уникален только в пределах одной файловой системы,

Слайд 38Операции с файлами. Индексные дескрипторы
Для лучшего понимания, как выполняются

файловые операции в UNIX, проанализируем схему, показанную на рисунке (с

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

1. Выполняющийся процесс делает попытку создания файла test в каталоге /home/user при помощи системного вызова
fd = open("/home/user/test", O_RDWR | O_CREAT);
Операции с файлами. Индексные дескрипторы Для лучшего понимания, как выполняются файловые операции в UNIX, проанализируем схему, показанную

Слайд 39Операции с файлами. Индексные дескрипторы
Ядро UNIX создает новую запись

в таблице индексных дескрипторов и присваивает вновь созданному дескриптору уникальный

номер (в данном примере номер индексного дескриптора равен 279).
Эти действия выполняются на этапе (1).

2. Ядро добавляет номер дескриптора и имя файла в каталог /home/user (2).
Операции с файлами. Индексные дескрипторы Ядро UNIX создает новую запись в таблице индексных дескрипторов и присваивает вновь

Слайд 40Операции с файлами. Индексные дескрипторы
3. Ядро ищет в таблице

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

то она будет использована для обращения к файлу (3).
Кроме этого, в системную таблицу файлов заносится ссылка на запись в таблице индексных дескрипторов, содержащая данные по от­крытому файлу.
Операции с файлами. Индексные дескрипторы 3. Ядро ищет в таблице дескрипторов файлов процесса первую незадействованную позицию. Если

Слайд 41Операции с файлами. Индексные дескрипторы
4. Ядро возвращает процессу номер

(индекс) позиции в таблице дескрипторов файлов процесса

в качестве дескриптора от­крытого файла (4).
Значение этого дескриптора присваивает­ся переменной fd.
Операции с файлами. Индексные дескрипторы 4. Ядро возвращает процессу номер (индекс) позиции в таблице дескрипторов  файлов

Слайд 42Операции с файлами. Индексные дескрипторы
Кроме этих действий, ядро выполняет

и целый ряд других опе­раций. Так, значение счетчика ссылок в

индексном дескрипторе файла, точнее, в его копии, загруженной в память, увеличивает­ся на 1.
Аналогично увеличивается и значение счетчика ссылок в системной таблице файлов.
Кроме этого, в таблицу файлов заносится информация о режиме, в котором открыт файл (в на­шем случае файл открыт в режиме чтения/записи и если отсут­ствует на диске, то создается — это определяется вторым пара­метром функции open(), который равен O_RDWR | O_CREAT).
Операции с файлами. Индексные дескрипторы Кроме этих действий, ядро выполняет и целый ряд других опе­раций. Так, значение

Слайд 43Операции с файлами. Индексные дескрипторы
Наконец, в записи таблицы

файлов формируется указатель текущей позиции в открытом файле.
Этот

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

Слайд 44Операции с файлами. Индексные дескрипторы
Каждый файл в

операционной системе UNIX характеризуется набором свойств

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

Слайд 46Операции с файлами. Индексные дескрипторы
Перечисленные в таблице

атрибуты используются ядром для управления

файлами.
Например, при попытке доступа какого-либо пользователя к файлу ядро сравнивает его идентификаторы с идентификаторами uid и gid файла, чтобы установить какая категория разрешений должна быть задействована.
Все файлы имеют атрибуты, перечисленные в таблице, хотя, например, для файлов устройств атрибут "file size" не имеет смысла и всегда установлен в 0.
Операции с файлами. Индексные дескрипторы Перечисленные  в  таблице  атрибуты  используются  ядром

Слайд 47Операции с файлами. Индексные дескрипторы
Дополнительно для файлов уст­ройств

устанавливаются такие атрибуты, как старший и

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

Слайд 48Операции с файлами. Индексные дескрипторы
Для получения информации

о файле программным способом можно

воспользоваться системным вызовом stat(). В листинге приведен исходный текст программы на С («си»), в которой на эк­ран дисплея выводится размер файла, номер индексного деск­риптора и значение счетчика жестких ссылок.

Листинг. Получение атрибутов файла при помощи функции stat() приведён на следующей странице.
Операции с файлами. Индексные дескрипторы Для  получения  информации  о  файле  программным

Слайд 50Операции с файлами. Индексные дескрипторы
В качестве единственного параметра программа

принимает путе­вое имя файла (argv[1]).
После вызова функции stat() на

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

Слайд 51Операции с файлами. Индексные дескрипторы
Например, для файла test, находящегося

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

в исполняемый файл statdemo):
# ./stat_demo test
----------test attributes----------
Size: 30
i-number: 123880
Re f.count: 1
Операции с файлами. Индексные дескрипторы Например, для файла test, находящегося в каталоге приложения, были получены такие результаты

Слайд 52Операции с файлами. Индексные дескрипторы
Обратите внимание на количество жестких

ссылок — оно равно 1, т. е. для обычного файла

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

# ln test test_hard_link
Операции с файлами. Индексные дескрипторы Обратите внимание на количество жестких ссылок — оно равно 1, т. е.

Слайд 53Операции с файлами. Индексные дескрипторы
то после запуска программы stat_demo

получим следующий ре­зультат:
# ./stat_demo test
----------test attributes----------
Size: 30
i-number:

123880
Re f.count: 2
Операции с файлами. Индексные дескрипторы то после запуска программы stat_demo получим следующий ре­зультат:# ./stat_demo test ----------test attributes----------

Слайд 54Операции с файлами. Индексные дескрипторы
Как видно из результата, количество

жестких ссылок равно 2 — фактически мы имеем

два имени для одного файла: test и test_hard_link.
Если бы мы создали символическую ссылку, счет­чик ссылок остался бы равным 1, поскольку символическая ссылка представляет собой объект файловой системы со своим индексным дескриптором.
Операции с файлами. Индексные дескрипторы Как видно из результата, количество жестких ссылок равно 2 — фактически

Слайд 55Операции с файлами. Индексные дескрипторы
Содержимое каталога можно просмотреть программным

спосо­бом, используя две библиотечные функции С («Си») — opendir()

и readdir().
Кроме этого, следует объявить в программе структуру типа dirent (для систем, совместимых с System V) или direct (для систем, совместимых с FreeBSD).
В этом конкретном слу­чае программа работает в операционной системе Solaris, поэтому используется dirent.
Операции с файлами. Индексные дескрипторы Содержимое каталога можно просмотреть программным спосо­бом, используя две библиотечные функции С («Си»)

Слайд 56Операции с файлами. Индексные дескрипторы
Структура (dirent или direct)

содержит поля "Номер индексного дескриптора" и "Имя файла", которые

присутствуют в каж­дой записи каталога (смотри рисунок).
Операции с файлами. Индексные дескрипторы Структура (dirent  или direct)  содержит поля

Слайд 57Операции с файлами. Индексные дескрипторы
Следующая программа (назовем

ее opendir_demo), исходный текст которой представлен в

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

Слайд 59Операции с файлами. Индексные дескрипторы
Здесь для работы с открытым

каталогом служит указатель DIR*, возвращаемый функцией opendir(), единственным параметром которой

является путь к текущему каталогу.
Далее в цикле while читается содержимое записей каталога, которое помещается в структуру dp функцией readdir().
Цикл заканчивается, когда readdir() возвращает нулевое значение.
Поле d_name структуры dp содержит имя файла, а поле d_ino — номер индексного дескриптора.
Операции с файлами. Индексные дескрипторы Здесь для работы с открытым каталогом служит указатель DIR*, возвращаемый функцией opendir(),

Слайд 60Операции с файлами. Индексные дескрипторы
Вот каким может

быть результат выполнения программы opendir_demo:


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

Слайд 61Список литературы:
Юрий Магда. UNIX для студентов, Санкт-Петербург «БХВ-Петербург», 2007.
Unix и

Linux: руководство системного администратора, 4-е издание, 2012, Э. Немет, Г.

Снайдер, Т. Хейн, Б. Уэйли
Организация UNIX систем и ОС Solaris 9, Торчинский Ф.И., Ильин Е.С., 2-е издание, исправленное, 2016.

Список литературы:Юрий Магда. UNIX для студентов, Санкт-Петербург «БХВ-Петербург», 2007.Unix и Linux: руководство системного администратора, 4-е издание, 2012,

Слайд 62Спасибо за внимание!
Преподаватель: Солодухин Андрей Геннадьевич
Электронная почта: asoloduhin@kait20.ru


Спасибо за внимание!Преподаватель: Солодухин Андрей ГеннадьевичЭлектронная почта: asoloduhin@kait20.ru

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика