Содержание
- 2. План курса Введение Что такое ОС? Зачем они нужны? Основные идеи и принципы ОС Ядро ОС,
- 3. План лекции Многозадачность Понятие и виды многозадачности Потоки и процессы IPC в Windows и POSIX Средства
- 4. Перед началом… Где смотреть описание функций API ОС? для Microsoft Windows: MSDN (Microsoft Developer Network): https://docs.microsoft.com/en-us/windows/win32/
- 5. Многозадачность, типы, потоки и процессы, механизмы синхронизации: мьютекс, семафор, барьер, IPC Многозадачность
- 6. Многозадачность Одновременное выполнение нескольких подпрограмм (потоков) ОС сама переключает подпрограммы вытесняющая: ОС не ждёт завершения подпрограммы
- 7. Многозадачность Невытесняющая многозадачность (tickless-система) совместная, кооперативная многозадачность планировщик вызывается по окончанию очередной задачи (-) одна «повисшая»
- 8. Потоки и процессы Процесс – выполняется в отдельном виртуальном адресном пространстве и имеет приоритет исполнения. Поток
- 9. Создание процесса POSIX
- 10. Замещение тела процесса POSIX Новая программа загружается в память вместо старой, вызвавшей exec(). Старой программе больше
- 11. POSIX: функция system() : int system(const char *command);
- 12. POSIX: функция spawn() Функция spawn() запускает исполнимый файл и передает управление обратно вызвавшему процессу Подождать завершение
- 13. Создание процесса Windows
- 14. Создание процесса Windows Можно, как и в POSIX, использовать функцию system() (объявлена в ): Нужно учитывать,
- 15. Создание потока в POSIX
- 16. Управление потоками POSIX
- 17. Создание потока Windows
- 18. Управление потоками Windows
- 19. IPC Межпроцессное взаимодействие (inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется
- 20. Работа с файлами
- 21. Сигналы в POSIX Сигналы могут быть посланы: ядром системы для информирования приложения об ошибках или событиях
- 22. Неименованный канал (pipe) Доступен только связанным процессам – родительскому и дочернему Использует стратегию работы с данными
- 23. Именованный канал (named pipe) В POSIX именованный канал существует независимо от использующих его процессов и имеет
- 24. Разделяемая память в POSIX Область памяти, одновременно доступная в разных процессах Самый быстрый IPC В POSIX
- 25. Разделяемая память в Windows CreateFileMapping() для создания глобально именованной области, с указанием размера OpenFileMapping() для открытия
- 26. Сокеты Беркли Сокеты впервые появились в ОС Berkeley UNIX 4.2 BSD (1983 г) Сокет в POSIX-системе
- 27. Операции с сокетами
- 28. Сторонние средства IPC/RPC DCE/RPC (Distributed Computing Environment / Remote Procedure Calls) — бинарный протокол на базе
- 29. Механизмы синхронизации При работе с общей памятью из разных потоков или процессов необходимо использовать механизмы синхронизации.
- 30. Mutex
- 31. Семафор
- 32. Барьер
- 33. Синхронизация в POSIX Семафоры (#include ) – для синхронизации процессов Неименованный: int sem_init(sem_t *sem, int pshared,
- 34. Синхронизация в Windows Для синхронизации процессов используются именованные примитивы: Мьютексы: HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR
- 35. Принцип устройства таймера, работа с датой и временем Таймеры
- 36. Таймеры ОС Аппаратные таймеры ограниченное число таймеров всего два программируемых события (будильника) на один таймер ограниченная
- 37. Работа со временем в ОС Аппаратно время отсчитывается RTC (realtime clock) В настольных компьютерах размещены на
- 38. Время в POSIX Ожидание (#include ): unsigned sleep(unsigned seconds); int usleep(useconds_t useconds); #include : int nanosleep(const
- 39. Время в Windows Ожидание: VOID Sleep(DWORD dwMilliseconds); DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable); Получить время: #include :
- 40. Предопределенные макросы компиляторов, средства автоматизации сборки, функции библиотек Boost и QT для реализации IPC и работы
- 41. Макросы компиляторов Кроссплатформенный код на C/C++ обычно пишется с использованием макросов, определяющих ОС, компилятор, аппаратное обеспечение
- 42. Автоматизация сборки Система автоматизации сборки решает множество задач разработки ПО: Компиляция объектных модулей Определение ОС или
- 43. Boost и QT Boost.Threads Boost.Process Boost.Interprocess Boost.Filesystem Boost.Date_Time QThread QProcess QSharedMemory, QTcpSocket, QTcpServer,… QFile QDateTime https://www.boost.org/doc/libs/1_78_0/?view=categorized
- 44. С++11 и С++17 С++11: std::thread из std::mutex, std::recursive_mutex, std::condition_variable std::shared_ptr std::atomic С++17: std::filesystem из boost::filesystem Далее:
- 46. Скачать презентацию