- •Билет 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имметричная многопроцессорность.
- •Распределенные ос
3. Схемы распределения памяти
Основной функцией ОС по управлению памятью является размещение программы в основной памяти для её выполнения процессором. В современных ОС решение этой задачи предполагает использование сложной схемы, называемой виртуальной памятью.
Известно несколько способов распределения памяти:
1.фиксированное распределение. ОП разделяется на ряд статических разделов во время генерации системы. Процесс может быть загружен в раздел равного или большего размера. Положительная сторона- простота реализации и малые системные затраты. Отрицательная сторона – неэффективное использование памяти из-за внутренней фрагментации и фиксированного максимального количества процессов.
2.Динамическое распределение. Разделы создаются динамически, каждый процесс загружается в раздел необходимого размера. Достоинство- отсутствие внутренней фрагментации, более эффективное использование ОП. Недостаток – существенные затраты процессора на противодействие внешней фрагментации и проведения уплотнения памяти. При выделении памяти, таким образом, применяются три основных алгоритма: наилучший подходящий, первый подходящий, следующий подходящий.
3.Простая страничная организация. ОП разделена на ряд кадров равного размера. Каждый процесс распределен на некоторое количество страниц равного размера, такой же длины, что и кадры памяти. Процесс загружается путем загрузки всех его страниц. Достоинство- отсутствие внешней фрагментации. Недостаток – небольшая внутренняя фрагментация.
4.Простая сегментация. Каждый процесс распределен на ряд сегментов. Процесс загружается путем загрузки всех своих сегментов в динамические, не обязательно смежные, разделы. Достоинство- отсутствие внутренней фрагментации. Недостаток – проблемы с внешней фрагментацией.
5.Страничная организация виртуальной памяти. Подобна простой страничной организации, но не требуется загружать все страницы процесса. Необходимые нерезидентные страницы автоматически подгружаются в память. Достоинства – отсутствие внешней фрагментации, более высокая степень многозадачности, большое виртуальное адресное пространство. Недостаток – значительные затраты на управление виртуальной памятью.
6.Сегментация виртуальной памяти. Подобна простой сегментации, но не требуется загружать все сегменты процесса. Необходимые нерезидентные сегменты автоматически подгружаются в память. Достоинства - отсутствие внутренней фрагментации, более высокая степень многозадачности, большое виртуальное адресное пространство, поддержка защиты и совместного использования. Недостаток – затраты на управление сложной виртуальной памятью.
Билет 19
1. Взаимодействие процессов в ос unix, очереди сообщений (19) – 83
В сущности, сообщение является просто последовательностью символов или байтов (необязательно заканчивающейся нулевым символом). Сообщения передаются между процессами при помощи очередей сообщений (message queues), которые можно создавать или получать к ним доступ при помощи вызова msgget. После создания очереди процесс может помещать в нее сообщения при помощи вызова msgsnd, если он имеет соответствующие права доступа. Затем другой процесс может считать это сообщение при помощи примитива msgrcv, который извлекает сообщение из очереди.
Функция msgget определяется следующим образом:
#include <sys/msg.h>