[identity profile] urod.livejournal.com posting in [community profile] useful_faq
Хуже ли новые версии винды, чем винда 7? Если да, чем они хуже и насколько?

Date: 2017-02-27 08:10 am (UTC)
From: [identity profile] karpion.livejournal.com
драйвер это программка, выполняющаяся в операционной среде
Для начала объясните мне, что такое "операционная среда". И приведите примеры программ, которые выполняются не в операционной среде. А если не там - то где же?

Моё определение:
Драйверы бывают двух основных типов: "драйвер физического устройства" и "драйвер протокола". Примеры:
  1. устройства: HDC (контроллер жёсткого диска), HDD (жёсткий диск), модем, сетевая карта;
  2. протоколы: файловая система, протокол IP, протокол TCP.
Впрочем, учитывая, что жёсткий диск доступен через его контроллер, а взаимодействие очень похоже на взаимодействие по сети, драйвер жёсткого диска можно отнести ко второй категории.
Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API), специфичный для всех устройств данного типа. Со стороны устройства эта программа использует доступ через команды ввода/вывода IN/OUT (ABI), специфичный для конкретной модели устройства. Т.е. со стороны API драйверы видеокарт одинаковые, а со стооны ABI драйверы ATi/AMD и Nvidia совершенно разные.
Драйвер протокола - это тоже программа-посредник; только у неё с обеиз сторон - API (ага, драйвер HDD - устроен именно так - у него снизу драйвер контроллера). С верней стороны драйверы всех файловых систем одинаковы, т.к. содержат стандартный набор функций, полагающихся файловой системе. А с нижней стороны драйверы разных файловых систем (FAT, NTFS, EXT*, ZFS, UFS/FFS) совершенно разные, т.к. раскладывают данные каждая как хочет. Это я ещё не стал влезать в том, что существуют сетевые файловые системы, а также виртуальные псевдофайловые псевдосистемы типа DevFS и ProcFS.

BIOS не является операционной средой
Ой, а как же тогда работает загрузчик операционки?

Date: 2017-02-28 12:32 am (UTC)
From: [identity profile] big-rig-and-bbq.livejournal.com
"Для начала объясните мне, что такое "операционная среда"."
-------------------------------
вернее "оперирующая" среда, а не "операционная". Правильный перевод слова operating - оперирующий, т.е. приводящий в действие.

Совокупность программулек, обеспечивающих управление ресурсами компа, раздачей полномочий процессам (другим программулькам) по доступу к ресурсам компа


" "BIOS не является операционной средой"
Ой, а как же тогда работает загрузчик операционки? "
------------------------------
Причём тут загрузчик операционки ?

БИОС проверяет аппаратуру согласно программке, "зашитой" в микросхеме,
а операционка "загружается" исполнением файла с определённого места на диске - загрузочной области диска
Edited Date: 2017-02-28 12:33 am (UTC)

Date: 2017-02-28 05:16 pm (UTC)
From: [identity profile] karpion.livejournal.com
Совокупность программулек, обеспечивающих управление ресурсами компа, раздачей полномочий процессам (другим программулькам) по доступу к ресурсам компа
Это "операционная система".

А теперь внимание: драйверы начинают работу до того, как в системе появляются процессы. Поэтому Ваше мнение "драйвер это программка, выполняющаяся в операционной среде" (с уточнениями о значении этих терминов) совершенно ложно.

Причём тут загрузчик операционки ?
Смотрим внимательно:
  1. Загрузчик операционки загружает ядро и прочую хрень. Загружает с диска (или по сети - тут это без разницы).
  2. Чтобы обратиться к диску (или к сети) - в RAM или в ROM д.б. программа, знающая, как работать с данным конкретным HDC+HDD.
  3. Эта программа и есть драйвер. Причём этот драйвер должен работать тогда, когда в системе нет не только процессов, но даже и ядра - т.е. некому распределять ресурсы. Да собственно, их распределять незачем - практически нет желающих их получить. А те, которые есть - распределяют их кооперативным способом.


БИОС проверяет аппаратуру согласно программке, "зашитой" в микросхеме
Не только, очень даже не только. При использовании DOS - BIOS работал на протяжении всей работы компьютера, до выключения.

Чтобы диалог был продуктивным, мне надо понять, что Вы знаете, а чего не знаете. Знаете ли Вы, какие функции выполнял BIOS уже после загрузки DOS?

а операционка "загружается" исполнением файла с определённого места на диске - загрузочной области диска
У меня складывается чёткое ощущение, что Вы не понимаете смысл слова "загрузка/загружается".

Где именно находится "загрузочная область диска"? Это фиксированное место, или для разных операционок оно может меняться?

Допустим, у меня на компьютере (на одном диске, в разных разделах) установлены DOS, W'XP и Linux с возможностью выбора операционки при старте. Где в этом случае находится "загрузочная область диска"?

"Загрузочная область диска" - это один сектор или много? Если много - то где содержится их список? Как список секторов передаётся на диск?

"Понимает" ли диск разницу между загрузкой операционки и штатным режимом работы? Может, в стандарте IDE/ATA/SATA/SCSI есть какие-то функции, относящиеся только к загрузке, которые не нужны в штатном режиме работы? Пруф есть?

Date: 2017-03-03 11:20 pm (UTC)
From: [identity profile] big-rig-and-bbq.livejournal.com
"А теперь внимание: драйверы начинают работу до того, как в системе появляются процессы."
--------------------
а теперь внимание, что такое процесс и откуда они "появляются" ? А теперь усильте внимание - от сырости или от запуска исполняемого файла в оперативной памяти, запрошенной исполняемым файлом и выделенной (ещё усильте внимание) чем ?

Date: 2017-03-04 01:39 am (UTC)
From: [identity profile] karpion.livejournal.com
"Процесс" - это запущенная программа. В современных операционках, которые пошли по дурацкой схеме загрузки с диска, процессы обычно действительно появляются от запуска программы, которая лежит в файле, а файл лежит на диске.
Хотя в Unix процесс появляется от выполнения системного вызова fork(), а потом программа, исполняемая в процессе, заменяется файлом - это делает системный вызов exec().

Итак, вернёмся к вопросу о том, что "драйверы начинают работу до того, как в системе появляются процессы". У Вас есть опровержения?

Обратите внимание: чтобы запустить процесс из файла, лежащего на диске, надо обратиться к диску. А это значит, что драйвер диска уже должен работать.
Но я выдвигаю более сильный тезис: загрузка ядра требует обращения к диску, т.е. наличия работающего драйвера.
Edited Date: 2017-03-04 01:43 am (UTC)

Date: 2017-02-28 12:40 am (UTC)
From: [identity profile] big-rig-and-bbq.livejournal.com
короче говоря, драйвер - системная программулька, приводящая в действие нечто или позволяющая использовать что-то (ресурс компа).

"Драйвер устройства - это программа-посредник. Со стороны обращающихся к ней программ она реализует стандартизированный интерфейс (API)"
----------------
вот я и говорю, что для "работы" драйвера нужна операционная среда (реализующая (выполняющая), в том числе функции АПИ).

Date: 2017-02-28 05:23 pm (UTC)
From: [identity profile] karpion.livejournal.com
Драйвер сам реализует некоторый API, операционная среда ему для этого вовсе не обязательна. Более того: в ряде случаев ядро операционки подстраивается под существующие драйверы.

Повторю ещё раз: драйвер должен работать до того, как начало работать ядро операционки. Чисто потому, что это ядро ещё надо затянуть в RAM с HDD, а драйвер нужен для того, чтобы использовать HDD.

Date: 2017-03-03 11:21 pm (UTC)
From: [identity profile] big-rig-and-bbq.livejournal.com
" Более того: в ряде случаев ядро операционки подстраивается под существующие драйверы"
----------------------
Вы серьёзно ?
Ядро "подстраивается" ?
Если к компьютеру подключить чайник или утюг, ядро "под него" "подстроится" ?
А в чём выражается "подстраивание" ?

Date: 2017-03-04 01:19 am (UTC)
From: [identity profile] karpion.livejournal.com
При проектировании ядра программисты нередко ориентируются на уже созданные драйверы. Пример: подсистема в Linux, позволяющая подключить NDIS-драйверы из Windows.

Я сказал "подстраивается под существующие драйверы". При чём тут "подключить чайник или утюг"? Драйверы под них в какой момент появились - при подключении?