Цитата: qurvax от 13.08.2019 09:09:38Вы, случайно, не проподаватель какой-нить? Что-то уж больно далече от практики... Между ФС и "драйвером устройства" дохренища всякого, обычно. И еще больше - между драйвером ее же, и, собсно, физическим носителем. Где так все прямо? В какой-нибудь встраеваемой системе, наверное, может быть. Теоритически.
Возможно, мы по-разному понимаем термин "драйвер". Я имею ввиду драйвер блочного устройства, который представляет для клиента (в частности, для ФС) любое мыслимое DASD в виде линейного массива блоков безотносительно того, что оно собой представляет физически. Драйвер этот – реальный системный слой во всех ОС, где есть возможность написать и имплементировать свою файловую систему.
Между вызовом, например, write(fd, buf,cnt) и вызовом к этому драйверу ничего кроме проверки, можно ли вызывающему писать на это устройство (права), и трансляции некоторых параметров состояния из блока описания открытого файла (это, что извлекается по fd) во входные параметры этого драйвера нет. Всем, что касается планирования работы с этим устройством и, собственно, работы, лежит ниже, т.е. в области ответственности драйвера.
Цитата:
qurvax от 13.08.2019 10:09:38Цитата: qurvax от 13.08.2019 09:09:38В какой ОС права доступа проверяет ФС? \n\n
В любой, в которой, например, вызов write() возвращает EACCES. Вы можете унаследовать файл, открытый с RDWR, обрезать ему запись через fcntl(F_SETFL), а потом вызвать write(). Тут случится проверка прав на операцию для дескриптора – вашему процессу вернут ошибку и к драйверу обращения не будет, а тот же вызов из родителя пройдет в драйвер после трансляции в его API.