драйвер это программка, выполняющаяся в операционной среде
Для начала объясните мне, что такое "операционная среда". И приведите примеры программ, которые выполняются не в операционной среде. А если не там - то где же?
Моё определение: Драйверы бывают двух основных типов: "драйвер физического устройства" и "драйвер протокола". Примеры:
Впрочем, учитывая, что жёсткий диск доступен через его контроллер, а взаимодействие очень похоже на взаимодействие по сети, драйвер жёсткого диска можно отнести ко второй категории. Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API), специфичный для всех устройств данного типа. Со стороны устройства эта программа использует доступ через команды ввода/вывода IN/OUT (ABI), специфичный для конкретной модели устройства. Т.е. со стороны API драйверы видеокарт одинаковые, а со стооны ABI драйверы ATi/AMD и Nvidia совершенно разные. Драйвер протокола - это тоже программа-посредник; только у неё с обеиз сторон - API (ага, драйвер HDD - устроен именно так - у него снизу драйвер контроллера). С верней стороны драйверы всех файловых систем одинаковы, т.к. содержат стандартный набор функций, полагающихся файловой системе. А с нижней стороны драйверы разных файловых систем (FAT, NTFS, EXT*, ZFS, UFS/FFS) совершенно разные, т.к. раскладывают данные каждая как хочет. Это я ещё не стал влезать в том, что существуют сетевые файловые системы, а также виртуальные псевдофайловые псевдосистемы типа DevFS и ProcFS.
BIOS не является операционной средой
Ой, а как же тогда работает загрузчик операционки?
"Для начала объясните мне, что такое "операционная среда"." ------------------------------- вернее "оперирующая" среда, а не "операционная". Правильный перевод слова operating - оперирующий, т.е. приводящий в действие.
Совокупность программулек, обеспечивающих управление ресурсами компа, раздачей полномочий процессам (другим программулькам) по доступу к ресурсам компа
" "BIOS не является операционной средой" Ой, а как же тогда работает загрузчик операционки? " ------------------------------ Причём тут загрузчик операционки ?
БИОС проверяет аппаратуру согласно программке, "зашитой" в микросхеме, а операционка "загружается" исполнением файла с определённого места на диске - загрузочной области диска
Совокупность программулек, обеспечивающих управление ресурсами компа, раздачей полномочий процессам (другим программулькам) по доступу к ресурсам компа
Это "операционная система".
А теперь внимание: драйверы начинают работу до того, как в системе появляются процессы. Поэтому Ваше мнение "драйвер это программка, выполняющаяся в операционной среде" (с уточнениями о значении этих терминов) совершенно ложно.
Причём тут загрузчик операционки ?
Смотрим внимательно:
Загрузчик операционки загружает ядро и прочую хрень. Загружает с диска (или по сети - тут это без разницы).
Чтобы обратиться к диску (или к сети) - в RAM или в ROM д.б. программа, знающая, как работать с данным конкретным HDC+HDD.
Эта программа и есть драйвер. Причём этот драйвер должен работать тогда, когда в системе нет не только процессов, но даже и ядра - т.е. некому распределять ресурсы. Да собственно, их распределять незачем - практически нет желающих их получить. А те, которые есть - распределяют их кооперативным способом.
БИОС проверяет аппаратуру согласно программке, "зашитой" в микросхеме
Не только, очень даже не только. При использовании DOS - BIOS работал на протяжении всей работы компьютера, до выключения.
Чтобы диалог был продуктивным, мне надо понять, что Вы знаете, а чего не знаете. Знаете ли Вы, какие функции выполнял BIOS уже после загрузки DOS?
а операционка "загружается" исполнением файла с определённого места на диске - загрузочной области диска
У меня складывается чёткое ощущение, что Вы не понимаете смысл слова "загрузка/загружается".
Где именно находится "загрузочная область диска"? Это фиксированное место, или для разных операционок оно может меняться?
Допустим, у меня на компьютере (на одном диске, в разных разделах) установлены DOS, W'XP и Linux с возможностью выбора операционки при старте. Где в этом случае находится "загрузочная область диска"?
"Загрузочная область диска" - это один сектор или много? Если много - то где содержится их список? Как список секторов передаётся на диск?
"Понимает" ли диск разницу между загрузкой операционки и штатным режимом работы? Может, в стандарте IDE/ATA/SATA/SCSI есть какие-то функции, относящиеся только к загрузке, которые не нужны в штатном режиме работы? Пруф есть?
"А теперь внимание: драйверы начинают работу до того, как в системе появляются процессы." -------------------- а теперь внимание, что такое процесс и откуда они "появляются" ? А теперь усильте внимание - от сырости или от запуска исполняемого файла в оперативной памяти, запрошенной исполняемым файлом и выделенной (ещё усильте внимание) чем ?
"Процесс" - это запущенная программа. В современных операционках, которые пошли по дурацкой схеме загрузки с диска, процессы обычно действительно появляются от запуска программы, которая лежит в файле, а файл лежит на диске. Хотя в Unix процесс появляется от выполнения системного вызова fork(), а потом программа, исполняемая в процессе, заменяется файлом - это делает системный вызов exec().
Итак, вернёмся к вопросу о том, что "драйверы начинают работу до того, как в системе появляются процессы". У Вас есть опровержения?
Обратите внимание: чтобы запустить процесс из файла, лежащего на диске, надо обратиться к диску. А это значит, что драйвер диска уже должен работать. Но я выдвигаю более сильный тезис: загрузка ядра требует обращения к диску, т.е. наличия работающего драйвера.
короче говоря, драйвер - системная программулька, приводящая в действие нечто или позволяющая использовать что-то (ресурс компа).
"Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API)" ---------------- вот я и говорю, что для "работы" драйвера нужна операционная среда (реализующая (выполняющая), в том числе функции АПИ).
Драйвер сам реализует некоторый API, операционная среда ему для этого вовсе не обязательна. Более того: в ряде случаев ядро операционки подстраивается под существующие драйверы.
Повторю ещё раз: драйвер должен работать до того, как начало работать ядро операционки. Чисто потому, что это ядро ещё надо затянуть в RAM с HDD, а драйвер нужен для того, чтобы использовать HDD.
" Более того: в ряде случаев ядро операционки подстраивается под существующие драйверы" ---------------------- Вы серьёзно ? Ядро "подстраивается" ? Если к компьютеру подключить чайник или утюг, ядро "под него" "подстроится" ? А в чём выражается "подстраивание" ?
При проектировании ядра программисты нередко ориентируются на уже созданные драйверы. Пример: подсистема в Linux, позволяющая подключить NDIS-драйверы из Windows.
Я сказал "подстраивается под существующие драйверы". При чём тут "подключить чайник или утюг"? Драйверы под них в какой момент появились - при подключении?
no subject
Date: 2017-02-27 08:10 am (UTC)Моё определение:
Драйверы бывают двух основных типов: "драйвер физического устройства" и "драйвер протокола". Примеры:
- устройства: HDC (контроллер жёсткого диска), HDD (жёсткий диск), модем, сетевая карта;
- протоколы: файловая система, протокол IP, протокол TCP.
Впрочем, учитывая, что жёсткий диск доступен через его контроллер, а взаимодействие очень похоже на взаимодействие по сети, драйвер жёсткого диска можно отнести ко второй категории.Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API), специфичный для всех устройств данного типа. Со стороны устройства эта программа использует доступ через команды ввода/вывода IN/OUT (ABI), специфичный для конкретной модели устройства. Т.е. со стороны API драйверы видеокарт одинаковые, а со стооны ABI драйверы ATi/AMD и Nvidia совершенно разные.
Драйвер протокола - это тоже программа-посредник; только у неё с обеиз сторон - API (ага, драйвер HDD - устроен именно так - у него снизу драйвер контроллера). С верней стороны драйверы всех файловых систем одинаковы, т.к. содержат стандартный набор функций, полагающихся файловой системе. А с нижней стороны драйверы разных файловых систем (FAT, NTFS, EXT*, ZFS, UFS/FFS) совершенно разные, т.к. раскладывают данные каждая как хочет. Это я ещё не стал влезать в том, что существуют сетевые файловые системы, а также виртуальные псевдофайловые псевдосистемы типа DevFS и ProcFS.
Ой, а как же тогда работает загрузчик операционки?
no subject
Date: 2017-02-28 12:32 am (UTC)-------------------------------
вернее "оперирующая" среда, а не "операционная". Правильный перевод слова operating - оперирующий, т.е. приводящий в действие.
Совокупность программулек, обеспечивающих управление ресурсами компа, раздачей полномочий процессам (другим программулькам) по доступу к ресурсам компа
" "BIOS не является операционной средой"
Ой, а как же тогда работает загрузчик операционки? "
------------------------------
Причём тут загрузчик операционки ?
БИОС проверяет аппаратуру согласно программке, "зашитой" в микросхеме,
а операционка "загружается" исполнением файла с определённого места на диске - загрузочной области диска
no subject
Date: 2017-02-28 05:16 pm (UTC)А теперь внимание: драйверы начинают работу до того, как в системе появляются процессы. Поэтому Ваше мнение "драйвер это программка, выполняющаяся в операционной среде" (с уточнениями о значении этих терминов) совершенно ложно.
Смотрим внимательно:
Не только, очень даже не только. При использовании DOS - BIOS работал на протяжении всей работы компьютера, до выключения.
Чтобы диалог был продуктивным, мне надо понять, что Вы знаете, а чего не знаете. Знаете ли Вы, какие функции выполнял BIOS уже после загрузки DOS?
У меня складывается чёткое ощущение, что Вы не понимаете смысл слова "загрузка/загружается".
Где именно находится "загрузочная область диска"? Это фиксированное место, или для разных операционок оно может меняться?
Допустим, у меня на компьютере (на одном диске, в разных разделах) установлены DOS, W'XP и Linux с возможностью выбора операционки при старте. Где в этом случае находится "загрузочная область диска"?
"Загрузочная область диска" - это один сектор или много? Если много - то где содержится их список? Как список секторов передаётся на диск?
"Понимает" ли диск разницу между загрузкой операционки и штатным режимом работы? Может, в стандарте IDE/ATA/SATA/SCSI есть какие-то функции, относящиеся только к загрузке, которые не нужны в штатном режиме работы? Пруф есть?
no subject
Date: 2017-03-03 11:20 pm (UTC)--------------------
а теперь внимание, что такое процесс и откуда они "появляются" ? А теперь усильте внимание - от сырости или от запуска исполняемого файла в оперативной памяти, запрошенной исполняемым файлом и выделенной (ещё усильте внимание) чем ?
no subject
Date: 2017-03-04 01:39 am (UTC)Хотя в Unix процесс появляется от выполнения системного вызова fork(), а потом программа, исполняемая в процессе, заменяется файлом - это делает системный вызов exec().
Итак, вернёмся к вопросу о том, что "драйверы начинают работу до того, как в системе появляются процессы". У Вас есть опровержения?
Обратите внимание: чтобы запустить процесс из файла, лежащего на диске, надо обратиться к диску. А это значит, что драйвер диска уже должен работать.
Но я выдвигаю более сильный тезис: загрузка ядра требует обращения к диску, т.е. наличия работающего драйвера.
no subject
Date: 2017-02-28 12:40 am (UTC)"Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API)"
----------------
вот я и говорю, что для "работы" драйвера нужна операционная среда (реализующая (выполняющая), в том числе функции АПИ).
no subject
Date: 2017-02-28 05:23 pm (UTC)Повторю ещё раз: драйвер должен работать до того, как начало работать ядро операционки. Чисто потому, что это ядро ещё надо затянуть в RAM с HDD, а драйвер нужен для того, чтобы использовать HDD.
no subject
Date: 2017-03-03 11:21 pm (UTC)----------------------
Вы серьёзно ?
Ядро "подстраивается" ?
Если к компьютеру подключить чайник или утюг, ядро "под него" "подстроится" ?
А в чём выражается "подстраивание" ?
no subject
Date: 2017-03-04 01:19 am (UTC)Я сказал "подстраивается под существующие драйверы". При чём тут "подключить чайник или утюг"? Драйверы под них в какой момент появились - при подключении?