|
Разбивка HDD, Как ОС определяет кол-во логических головок на винте? |
|
|
|
 |
Ответов
|
Jul 30 2011, 10:46
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 12:26)  Как ОС (MS-DOS or Windows) определяет кол-во логических головок на винте? В данных BIOS смотрят. Win, если в BIOS данные отсутствуют, сам читает 512 байтовый блок данных из HDD и разбирается с кем имеет дело. QUOTE Не знаю как в новых, больших винтах, но в старых используется CHS адресация Это уже не в старых, а безумно старых, ну или сейчас разве только в мелких CF.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 11:29
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 15:46)  В данных BIOS смотрят. Win, если в BIOS данные отсутствуют, сам читает 512 байтовый блок данных из HDD и разбирается с кем имеет дело. У меня в стареньком ноуте в BIOS стоит автоопределение и оно показывает логические CHS уровня ATA, а не уровня BIOS Int 13h. Цитата(zltigo @ Jul 30 2011, 15:46)  Это уже не в старых, а безумно старых, ну или сейчас разве только в мелких CF. А в HDD средней "старости", которые от 8 ГБ до 2 ТБ, у них нет в конце диска неиспользуемого места из-за округления по кол-ву цилиндров/головок?
Сообщение отредактировал GetSmart - Jul 30 2011, 11:32
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 11:35
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 13:18)  оно показывает логические CHS уровня ATA, а не уровня BIOS Int 13h. BIOS может пользоваться и пользуется (если умеет) только данными полученными с ATA. Другое дело, что он по Вашему приказу, может на них наплевать и/или воспользоваться, например, древней таблицей "стандарных" HDD. HDD это все равно, если в размер укладывается. Единственно, что может рухнуть файловая система из-за изменения размеров разделов. QUOTE (GetSmart @ Jul 30 2011, 13:29)  А в HDD средней "старости", которые от 8 ГБ до 2 ТБ, у них нет в конце диска неиспользуемого места из-за округления по кол-ву цилиндров/головок? Они вообще не могут адресоваться CHS - размеры далеко уходят за возможности CHS адресации.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 11:37
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 16:33)  BIOS может пользоваться и пользуется (если умеет) только данными полученными с ATA. Ну это явно не так. Int 13 как раз к BIOS относится. Если, конечно, его не перехватывает ОС, что ещё нужно подтвердить. Int 13 принимает в виде параметров CHS уровня BIOS, а не уровня АТА. Цитата(zltigo @ Jul 30 2011, 16:35)  Они вообще не могут адресоваться CHS - размеры далеко уходят за возможности CHS адресации. Вопрос не в этом. Читайте внимательно.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 11:43
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 13:37)  Ну это явно не так. Int 13 как раз к BIOS относится. Если, конечно, его не перехватывает ОС, что ещё нужно подтвердить. Int 13 принимает в виде параметров CHS уровня BIOS, а не уровня АТА. Когда сами себе сможете объяснить, что написали, то попробуйте задать вопрос еще раз.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 11:50
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 16:43)  Когда сами себе сможете объяснить, что написали, то попробуйте задать вопрос еще раз. Объясняю. В BIOS у меня написано, что кол-во головок 15. В MBR винта, как и в загр.секторе диска С, указано, что кол-во головок 255. Через Int 13 я могу считывать головки 0-254. То есть не 15, которые в настройках BIOS и передаются через АТА. На каком-то уровне ОС/BIOS происходит конвертация CHS OS (BIOS?) в CHS ATA. Я конечно же знаю про функции 4x прерывания int 13, использующие линейную одномерную адресацию по логическим секторам, но сейчас не об этом, а о функциях < 10h Int 13h.
Сообщение отредактировал GetSmart - Jul 30 2011, 12:21
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 12:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 13:50)  Объясняю. В BIOS у меня написано, что кол-во головок 15. В MBR винта, как и в загр.секторе диска С, указано, что кол-во головок 255. Через Int 13 я могу считывать головки 0-254. Типа INT13h/AH=13h ? QUOTE То есть не 15, которые в настройках BIOS и передаются через АТА. На каком-то уровне ОС/BIOS происходит конвертация CHS OS (BIOS?) в CHS ATA. о функциях < 10h Int 13h. Ну и какая такая функция AH < 10h Вам возвращает параметры диска?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 12:30
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 17:24)  Прежде, чем обратиться, Вы должны спросить параметры. Это 13h функция. Начиная с MSDOS 5.0 это ДОСОВСКАЯ, а не BOIS функция. Соответственно она все ретранслирует. Для обращения так-же производится ретрансляция. ОК. А DOS откуда узнаёт, ведь это какой-то виртуальный уровень? DOS это выясняет из MBR или загрузочного сектора логического диска? Кроме того, ещё до запуска DOS, то бишь во время запуска загрузочного сектора используется Int 13h для загрузки IO.SYS и Int 13h передаются в виде параметров CHS уже этого виртуального уровня, якобы неизвестного BIOS.
Сообщение отредактировал GetSmart - Jul 30 2011, 12:32
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 12:49
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 17:42)  Сомневаюсь в необходимости разных вариантов, поскольку вся эта возня затевалась для достижения адресации максимального объема диска. Но даже если вдруг там есть зачем-то какая-то стратегия выбора, то она абсолютно произвольна. Всё не дано понять... Фишка в том, что досовские проги используют эту виртуальную CHS и умудряются правильно её определять. Хотя может я чего-то и упустил. Но заглянул бы сюда какой-нить спец по DOS/BIOS чтобы указать что именно. А винда, скорее всего, работает с одномерными логическими секторами через Int 13 func > 40h, или своими аналогичными. Поэтому там вопрос так остро не стоит. Хотя и под виндой я разбивал 4 гиговый винт, у которого в результате был обрезан конец винта при округлении до целого числа цилиндров (255 головок).
Сообщение отредактировал GetSmart - Jul 30 2011, 12:53
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 12:51
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 14:49)  Всё не дано понять... Фишка в том, что досовские проги используют эту виртуальную CHS и умудряются правильно её определять. Они ее НЕ определяют, они ее СПРАШИВАЮТ у DOS используя INT13h/AH=13h. QUOTE Хотя может я чего-то и упустил. Упустили ответы на вопросы  . Пост №8
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 13:08
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 17:59)  Естественно молча пользуется первоначальными. Это накладывает только одно ограничение IO.SYS и (не помню точно) DOS.SYS должны быть на первых 500 мегабайтах диска. Ваша некомпетентность бросается в глаза  Загрузочный сектор уже использует DOS? разметку. Представьте, 15 головок в BIOS. Как только код обратится к 16-ой, то кирдык. А 15 головок * 63 сектора - это 472.5 КБ (!). Теоретически это может быть правдой, т.к. смещение первого кластера на диске FAT16 нах-ся в районе 260КБ. При этом остаётся место для IO.SYS размером 200 КБ. ИМХО зря они этот уровень ввели. Лучше бы оставался один уровень ATA/BIOS, а следующий был бы в DOS уже одномерный в секторах. Тогда и загрузочной области была бы адресация уровня АТА и загрузчик работал бы через BIOS с параметрами АТА. Upd. Пока у меня есть несколько версий, как определяется кол-во головок. 1. По общему размеру диска, ограничивая кол-во цилиндров в диапазоне 1023-512. 2. Прочитав MBR и определив по значениям CHS максимальное значение головки. 2а. Прочитав загрузочный сектор и взяв оттуда кол-во головок
Сообщение отредактировал GetSmart - Jul 30 2011, 16:24
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 13:23
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 15:08)  Ваша некомпетентность бросается в глаза  Угу, именно она позволяла мне уже 20 лет назад писать MainBIOS, патчить биосы контроллеров IDE интерфейсов и писать загрузчики для своей системы. QUOTE (GetSmart @ Jul 30 2011, 15:08)  Представьте, 15 головок в BIOS. Как только код обратится к 16-ой, то кирдык. А 15 головок * 63 сектора - это 472.5 КБ (!). Пустой набор слов ни о чем.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 13:29
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ Jul 30 2011, 18:23)  Угу, именно она позволяла мне уже 20 лет назад писать MainBIOS, патчить биосы контроллеров IDE интерфейсов и писать загрузчики для своей системы. Профессионалы ошибаются на плюс/минус 3 порядка  Цитата Пустой набор слов ни о чем. Второй раз объясню. Я недавно дизассемблил несколько загрузочных секторов MS-DOS/Windows. Так вот, в них указано кол-во головок уровня DOS?. И при вычислении местоположения IO.SYS логический одномерный сектор делится на кол-во головок. Если вдруг местоположение IO.SYS окажется на головке выше чем в BIOS, то BIOS пошлёт код подальше. Если цилиндр окажется не нулевой, то сектор прочитается совсем не оттуда. Вот так то.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 30 2011, 13:51
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (GetSmart @ Jul 30 2011, 15:29)  Я недавно дизассемблил несколько загрузочных секторов MS-DOS/Windows. И увидели фигу, не поняли, откуда берется расположение IO.SYS и как грузится IO.SYS, что не удивительно  , ибо Вам удается ее видеть даже глядя на более простые вещи, нежели дизассемблированный загрузчик. Продолжайте изучать. Должно-же когда-то дойти?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
GetSmart Разбивка HDD Jul 30 2011, 10:26 GetSmart Очередная истерика? Jul 30 2011, 14:11 zltigo QUOTE (GetSmart @ Jul 30 2011, 16:11) Оче... Jul 30 2011, 14:16  GetSmart Цитата(zltigo @ Jul 30 2011, 19:16) Почем... Jul 30 2011, 14:43 follow_me боже , из вас никто про LBA не слышал ? и про LBA... Jul 30 2011, 17:17 GetSmart Цитата(follow_me @ Jul 30 2011, 22:17) Че... Jul 30 2011, 17:49 GetSmart Цитата(follow_me @ Jul 30 2011, 22:17) пр... Jul 31 2011, 14:57  zltigo QUOTE (GetSmart @ Jul 31 2011, 16:57) zlt... Jul 31 2011, 18:40 Xenia Если вам не нравятся советы мудрого Zltigo , то мо... Jul 31 2011, 18:02 GetSmart Цитата(Xenia @ Jul 31 2011, 23:02) то мож... Jul 31 2011, 18:53  zltigo QUOTE (GetSmart @ Jul 31 2011, 20:53) И п... Jul 31 2011, 19:09   GetSmart Цитата(zltigo @ Aug 1 2011, 00:09) в блок... Jul 31 2011, 19:16    zltigo QUOTE (GetSmart @ Jul 31 2011, 21:16) На ... Jul 31 2011, 19:30  vvs157 Цитата(GetSmart @ Jul 31 2011, 22:48) Спа... Jul 31 2011, 19:25   GetSmart Цитата(vvs157 @ Aug 1 2011, 00:25) Есть с... Jul 31 2011, 19:42    zltigo QUOTE (GetSmart @ Jul 31 2011, 21:34) Вот... Jul 31 2011, 19:48    vvs157 Цитата(GetSmart @ Jul 31 2011, 23:34) Это... Jul 31 2011, 19:48     GetSmart Цитата(vvs157 @ Aug 1 2011, 00:48) Главно... Jul 31 2011, 19:51      zltigo QUOTE (GetSmart @ Jul 31 2011, 21:51) В т... Jul 31 2011, 20:01      vvs157 Цитата(GetSmart @ Jul 31 2011, 23:51) В т... Jul 31 2011, 20:13       GetSmart Цитата(vvs157 @ Aug 1 2011, 01:13) Они (B... Jul 31 2011, 20:22        zltigo QUOTE (GetSmart @ Jul 31 2011, 22:22) А В... Jul 31 2011, 20:28        vvs157 Цитата(GetSmart @ Aug 1 2011, 00:22) А Вы... Jul 31 2011, 20:35         zltigo QUOTE (vvs157 @ Jul 31 2011, 22:32) округ... Jul 31 2011, 20:36        vvs157 Цитата(GetSmart @ Aug 1 2011, 00:22) То е... Jul 31 2011, 20:39         GetSmart Цитата(vvs157 @ Aug 1 2011, 01:39) Вообще... Jul 31 2011, 20:45          vvs157 Цитата(GetSmart @ Aug 1 2011, 00:45) Ещё ... Jul 31 2011, 20:58           GetSmart Цитата(vvs157 @ Aug 1 2011, 01:58) Цилинд... Jul 31 2011, 21:31            vvs157 Цитата(GetSmart @ Aug 1 2011, 01:31) Знач... Aug 1 2011, 09:03             GetSmart Цитата(vvs157 @ Aug 1 2011, 14:03) Правил... Aug 1 2011, 10:05              vvs157 Цитата(GetSmart @ Aug 1 2011, 14:05) Один... Aug 1 2011, 13:39               zltigo QUOTE (vvs157 @ Aug 1 2011, 15:39) Про Wi... Aug 1 2011, 14:13               GetSmart Цитата(vvs157 @ Aug 1 2011, 18:39) Пробле... Aug 1 2011, 14:25         zltigo QUOTE (vvs157 @ Jul 31 2011, 22:39) Есте... Jul 31 2011, 20:53     zltigo QUOTE (vvs157 @ Jul 31 2011, 21:48) как B... Jul 31 2011, 20:22 xemul На больших АТА-шных винтах для совместимости с дре... Aug 1 2011, 14:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|