- •Лекция №1
- •История операционных систем.
- •Управление памятью.
- •Однозадачные системы.
- •Лекция №2
- •Способы учета участков памяти.
- •2 Алгоритм (наиболее подходящий).
- •3 Алгоритм (наименее подходящий).
- •4 Алгоритм (алгоритм двоичного разбиения).
- •Лекция №4
- •Принципы
- •Лекция №5
- •Лекция №6 Управление процессами.
- •Алгоритмы планирования системы.
- •Лекция №7
- •Два подхода к планированию.
- •Синхронизация.
- •Лекция №8
- •Тупики.
- •Способы взаимодействия между процессами.
- •Лекция №9 Управление процессами в среде Window’s.
- •Лекция №10
- •Волокна
- •Лекция №11 Синхронизация процессов.
- •Ссобытия
- •Способы взаимодействия процессов.
- •Серверная сторона
- •Второй семестр Управление процессами в среде unix Лекция №1
- •Лекция №2
- •Сигналы.
- •Способ взаимодействия общая память.
- •Лекция №3
- •Семафоры.
- •Лекция №4 Файлы как средства сообщения.
- •Файловыe системы.
- •Примеры файловых систем
- •Лекция № 6
- •Система ext 2
- •Лекция № 7
- •Лекция № 8 Функции работы с файлами в unix.
- •Лекция № 9 Java — скрипт.
- •Лекция № 10
- •Лекция № 11
Семафоры.
int semget (key_t key,
int count,
int flags)
Все тоже, что и с общей памятью, кроме второго параметра.
int semop (int id,
struct sembuf *sops,
unsigned nops)
struct sembuf
{
unsigned short sem_num;
short sem_op;
short sem_flg;
}
Функция работает с семафорами.
- занять ресурсы
- отдать ресурсы
*sops – указатель на первый элемент массива.
nops – количество элементов в массиве
Массив состоит из структур:
sem_num – номер семафора внутри группы,
sem_op – число (если > 0, то его прибавить к счетчику семафоров)
Флаги: IPC_NOWAIT – не ждать sem_op
IPC_UNDO – после завершения процесса – самооткат данной операции с данным семафором.
int semctl (int id,
int semnum,
int cmd,…)
CMD: IPC_RMID – уничтожить группу семафоров.
Критическая секция – это семафор с максимальным значением счетчика = 1
int msgget (key_t key, int flags) 0 создать очередь сообщений.
Отправляет сообщение в очередь:
int msgsnd (
int id,
struct msgbuf *buf
size_t size,// указатель на размер данных в struct без поля mtype
int flags// - 0 или IPC_NOWAIT - не ждать, если очередь переполнена)
struct msgbuf
{
long mtype;// служебное поле, число > 0
char mtext[1];// после идут любые данные любого размера, которые
//нужно отправить в очередь
}
Читает из очереди одно сообщение:
size_t msgrev (int id, // очередь сообщений
struct msgbuf *buf,// указатель на структуру
size_t size, // размер структуры
long mtype,
int flags // IPC_NOWAIT – не ждать, если в очереди нет сообщения)
mtype |
данные |
2 |
… |
3 |
… |
5 |
… |
2 |
… |
2 |
… |
4 |
… |
1 |
… |
6 |
… |
3 |
… |
mtype = 0 – сообщения выбираются подряд
mtype > 0 – выбирается сообщение, у которого поле
mtype совпадает со значением mtype в структуре
mtype < 0 – выбирается сообщение, у которого mtype ≤
|mtype|
MSG_NOERROR – если длина сообщения > буфера – обрезать сообщение и ошибку не возвращать.
int msgctl (int id,
int cmd, // IPC_PMID – уничтожить очередь сообщений
struct msgid_ds *buf)
Лекция №4 Файлы как средства сообщения.
Открывает доступ к файлу:
int open (
const char* path. // путь
int flags
[, mode_t mode])// режим доступа (0666 - 110110110)
Флаги:
O_CREAT |
создать файл, если он существует, просто его открыть |
O_CREAT+O_EXCE |
обязательно создать, если он есть, то это ошибка |
O_RDONLY |
только чтение |
O_TRUNC |
открыть файл и обрезать его содержимое |
O_RWONLY |
только запись |
O_APPEND |
в режиме добавления. Перед каждой записью указатель устанавливается в конец файла |
O_RDWR |
чтение и запись |
O_DIRECT |
минимизировать, т.е. не кэшировать |
O_NOFOLLOW |
не следовать по ссылке, если путь открытия файла – ссылка. |
int creat (
const char* path,
mode_t mode) – возвращает при открытии дескриптор файла.
ssize_t read (int fd,
void *buf,
size_t count)
ssize_t write (int fd,
void *buf,
size_t count)
fd – файловый дескриптор, возвращенный int creat()
Результат функции = -1 – если ошибка.
off_t lseek (int fd,
off_t offset,
int from)
fd – файловый дескриптор
offset – расстояние смещения:
SEEK_SET – от начала
SEEK_CUR – с текущего положения
SEEK_END – от конца
from – точка отсчета смещения