
- •Ос в общей структуре компьютера.
- •История операционных систем.
- •Классификация современных ос. Задачи современных ос.
- •6. Понятие процесса – ключевое понятие ос.
- •8. Трансляторы: компиляторы и интерпретаторы.
- •9. Иерархия зу (запоминающих устройств).
- •10. Управление оперативной памятью (оп). Менеджер памяти; swapping; виртуальная память.
- •11. Модели организации виртуальной памяти.
- •12. История ос unix.
- •13. Общая архитектура unix. Основные подсистемы ядра.
- •14. Пользовательская среда unix.
- •Командный интерпретатор shell.
- •16. Система каталогов в oс unix. Управление с помощью команд языка Bourn shell.
- •17. Управление файлами с помощью команд языка Bourn shell. Перенаправление ввода/вывода.
- •19. Обработка аргументов командной строки. Переменные окружения.
- •20. Пользователь и группа. Права доступа к файлу.
- •21. Системные вызовы и функции стандартных библиотек. Обработка ошибок.
- •22.Структура программы на языке с. Параметры главной функции (пример).
- •23. Файловая система ос unix: монтирование, индексные дескрипторы, жесткие и символические ссылки, файлы устройств.
- •24.Системные вызовы для работы с файлами
- •25. Понятие «процесс» в ос unix. Контекст процесса; свойства процесса; состояние процесса.
- •26.Создание процессов и упр-е ими.
- •27. Запуск внешней программы
- •29.Общая классификация средств взаимодействия процессов в ос unix.
- •30.Иерархия процессов в ос unix. Понятие сеанса. Фоновые процессы.
- •31.Каналы – средства взаимодействия процессов. Неименованные каналы. Организация конвейера (пример программы).
- •33.Сигналы как средство взаимодействия процессов в ос unix. Диспозиция сигналов.
- •34.Ограничения для процесса в ос unix (по ресурсам). Связь со свойствами процесса.
- •36.Отображение файлов в виртуальное адресное пространство. Разделяемая память.
- •37. Взаимодействие процессов через псевдотерминал.
- •38. Недостатки потокового взаимодействия процессов. Средства System vipc. Пространство имен. Общие принципы работы со средствами System vipc.
- •39. Организация очереди сообщений в ос unix. Структура сообщения. Отправка и принятие сообщений.
- •40.Семафоры, как средство взаимодействия процессов System vipc. Понятие атомарной операции. Массив семафоров.
- •41.Разделяемая память, как средство взаимодействия процессов System vipc.
- •42.Взаимодействие по сети. Понятие протокола. Семейства адресации и типы взаимодействия. Создание сокета в ос unix.
- •45. Потоковые сокеты. Клиент – серверная модель.
- •46. Проблема очередности действий и ее решение.
- •47. Процессы-демоны. Система журнализации.
- •48. Загрузка и жизненный цикл в ос unix.
- •49. Взаимоисключения. Понятие критической секции. Устаревшие подходы к организации взаимного исключения.
- •50.Поддержка взаимоисключения на уровне ос. Мьютексы и семафоры (Дейкстры). Команда ассемблера tsl.
- •51.Проблема тупиков. Граф ожидания
- •52. Нити исполнения (pthreads) в ос unix. Мьютексы pthreads.
- •53.Графический интерфейс в ос unix. Базовые принципы построения x_window.
- •54.Файловая подсистема. Общая структура. Методы выделения дискового пространства. Управление дисковым пространством.
- •55.Файловая подсистема. Структура файловой системы на диске. Реализация директорий. Поиск в директории (хеширование).
- •56.Подсистема ввода/вывода. Схема взаимодействия подсистем ос. Понятие драйвера. Типы драйверов.
23. Файловая система ос unix: монтирование, индексные дескрипторы, жесткие и символические ссылки, файлы устройств.
В UNIX файл. система представл собой единое дерево каталогов, в имя файла не входит имя устр-ва. Прежде чем состоится работа с файлами, соответс файловая система должна быть встроена в существующ иерархическое дерево. Только после этого ядро сможет выполнять файловые операции, эта операция встраивания – монтирование файловой системы. Монтирование файловой системы производится системным вызовом mount(). В случае если в системе есть неск дисков, то 1 из них корневой, а остальные – мантируются в тот или иной каталог – точка монтирования. При этом при указании полных путей к файлам на этом диске, необходимо к полному имени файла в рамках диска добавить полный путь точки монтирования: дискета на ней word папка в ней файл prog.c сама дискета смонтирована в каталог /mnt/floppy. Тогда полный путь к файлу: /mnt/floppy/work/prog.c
Индексные дискрипторы.В UNIX каталоги хранят имя файла и некот номер, позволяющий определить соот-щий флаг. Все остальные данные о файле связаны с этим номером. Хранимая на внешн носителе структура данных, сод всю информац о файле, кроме имени назыв индексным дескриптором.
Жесткая ссылка – когда 2 или более имен файлов расположены в разных каталогах, но в рамках 1 диска ссылаются на 1 и тот же индексный дескриптор. Нумерация индекс дескрипторов в рамках своего диска своя. Создание жестких ссылок на каталоги запрещается. Доп имя файла м. получить с пом систем вызова Link:
int link(const char*oldpath, const char*newpath); в индексном дескрипторе есть счетчик ссылок на данный дескриптор. Ф-я для удаления файла unlink() – удаляет указан жесткую ссылку, имя удал-ся из каталога, а счетчик ссылок обнуляется. В burnshell команда ln создает жесткую ссылку.
Символические ссылки. Разница между каталогом и файлом – это значение признака типа в индексном дескрипторе. ОС UNIX поддерж и другие спец типы файлов: файлы байт ориентирован и блок ориентир-х устр-в, имена сокетов, именов-е каналы FIFO и символ ссылки. Симв ссылки – файл спец типа содержащие имя другого файла. В отличии от жесткой символ ссылки легко отлечима от имени файла. int sinLink(const char*oldpath,const char*newpath).
Удаление происходит unlink(). Ком-да создания символ ссылки ln-s.
Файлы уср-в: Любое устр-во в Unix – это файл спец типа. Сделать образ диска можно с пом. команды:>cat /dev/cdrom>image.iso
Форматир-е диска:1)открыть спец файл соотв диску.2)спозиционировать на нужный сектор lseek.3)выдать обычный write. Кроме общих операций с файлами к устр-вам примен свои доп операции, все операции этой категории, выполн с пом сист вызова:
Int IOctl(int fd,int request,…)
24.Системные вызовы для работы с файлами
Открытие файла на чтение или запись с пом системного вызова:
Include <fcntl.h>. Если файл не существует, он может быть создан.
int open(const char*name, int mode, [int perm]). Первый аргумент является указателем на имя файла. Аргумент mode указывает на режим открытия файла и представляет собой побитное объединение флагов, с помощью операции ИЛИ (O_RDONLY, O_WRONLY, O_RDWR). Аргумент perm, определяющий права доступа к файлу, используется только при создании файла или если во втором пар-ре использовали O_CREATE. Именно из 3 пар-ра будет вычит значение umask. Если операция открытия файла закончилась удачно, то будет возвращен
файловый дескриптор — указатель на файл, использующийся в последующих операциях чтения, записи и т. д. В случае неудачи open возвратит -1, а глобальная переменная errno будет содержать код ошибки. Дескрипторы можно использ для потоков в/в. Мы можем закрыть люб дескриптор.
Закрытие файла Include <unistd.h>. int close(int fd); Функция разрывает связь между файловым дескриптором и открытым файлом. В случае успеха close возвращает нулевое значение, в противном случае возвращается -1 .
Чтение из файла происходит с пом:
int read(int fd, void*buf, int len)
Функции read позволяет считывать данные из файла, на который указывает файловый дескриптор. Считанные данные помещаются в бу-
фер приложения, указатель на который передается в аргументе buf. Общее число считанных байт в нормальной ситуации равно сумме размера буфера Len. Возврат больше 0 –кол-во прочитанных байтов, если read вернул 0 – то конец файла.
Запись в файл: Функция используется для записи данных в файл:
int write (int fd, void*buf,int len)
Данные для записи в файл находятся в буфере, указанном аргументом buf . После завершения операции значение файлового указателя будет увеличено на len – кол-во данных.
Позиционирование – последоват-ный порядок чтения из файла может быть нарушен, изменив в явном виде значение текущей позиции, связан с файловым дескриптором – с пом сист вызова:
int lseek(int fd, int offset, int whence). С помощью функции lseek можно установить файловый указатель на любое место файла и тем самым обеспечить прямой доступ к любой части файла. Интерпретация аргумента offset зависит от аргумента whence, который может принимать следующие значения:
В случае успеха функция возвращает положительное целое, равное текущему значению файлового указателя.Пример: прочитать последние 100 байт из файла f.dat
Int c, char buf[100]; fd=open(“f.dat”,O_RDONLY);
Lseek(fd, -100,SEEK_ENT);
c=read(fd,buf,100);close(fd);