- •Лекция №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
Лекция №10
VOID ExitThread(DWORD ExitCode)
Завершение потока.
BOOL TerminateThread(HANDLE h,
DWORD ExitCode)
DWORD [Suspend/Resume] Thread(HANDLE h)
Suspend – приостановить работу потока
Resume – возобновить работу потока
Действие функции Suspend является накапливаемым (если два раза запустить функцию SuspendThread одному и тому же потоку, то необходимо вызвать дважды ResumeThread)
BOOL SwitchToThread()
Вызвать планировщик системы.
DWORD SetThreadAffinitiMask(HANDLE h,
DWORD NetMask)
Уст. множество процессоров, на которых поток может работать.
Результат – предыдущая маска, в которой все работало
DWORD SetThreadIdealProcessor(HANDLE h,
DWORD NProc)
Устанавливаем для потока предпочитаемый процессор. Если все равно какой процессор, то вместо NProc ставим константу MAXIMUM_PROCESSOR.
Волокна
(потоки, которыми мы сами управляем)
LPVOID CreateFiber(
SIZE_T StackSize,
LPFIBER_START_ROUTINE Func,
LPVOID Params) – создаем волокно.
VOID DeleteFiber(LPVOID f) – удаление волокны
LPVOID ConvertThreadToFiber (LPVOID Params) – прежде чем начать работу один поток превратить в волокно.
BOOL ConvertFiberToThread() – уничтожаем структуру волокна и превращаем его в поток
VOID SwitchToFiber(LPVOID f) – переключиться на указанное волокно
Лекция №11 Синхронизация процессов.
DWORD WiteForSingleObject(HANDLE h,
DWORD Timeout)
Ждет указанное время некоторый объект.
Если мы хотим ждать «до потери пульса», то вместо указания времени пишем INFINITE. Ждать для процессов и потоков – это значит дождаться их окончания.
Результат: WAIT_TIMEOUT – не дождались (истекло время)
WAIT_OBJECT – дождались
WAIT_ABANDONED – только для MUTEX, означает, что поток завершился, но MUTEX не освободился.
DWORD WaitForMultipleObject(DWORD nCount,
HANDLE *h,
BOOL WaitAll,
DWORD TimeOut)
первый параметр – это количество элементов массива, далее идет указатель на первый элемент массива, следующий параметр – ждем одного из или всех вместе. И последний параметр – время ожидания.
Результат: WAIT_TIMEOUT – не дождались (если третий параметр false – значит никого не дождались, если true – не дождались сразу всех)
WAIT_OBJECT – дождались.
MUTEX выполняет в системе роль критической секции.
Захватить MUTEX – войти в критическую секцию.
Освободить MUTEX – выйти из критической секции.
MUTEX может принадлежать одному потоку, который будет считать, что он находится в критической секции.
HANDLE CreateMutex(LPSECURITY ATTRIBUTES ProcAttr,
BOOL InitOwuer,
LPCTSTR Sysname)
Создает объект
параметры безопасности,
Будем ли мы при создании mutex захватывать его или нет.
Системное имя mutex
BOOL ReleaseMutex(HANDLE h) – освободить mutex
Если нам объект больше не нужен, то вызываем функцию
BOOL CloseHandle(HANDLE h)