Я думал. Давайте рассмотрим этот пример: у нас на ПК работают 2 программы. Первый - это, например, интернет-браузер, а второй - какое-то программное обеспечение для сканирования WiFi. Теперь браузер хочет использовать интернет-соединение через WiFi, но для сканера WiFi нужно, чтобы адаптер WiFi был переключен в режим сканирования ...
Итак, какая сторона в современной архитектуре ОС отвечает за обработку таких коллизий? Какой-то слой ОС, драйвер устройства или сама программа?
Потому что, например, сканер WiFi переключил адаптер WiFi в режим сканирования. Теперь браузер запущен. Таким образом, ОС переключает процессорное время в браузер. Он вызывает некоторый абстрактный уровень ОС для сети, который вызывает драйвер WiFi и хочет получать от него данные.
В принципе, я хочу знать, как решаются эти ситуации. Я много думал об этом, но я так и не понял этого. Потому что есть несколько вариантов:
Например, встроенные в API функции ОС, такие как, например, базовый API для печати текста на консоль или рисования в Windows, обрабатывают, какой фактический кадр обрабатывает сам экран, и вызывают сам драйвер графического процессора, поэтому никаких конфликтов нет.
Но вы можете написать свои собственные драйверы, не лежащие под каким-то тяжелым OS API. И тогда 2 приложения могут использовать этот драйвер для двух противоположных функций. Моя главная проблема в понимании этого - многозадачная среда. Потому что как процесс 2 может вызвать некоторую функцию драйвера, если процесс 1 вызвал ее раньше, и он переключился на процесс 2 до того, как запрос драйвера был завершен? Благодарю.