Aq_UNDERSCOPE_0
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Уважаемые спецы по архитектуре и ОСям! Опишите популярно в двух словах, как примерно пользовательский процесс взаимодействует с устройством в UNIX-подобных и в любых других операционных системах. Сначала, НЯП, процесс пытается открыть файл, в данном случае -- файл устройства. Система открывает файл и возвращает номер и режим доступа. Затем процесс инициализирует устройство нужным образом, вызывая ioctl(). Этот самый ioctl() сообщает драйверу, какой режим работы требуется от устройства. Драйвер, получая управление, это или реализует, или выдаёт ошибку. Теперь вопрос: когда пользовательский процесс пишет в файл устройства, он пишет непосредственно в устройство или в кусок памяти, указатель на который передаётся драйверу? Извините, если вопрос тупой. Просто пытаюсь понять принципы работы вычислительных машин. И ещё вопрос: а железо «знает», что в данный момент на процессоре выполняется именно программа-драйвер конкретного устройства, а не пользовательский процесс? А если процессу разрешено непосредственное управление устройством, он может ли напартачить и попробовать поуправлять не своим устройством? Как примерно реализована защита от этого безобразия? Железо занимается каким-нибудь разграничением доступа для выполняемых процессов на процессоре? |