- •Билет 1
- •1. Основы ос Unix, возможности, стандартизация (1) – 4
- •Отличительные черты ос unix
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Последовательность действий по преобразованию адреса в защищенном режиме
- •Билет 2
- •1. Понятие системного вызова в ос unix. Обработка ошибок (2) – 9
- •Обработка ошибок
- •Void perror (s)
- •Void perror (const char *s);
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Особенности современных операционных систем (2, 28) – 122
- •Концепция ос на основе микроядра
- •Многопоточность
- •Cимметричная многопроцессорность.
- •Распределенные ос
- •Int chmod(const char *path, mode_t mode);
- •Int fcmod(int fd, mode_t mode);
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 3 (3, 28) – 144
- •3. Концепция слоистой операционной системы и системы на основе микроядра.
- •Билет 4
- •1. Владельцы файлов. Права доступа к файлам. Атрибуты файлов (4, 18) – 23
- •Атрибуты файла
- •Int chmod(const char *path, mode_t mode);
- •Int fcmod(int fd, mode_t mode);
- •Int chown (const char *path, uid_t owner, gid_t group);
- •Int lchown (const char *path, uid_t owner, gid_t group);
- •Int fchown (int fd, uid_t owner, gid_t group): ,
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 1 (4, 26) – 142
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •Билет 5
- •1. Неименованные каналы в ос unix (5) – 77
- •Int pipe(int fd[2]);
- •2. Взаимодействие процессов. Задача взаимного исключения. Алгоритм Деккера (5) – 147
- •3. Понятие процесса, модели процессов (5) – 132
- •Билет 6
- •Метаданные файлов в ос unix (7) – 36
- •Int stat(const char *path, struct stat *buf);
- •Int fstаt(int fd, struct stat *buf);
- •Int lstat(const char *path, struct stat *buf);
- •2.Взаимодействие последовательных процессов. Задача взаимного исключения. Вариант2.
- •3. Описание процесса, таблица процесса (6) – 136
- •Билет 7
- •1. Процессы в ос unix. Типы процессов. (7, 23) – 56
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •3. Принципы построения ос (7, 19, 26) – 128
- •Билет 8
- •1. Атрибуты процессов в unix (8) – 66
- •2.Применение общего семафора для решения задачи "производитель-потребитель" с неограниченным буфером.
- •3. Концепция потока, как составной части процесса (8) – 139
- •Билет 9
- •1. Разработка программ в ос unix. Обработка ошибок, переменные окружения (9)
- •Int putenv(const char *string);
- •Int setenv(const char * name, const char * value, int ov );
- •Int unsetenv(const char * name);
- •Обработка ошибок
- •Void perror (const char *s);
- •2. Применение двоичных семафоров для решения задачи «производитель» - «потребитель» (буфер неограниченный) (9, 21)
- •3. Концепция виртуализации (9, 17) –
- •Билет 10
- •1. Файлы, отображаемые в память (10) – 33
- •Void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);
- •2. Применение семафоров для решения задачи «производитель» - «потребитель» с неограниченным буфером. Решение «спящий парикмахер». (10, 22) – 155
- •3. Подсистема управления памятью, требования, предъявляемые к ней (10)
- •1. Процессы в ос unix. Порождение процесса (11, 25) – 57
- •2. Применение общих семафоров для решения задачи «производитель-потребитель» с ограниченным буфером (11, 23) – 157
- •3. Виртуальная память. Задачи управления виртуальной памятью (11, 25)
- •Билет 12
- •1. Сигналы в ос unix. Их назначение и обработка (12) – 70
- •Void (*sa_handler)(int);
- •Void (*sa_sigaction)(int, siginfo_t *, void *);
- •Int sa_flags;
- •Int pause (void);
- •2. Взаимодействие процессов через переменные состояния. Пример приоритетного правила (12) – 157
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •Билет 13
- •1. Функции для работы с сигналами (13) – 70
- •Void (*sa_handler)(int);
- •Void (*sa_sigaction)(int, siginfo_t *, void *);
- •Int sa_flags;
- •Int pause (void);
- •Наборы сигналов
- •Блокировка сигналов
- •Int sigprocmask(int how, const sigset_t *set, sigset_t, *oldset);
- •Int sigaсtion(int signo, const struct sigactoin *act, struct sigaction *oldact);
- •Void my_handler(int signo)
- •Void my_handler(int signo, siginfo_t *si, void ucontext )
- •2. Проблема тупиков. Алгоритм банкира (13)
- •3. Задача замещения при управлении виртуальной памятью, часовой алгоритм.
- •Билет 14
- •Int chmod(const char *path, mode_t mode);
- •Int fcmod(int fd, mode_t mode);
- •2. Задача взаимного исключения. Алгоритм Петерсона (14, 25) – 148
- •3.Распределение памяти. Система двойников.
- •Система двойников при распределении памяти.
- •Билет 15
- •1. Файловая система в ос unix ext2 (15) – 51
- •Организация файловой системы ext2
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •Билет 16
- •1.Каналы в ос unix (16) – 80
- •Int pipe(int fd[2]);
- •Int mkfifo(const char *pathname,mode_t mode);
- •Размер канала и взоимодействие процессов при передаче данных
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Организация защиты в процессорах ia32
- •Билет 17
- •1. Процессы в ос unix, системные вызовы wait, exit (17) – 60, 63
- •Void _exit(int exit_code);
- •Void exit(int status);
- •Int atexit(void(*func)(void));
- •2. Монитороподобные средства синхронизации для решения задачи взаимного исключения (17) – 160
- •Механизм типа «условная критическая область»
- •3. Концепция виртуализации
- •Билет 18
- •1. Владельцы файлов. Права доступа к файлам. Атрибуты файлов
- •Атрибуты файла
- •Int chmod(const char *path, mode_t mode);
- •Int fcmod(int fd, mode_t mode);
- •Int chown (const char *path, uid_t owner, gid_t group);
- •Int lchown (const char *path, uid_t owner, gid_t group);
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Схемы распределения памяти
- •Билет 19
- •1. Взаимодействие процессов в ос unix, очереди сообщений (19) – 83
- •Int msgget (key_t key, int permflags);
- •Int msgsnd(int mqid, const void *message, size_t size, int flags);
- •Int msgrcv(int mqid, void *message, size_t size, long msg_type, int flags);
- •Int msgctl(int mqid, int command, struct msqid_ds *msq_stat);
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •3. Принципы построения ос (7, 19, 26) – 128
- •Билет 20
- •1 Взаимодействие процессов в ос unix с применением семафоров (20) – 93
- •V(sem) или signal (sem)
- •Int semget(key_t key, int nsems, int permflags);
- •Int semctl (int semid, int sem_num, int command, union semun ctl_arg);
- •Int semop(int semid, struct sembuf *op_array, size_t num_ops);
- •2. Применение общего семафора для решения задачи "производитель-потребитель" с неограниченным буфером.
- •3. Механизмы поддержки многозадачности в процессорах ia32 (20)
- •Билет 21
- •1. Работа с файлами в ос unix. Системные вызовы (21) – 25
- •Int open(const char *name, int flags);
- •Int open(const char *name, int flags, mode_l mode);
- •2. Применение двоичных семафоров для решения задачи "производитель-потребитель" (буфер неограниченный).
- •3. Страничная организация памяти в процессоре ia32
- •Билет 22
- •1. Взаимодействие процессов в ос unix. Разделяемая память (22) – 100
- •Int shmget(key_t key, size_t size, int permflags);
- •Void *shmat(int shmid, const void *daddr, int shmflags);
- •Int shmctl(int shmid, int command, struct shmid ds *shm_stat);
- •2. Применение семафоров для решения задачи «производитель» - «потребитель» с неограниченным буфером. Решение «спящий парикмахер». (10, 22) – 155
- •3. Организация защиты в процессорах ia32
- •Билет 23
- •1. Процессы в ос unix. Типы процессов. (7, 23) – 56
- •2. Применение общих семафоров для решения задачи «производитель-потребитель» с ограниченным буфером (11, 23) – 157
- •3. Задача замещения при управлению виртуальной памятью, часовой алгоритм.
- •Билет 24
- •1. Понятие потока в ос unix. Создание потока, завершение потока (24) – 106
- •Int pthread_create(pthread_t *tid, const pthread_attr_t *tattr,
- •Void*(*start_routine)(void *), void *arg);
- •Функция для завершения нити (потока) исполнения
- •Int pthread_join(thread_t tid, void **status);
- •Int pthread_detach(thread_t tid);
- •Досрочное завершение потока
- •Int pthread_cancel(pthread_t thread);
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20, 24) - 152
- •3. Схемы распределения памяти (18, 24)
- •1. Процессы в ос unix. Порождение процесса (11, 25) – 57
- •2. Задача взаимного исключения. Алгоритм Петерсона
- •3. Виртуальная память. Задачи управления виртуальной памятью (11, 25)
- •Билет 26
- •1. Поток в ос unix. Синхронизация потоков, получение информации о потоке.
- •Int pthread_key_create(pthread_key_t *key, void(*destructor)(void *));
- •Int pthread_setschedparam(pthread_t tid, int policy,
- •Int pthread_getschedparam(pthread_t tid, int policy, struct schedparam *param);
- •Int pthread_sigmask(int how, const sigset_t *new, sigset_t *old);
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 1 (4, 26) – 142
- •3. Принципы построения ос (7, 19, 26) – 128
- •Билет 27
- •1. Применение мьютексов при взаимодействии потоков в ос unix.
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •1. Применение блокировок чтения-записи при взаимодействии потоков в ос unix.
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 3 (3, 28) – 144
- •3. Особенности современных операционных систем (2, 28) – 122
- •Концепция ос на основе микроядра
- •Многопоточность
- •Cимметричная многопроцессорность.
- •Распределенные ос
Система двойников при распределении памяти.
Фиксированное распределение памяти ограничивает количество активных процессов и неэффективно использует память при несоответствии между размерами разделов и процессами. Динамическое распределение реализуется более сложно и включает затраты на уплотнение памяти. Решением в этом плане является система двойников. В ней память распределяется блоками размером , где -минимальный размер выделяемого блока, а -максимальный размер(вся доступная распределенная память). Вначале все доступное для распределения адресное пространство рассматривается как единый блок размером .
Если запрашивается блок размером , таким что , то выделяется весь блок памяти, в противном случае, блок будет разделен на два одинаковых подблока (двойника), размерами . Если , то выделяется блок , иначе повторяется. Процесс деления продолжается до тех пор, пока не будет сгенерирован наименьший блок, размер которого не меньше . Система двойников всегда ведет список доступных блоков для каждого размера где . Блок может быть удален из списка путем разделения его пополам и внесения двух свободных блоков в список . Когда пара свободных блоков в списке оказывается освобожденной, они удаляются из этого списка и объединяются в единый блок в списке .
Такой подход оказался достаточно эффективным и он применен в Linux.
На каждом уровне введен список свободных и занятых областей памяти.
Билет 15
1. Файловая система в ос unix ext2 (15) – 51
Файловая система – это способ организовывать расположение данных на носителе информации.
Типы файловой системы:
s5fs. В такой файловой системе длина имен файлов занимает 14 байт, имеется ограничение на количество файлов. Она считается не надежной, т.к. в ней только одна копия суперблока;
ffs. Считается быстрой файловой системой, т.к. в ней осуществляется быстрый доступ к данным. В отличие от файловой системы s5fs, в ffs хранится несколько копий данных;
и др.
Также имеется ext – семейство файловых систем (ext2 или ext3, где ext3 – это журнальный вариант ext2).
Организация файловой системы ext2
В этой файловой системе разбивается на группы блоков:
С труктура блока же такова (основные его составляющие):
Под понятием суперблок понимается и копия суперблока (а в нулевой группе блоков содержится основной суперблок).
ТДГ – таблица дескрипторов групп.
БКЗБ – битовая карта занятости блоков.
БКЗ inode – битовая карта занятости inode.
Таблица inode – таблица индексных дескрипторов (информационных узлов).
ДГ – дескриптор группы. Он определяет распространение служебной информации, т.е. для своей группы.
АБКБ – адрес битов карты блоков.
АБК inode – адрес битов карты inode.
АТ – адрес таблицы inode.
В таблице индексных дескрипторов распространяются сами индексные дескрипторы (при чем используется сквозная нумерация), т.е. если в таблице inode группы блоков 0 последний индексный дескриптор был InX, то в таблице inode группы блоков 1 дескрипторы будут начинаться с In(X+1), In(X+2) и т.д. Индексные дескрипторы описывают каждый свой файл и представляют собой:
IB – Indirect Block (КС –косвенная ссылка)
DIB – Double IB (ДКС – двойная КС)
TIB – Triple IB (ТКС – тройная КС)
Такой подход позволяет обеспечивать быстрый доступ к небольшим файлам (адрес прямо указан), но чем сложнее файл, тем сложнее доступ.
Далее ГБ похожи на ГБ 0, но могут быть небольшие отличия. К примеру, некоторые группы блоков могут не содержать копию суперблока, а главная задача этих копий состоит в возможности восстановления суперблока.
Все раздела диска разбивается на блоки фиксированного размера, кратного размеру диска (1024, 2048, 4096). Размер блока указывается при создании файловой системы на разделе жесткого диска. Для уменьшения фрагментации и количества перемещения головок жесткого диска, при чтении большого массива информации блоки объединяются в группы.
Базовым понятием файловой системы является информационный узел (файловый дескриптор) – это специальная структура, которая содержит информацию об атрибутах и физическом расположении файлов. Физическое расположение файлов представляет собой последовательность абсолютных номеров блоков, которые и содержат данные файла.
Суперблок – основной элемент файловой системы. Он содержит следующую информацию:
общее число блоков и информационных узлов в файловой системе
число свободных блоков и информационных узлов в файловой системе
размер блока файловой системы
количество блоков и информационных узлов в группе
размер информационных узлов (inode)
идентификатор файловой системы
номер первого блока данных (фактический номер блока, где располагается суперблок)
- если размер блока равен 1024 байта, то номер первого блока равен 1;
- если размер блока больше 1024 байт, то номер первого блока – 0.
это следует из того, что первые 1024 байта резервные для загрузчика ОС, а главная копия суперблока располагается со смещением 1024 байта.
Ранние версии системы ext создавались копии суперблока в начале каждой группы блоков. В более современных системах они хранятся в 0, 1, 3, 5, 7, … группах.
Каждая группа содержит информацию о занятости блоков и inode в виде битовой карты. Битовая карта занятости блоков обычно располагается в первом блоке группы. Если группа содержит копию суперблока, битовая карта располагается во втором блоке группы. Размер битовой карты равен одному блоку. Каждый бит карты обозначает состояние блока. Если 1 – блок занят, 0 – свободен.
Дескриптор группы – это структура, которая сожержит информацию об адресах битовой карты занятости блоков, битовой карты inode, таблицы inode соответствующей группы. Все дескрипторы групп содержатся в таблице дескрипторов групп, которая хранится в группе блоков 0. Для этой таблицы также создаются резервные копии. Информация, которая создается в дескрипторах групп, служит для доступа к файлу.
К примеру: задано имя файла, чтобы получить доступ к информации, изначально определяется номер индексного дескриптора. Следующим шагом определяется группа, по номеру группы выбирается номер индексного дескриптора, далее выделяется адрес данного файла. Только после этого возможен доступ к информации, содержащейся в данном файле.