|
|
  |
Разбивка HDD, Как ОС определяет кол-во логических головок на винте? |
|
|
|
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
|
|
|
|
|
Jul 30 2011, 17:17
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 4-11-10
Пользователь №: 60 646

|
боже , из вас никто про LBA не слышал ? и про LBA48 точно никто и про LBA -> CHS виртуальное преобразование ? Человек вам правду говорил - из биоса получают данные , попробуйте простой тест , в старом биосе в котором можно ручками выставить CHS уберите часть головок или цилиндров или секторов и посмотрите как изменится определяемый DOS'ом размер прошу прощения если я кого обижу . но гляньте тут на CHS , на LBA и на INT 13Hразвязали тут две страницы полемики на пустом месте ....
|
|
|
|
|
Jul 30 2011, 17:49
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(follow_me @ Jul 30 2011, 22:17)  Человек вам правду говорил - из биоса получают данные , попробуйте простой тест , в старом биосе в котором можно ручками выставить CHS уберите часть головок или цилиндров или секторов и посмотрите как изменится определяемый DOS'ом размер Кое-что не сходится. Мой биос показывает на одном из винтов 16 головок. Это честные АТА головки. Физически на винте их может быть и меньше, не суть. Но разметка на этом винте стоит на 32 головки. Не 16 и не 255. Я не собираюсь задавать сам какие-то значения. Меня интересует автоопределение и по какому алгоритму оно работает. Цитата(follow_me @ Jul 30 2011, 22:17)  прошу прощения если я кого обижу . но гляньте тут на CHSЭто напрямую никак не проясняет ситуацию с кол-вом головок. BIOS (int 13 func < 10h) может работать с головками до 255. Однако если диск (логический) размечен на 32, то BIOS будет работать с 32-мя. А не с 255. Причём кол-во АТА головок совершенно "до лампочки". Так вот. Либо BIOS приходится после перезагрузки читать первые сектора диска и их анализировать, либо по общему объёму диска по какому-то алгоритму задаётся кол-во головок.
Сообщение отредактировал GetSmart - Jul 30 2011, 17:57
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 31 2011, 14:57
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(follow_me @ Jul 30 2011, 22:17)  прошу прощения если я кого обижу . но гляньте тут на CHS , на LBA и на INT 13Hразвязали тут две страницы полемики на пустом месте .... Прочитал эти три ссылки. Ржунимагу. Вы, товарищи-писатели, хоть бы вчитывались в вопросы. Все три ссылки никак не проясняют алгоритм определения головок. В приличных биосах есть режим AUTO. Он умеет сам определять кол-во головок без ручного ввода их в биос. zltigo просто мастер жанра. Когда ему указываешь что ответ не на тот вопрос, у него одна заготовка - вы, батенька, дурак  zltigo, впредь прошу мне не отвечать. Ваша недопомощь мне не нужна.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 31 2011, 18:40
|

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

|
QUOTE (GetSmart @ Jul 31 2011, 16:57)  zltigo, впредь прошу мне не отвечать. Ваша недопомощь мне не нужна. Так ведь можно просто, в крайнем случае, непонятное просто молча пропустить. Ну а поскольку это форум, то отвечать или нет я буду решать сам. QUOTE (Xenia @ Jul 31 2011, 20:02)  то может быть окажется полезной ссылка " Работа с IDE HDD через порты контроллера"? Нет, у него другая проблема, он типа дизасемблировал какую-то MBR (кстати,они достаточно разные у разных версий DOS и тем более WIN) и не понял, как загружается Boot Record активного раздела.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|