|
Разбивка HDD, Как ОС определяет кол-во логических головок на винте? |
|
|
|
 |
Ответов
|
Jul 31 2011, 18:53
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Xenia @ Jul 31 2011, 23:02)  то может быть окажется полезной ссылка " Работа с IDE HDD через порты контроллера"? Спасибо, конечно. Но это тоже не то. Здесь идёт работа напрямую с разметкой АТА. Там всё детерминировано. LBA пересчитать в CHS винта проблемы не вызывает. Проблему вызывает CHS Int 13h для дисков 540 MB..8GB. То есть неясно откуда берётся кол-во головок в этом CHS, по какому алгоритму, т.к. их кол-во не совпадает с головками ATA. Кроме того, меня интересует CHS Int 13 для работы с дисками более 8 ГБ, вплоть до 2 ТБ (или 0.5, не суть), хотя я прекрасно понимаю, что доступны будут только первые 8 гиг. Главное, алгоритм определения головок. И доп. вопрос - округляются ли разделы на дисках до 2 ТБ по целому числу цилиндров, с учётом опять же кол-ва логических головок, не АТА-шных. Цитата(zltigo @ Jul 31 2011, 23:40)  Нет, у него другая проблема, он типа дизасемблировал какую-то MBR (кстати,они достаточно разные у разных версий DOS и тем более WIN) и не понял, как загружается Boot Record активного раздела. Конкретно загрузочный сектор MS-DOS 6.22 и WIN95 и MBR не слишком старую, т.к. она умеет пользоваться Int 13 func > 40h. Чья MBR - пока не знаю. И понял я там абсолютно всё, кроме одного вопроса, на который никто ещё не ответил. Касательно загрузки с дискет, то там нет такой проблемы. Там нет второго уровня CHS.
Сообщение отредактировал GetSmart - Jul 31 2011, 19:09
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 31 2011, 19:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GetSmart @ Jul 31 2011, 22:48)  Спасибо, конечно. Но это тоже не то. Здесь идёт работа напрямую с разметкой АТА. Там всё детерминировано. LBA пересчитать в CHS винта проблемы не вызывает. Проблему вызывает CHS Int 13h для дисков 540 MB..8GB. То есть неясно откуда берётся кол-во головок в этом CHS, по какому алгоритму, т.к. их кол-во не совпадает с головками ATA. Есть спецификация ST506 - формат регистров контроллера жесткого дика. В этой спецификации максимальное число головок 16, но число дорожек 65535. Есть спецификация нерасширенного INT13 (не LBA48), где число головок 255, а число дорожек - 1024. То есть при удоволетворении и той и другой - максимальный размер 512 МБ. Для обхода этого ограничения появилась спецификация LBA - использующая полные возможности INT13 посредством стандартного преобразования CHS-ST506 в CHS-LBA. Диск на запрос геометрии может выдавать CHS-ST506 и BIOS SETUP (а не BIOS INT13!) показывает эти значения. Но для работы с таким диском надо все равно использовать CHS-LBA, которые и используются в INT13 Для работы с диками >8 ГБ используется расширение INT13, где используется только номер сектора без деления на CHS.
|
|
|
|
|
Jul 31 2011, 19:42
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(vvs157 @ Aug 1 2011, 00:25)  Есть спецификация ST506 - формат регистров контроллера жесткого дика. ... Это уже было написано в недавних ссылках на вики. Но это всё не отвечает на мой вопрос. Цитата(vvs157 @ Aug 1 2011, 00:25)  Для работы с диками >8 ГБ используется расширение INT13, где используется только номер сектора без деления на CHS. Эти функции я знаю, func >= 40h. Там всё элементарно. За мелкими нюансами. Но доступ к диску всё равно будет через func < 40h, особенно если диск размечен на несколько разделов и первый раздел < 8GB. То есть всё равно кол-во головок имеет значение. Вероятно там всегда будет 255 головок, но не уверен. Цитата(zltigo @ Aug 1 2011, 00:30)  Из каких соображений не сразу 255 - спросите у MS. ... Я собственно других не видел, о чем уже писал, и не вижу смысла не в 255. Вот они, ключевые моменты. Так бы и сказали, что Вы некомпетентны в данном вопросе. И не вертели передо мной своей харизмой  Если бы там стояло всегда 255 для дисков более 500 МБ, то у меня и вопросов бы не возникло. Цитата(zltigo @ Aug 1 2011, 00:30)  Да то, что было DOS-ом сформировано в таблице разделов в качестве адреса раздела, то и берет. Ничего ему знать НЕ надо. Предположений я не спрашиваю. У меня их у самого вагон и маленькая тележка. Мне нужен точный алгоритм.
Сообщение отредактировал GetSmart - Jul 31 2011, 19:37
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 31 2011, 20:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GetSmart @ Jul 31 2011, 23:51)  В том-то и прикол, что когда в BIOS-ах стоит AUTO, то можно диск перетыкать на другие материнки и всё будет одинаково. При этом, можно хоть голый, неотформатированный винт вставлять в материнку и БИОС в авто режиме назначит ему какое-то кол-во головок. И возможно разные БИОСы умудряются сразу назначать одинаковое число головок. Они (BIOS'ы) просто пользуются одинаковой формулой :-)) Для современных ОС имеет значение только абсолютный номер сектора, CHS ими не используется. Поэтому ОС использует только ту часть записи Partition Table в MBR, где указан абсолютный номер сектора. Записи CHS в MBR нужны только для MSDOS и иже с ним. FreeDOS по-моему тоже перешел на абсолютный номер сектора. Из этого следует, что для таких ОС непринципиально, как проведен мэппинг BIOS'ом ST506 в LBA
|
|
|
|
|
Jul 31 2011, 20:22
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(vvs157 @ Aug 1 2011, 01:13)  Они (BIOS'ы) просто пользуются одинаковой формулой :-)) А Вы её знаете?  Всего-то вопрос плёвый. На который zltigo тупит нипадецки. Цитата(vvs157 @ Aug 1 2011, 01:13)  Для современных ОС имеет значение только абсолютный номер сектора, CHS ими не используется. Но ведь система MBR/Boot sector грузится ещё до всякой ОС, используя адресацию Int13h. То есть ещё до запуска ОС, Int 13 уже знает сколько будет головок на диске. ОС в данном вопросе меня интересует только в том, ограничивает ли она общий размер винта, округляя его до целого числа цилиндров, опять же через головки. То есть в современных разметках дисков (< 2TB) разделы могут быть размером кратно 1 или 63 или 63*Heads, которые (Heads) якобы не используются?
Сообщение отредактировал GetSmart - Jul 31 2011, 20:25
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jul 31 2011, 20:39
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GetSmart @ Aug 1 2011, 00:22)  То есть в современных разметках дисков (< 2TB) разделы могут быть размером кратно 1 или 63 или 63*Heads, которые (Heads) якобы не используются? Вообще-то обычно принято раздел начинать с нового цилиндра. Цитата(zltigo @ Aug 1 2011, 00:36)  до любого числа вплоть до 255.  Естественно. Но BIOS'ы одного производителя деляют это одинаковым способом. Если нужна определенность.
|
|
|
|
|
Jul 31 2011, 21:31
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(vvs157 @ Aug 1 2011, 01:58)  Цилиндров там конечно нет. Но так как раньше они были, то выравнивание делается по старым традициям - для совместимости PT MBR в части записи HS. Значит ли это, что объём диска ограничивается усечением последнего неполного цилиндра? (с учётом, вероятно, 255 головок) И сразу же второй вопрос. Если я на голом диске создам первый раздел с Heads=16, то можно ли будет "отхватить" от винта больше места, т.к. остаток на неполном цилиндре будет в районе 1..15 головок. Цитата(vvs157 @ Aug 1 2011, 01:58)  ... то выравнивание делается по старым традициям - для совместимости PT MBR в части записи CHS. С этим ещё один прикол был связан. Я сделал копию 1 гигового винта на другой, большой. При изменении размеров разделов Acronis Partition-ом у меня начало разделов менялись кратно 255 головкам. Хотя в MBR и старого и нового винта стояло кол-во головок = 32. Точнее, в новом/большом стояло сразу после копирования один-в-один. После работы с Acronis оно поменялось на 255. Цитата(vvs157 @ Aug 1 2011, 01:35)  Да как-то никогда надобности в ней не было. Ее легко отреверсить. Берете LBAmax , делите на 63*1024, округляете в большую сторону - получите фиктивное число головок. Эта формула мне не внушает доверия. Т.к. мне почему-то попадались кол-во головок 32,64 и 255. Возможно ещё существуют 16 и 128. Про остальные значения я не уверен, что они разрешены. Но и не отрицаю. До сих пор ясной картины нету.
Сообщение отредактировал GetSmart - Jul 31 2011, 21:28
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 1 2011, 09:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GetSmart @ Aug 1 2011, 01:31)  Значит ли это, что объём диска ограничивается усечением последнего неполного цилиндра? (с учётом, вероятно, 255 головок) Нет, конечно. Руками Вы можете до разметки выставить, все, что угодно, главное кратно размеру кластера. Цитата(GetSmart @ Aug 1 2011, 01:31)  С этим ещё один прикол был связан. Я сделал копию 1 гигового винта на другой, большой. При изменении размеров разделов Acronis Partition-ом у меня начало разделов менялись кратно 255 головкам. Хотя в MBR и старого и нового винта стояло кол-во головок = 32. Точнее, в новом/большом стояло сразу после копирования один-в-один. После работы с Acronis оно поменялось на 255. Правильно, для систем с LBA CHS не имеет принципиального значения. Мне не совсем понятен практический аспект Вашего интереса к этому вопросу.
|
|
|
|
|
Aug 1 2011, 10:05
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(vvs157 @ Aug 1 2011, 14:03)  Правильно, для систем с LBA CHS не имеет принципиального значения. Мне не совсем понятен практический аспект Вашего интереса к этому вопросу. Один из главных вопросов - совместимость вверх-вниз. В частности, взятие старого винта от старой системы, переразбивка или другие работы с ним под виндой и установка этого же винта обратно в старую систему. Далее, почти то же самое, но с копированием малого винта на больший, опять же с обратной установкой. Т.к. доставать старые малые рабочие винты сейчас большая проблема, то проще и дешевле достать винт большего объёма. При этом возникают вопросы - а как поведёт себя старая система, на которой не используется LBA функции Int 13. Например MS-DOS 6.x или WIN95 в режиме DOS. Цитата(vvs157 @ Aug 1 2011, 14:03)  Нет, конечно. Руками Вы можете до разметки выставить, все, что угодно, главное кратно размеру кластера. Имелось ввиду не размер логического диска, а общий размер всех разделов на винте. Я, например, заметил усечение последнего цилиндра в последнем разделе. Поэтому подумал, что если в этот раздел включить последний неполный цилиндр, а в логическом диске сделать всё корректно, не вылезая за общий размер винта, то как поведёт себя система? Последний неполный цилиндр явно указывается на винтах <8Gb. Но и на винтах < 2TB он косвенно присутствует, если поделить общее число секторов всех разделов на 63 и на 255. Поэтому ошибается тот, кто утверждает, что их там нет. Даже Вики. Во всяком случае, без обязательных оговорок. Как и собственно упоминание CHS в вики без оговорок какого уровня эта CHS. Такое разгильдяйство в статьях меня откровенно достало.
Сообщение отредактировал GetSmart - Aug 1 2011, 10:54
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Aug 1 2011, 13:39
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GetSmart @ Aug 1 2011, 14:05)  Один из главных вопросов - совместимость вверх-вниз. В частности, взятие старого винта от старой системы, переразбивка или другие работы с ним под виндой и установка этого же винта обратно в старую систему. Проблем быть не должно. Очень старые винчестеры не всегда опознаются USB-IDE шнурками. Цитата(GetSmart @ Aug 1 2011, 14:05)  Далее, почти то же самое, но с копированием малого винта на больший, опять же с обратной установкой. Т.к. доставать старые малые рабочие винты сейчас большая проблема, то проще и дешевле достать винт большего объёма. При этом возникают вопросы - а как поведёт себя старая система, на которой не используется LBA функции Int 13. Например MS-DOS 6.x или WIN95 в режиме DOS. На очень старых системах винты >8G скорее всего вообще не опознаются - БИОС без EXT - они либо вообще не видятся БИОС'ом, либо показываются несуразные значения. Если БИОС правильно определил размер - то все будет работать. Цитата(GetSmart @ Aug 1 2011, 14:05)  на которой не используется LBA функции Int 13. Например MS-DOS 6.x или WIN95 в режиме DOS. DOS (тот, что в WIN95 OSR2) c LBA работать умеет, так как там есть уже FAT32. Про Win95 без OSR2 - не знаю, так как не было на чем испытывать, но так там и FAT16, и никаких "толстых" дисков.
|
|
|
|
Сообщений в этой теме
GetSmart Разбивка HDD Jul 30 2011, 10:26 zltigo QUOTE (GetSmart @ Jul 30 2011, 12:26) Как... Jul 30 2011, 10:46 GetSmart Цитата(zltigo @ Jul 30 2011, 15:46) В дан... Jul 30 2011, 11:29  zltigo QUOTE (GetSmart @ Jul 30 2011, 13:18) оно... Jul 30 2011, 11:35   GetSmart Цитата(zltigo @ Jul 30 2011, 16:33) BIOS ... Jul 30 2011, 11:37    zltigo QUOTE (GetSmart @ Jul 30 2011, 13:37) Ну ... Jul 30 2011, 11:43     GetSmart Цитата(zltigo @ Jul 30 2011, 16:43) Когда... Jul 30 2011, 11:50      zltigo QUOTE (GetSmart @ Jul 30 2011, 13:50) Объ... Jul 30 2011, 12:08       GetSmart Цитата(zltigo @ Jul 30 2011, 17:08) Ну и ... Jul 30 2011, 12:17        zltigo QUOTE (GetSmart @ Jul 30 2011, 14:17) Ник... Jul 30 2011, 12:24         GetSmart Цитата(zltigo @ Jul 30 2011, 17:24) Прежд... Jul 30 2011, 12:30          zltigo QUOTE (GetSmart @ Jul 30 2011, 14:30) ОК.... Jul 30 2011, 12:33           GetSmart Цитата(zltigo @ Jul 30 2011, 17:33) Тольк... Jul 30 2011, 12:38            zltigo QUOTE (GetSmart @ Jul 30 2011, 14:38) Пер... Jul 30 2011, 12:42             GetSmart Цитата(zltigo @ Jul 30 2011, 17:42) Сомне... Jul 30 2011, 12:49              zltigo QUOTE (GetSmart @ Jul 30 2011, 14:49) Всё... Jul 30 2011, 12:51               GetSmart Цитата(zltigo @ Jul 30 2011, 17:51) Упуст... Jul 30 2011, 12:54                zltigo QUOTE (GetSmart @ Jul 30 2011, 14:54) Пос... Jul 30 2011, 12:59                 GetSmart Цитата(zltigo @ Jul 30 2011, 17:59) Естес... Jul 30 2011, 13:08                  zltigo QUOTE (GetSmart @ Jul 30 2011, 15:08) Ваш... Jul 30 2011, 13:23                   GetSmart Цитата(zltigo @ Jul 30 2011, 18:23) Угу, ... Jul 30 2011, 13:29                    zltigo QUOTE (GetSmart @ Jul 30 2011, 15:29) Я н... Jul 30 2011, 13:51 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  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    zltigo QUOTE (GetSmart @ Jul 31 2011, 21:34) Вот... Jul 31 2011, 19:48      zltigo QUOTE (GetSmart @ Jul 31 2011, 21:51) В т... Jul 31 2011, 20:01        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               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
|
|
|