Обсуждение:Объём жёсткого диска
Эта статья выставлялась на удаление и была оставлена. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/7 июня 2009. Повторное выставление допустимо лишь при наличии аргументов, не рассмотренных в прошлых номинациях, при изменении обстоятельств вокруг предмета статьи или изменении правил Википедии, в противном случае повторная заявка будет быстро закрыта. |
Согласно принятому решению, на эту страницу перенесено содержимое страницы Ограничения на размер жёстких дисков персональных компьютеров. Действие выполнено по итогам обсуждения на странице Википедия:К объединению/21 сентября 2011. Список авторов интегрированных статей доступен через их историю правок. |
Хронология возникновения проблем с ёмкостью жёстких дисков.
правитьЗдесь в качестве обозначения:
"кБ" = 2^10 = 1024 Байт
"МБ" = 1024 кБ = 1024*1024 Байт = 1 048 576 Байт
"ГБ" = 1024 МБ = 1024*1024*1024 Байт = 1 073 741 824 Байт
"Мб" = 1 000 000 Байт, 1МБ = 1.05Mb
"Гб" = 1 000 000 000 Байт, 1ГБ = 1.07Gb
134Mb, год 1990-й.
правитьСамая старая проблема касается времён 100Mb винчестеров и больше для которых использовалась FAT12, для которой максимальным был раздел:2^12*32кБ = 134 217 728 = 134Mb (128МБ)
528Mb, год 1993-й.
правитьСамая первая, самая известная и самая серьёзная проблема, затронувшая CHS. Проблема была из-за того, что Int13h и IDE имели следующие ограничения на значение CHS:
C | H | S | |
---|---|---|---|
Int13h | 1 024 | 256 | 63 |
IDE | 65 536 | 16 | 255 |
Максимальный вариант, удовлетворяющий оба случая | 1 024 | 16 | 63 |
Значит наибольший установленный винчестер мог быть: 1024*16*63*512 = 528 482 304 = 528Mb (504МБ)
2.11Gb, год 1996-й.
правитьМногие BIOS не учли предыдущего опыта и добавили в BIOSе всего 2 бита на цилиндры. В итого получалось: 2^12*16*63*512 = 2 113 929 216 = 2.11Gb (1.97ГБ) Причём некоторые версии определяли только "часть" винчестера (например, 2.5Gb определялся как 425Mb), а некоторые просто зависали при автоопределении винчестера из-за неправильного перерасчёта головок.
2.15 Gb, год 1996-й.
правитьWindows 95 ("A", не OSR) использовала DOS-овскую FAT16 и потому наследовала все её проблемы - вышеописанное ограничение в 2.15 Gb на один раздел. У FAT32, применяемой Windows 95B OSR2 максимальный раздел: 2^32*32кБ = 17 042 430 230 528 = 17 042 Gb (15 872 ГБ)
3.28Gb, год 1996-1997-й.
правитьВ Phoenix BIOS (версий 4.03 и 4.04) была ошибка с определением винчестеров более 3.277Mb.
4.23Gb, год 1997-й.
правитьНе всем известное ограничение вытекающее из способов решения "проблемы 528Mb". Чтоб преодолеть барьер 528Mb BIOS могла использовать один из двух способов: "LBA assist translation" или "Bit shift translation ("Large" Mode)". Метод "LBA-трансляции" при наличии в системе LBA-винчестера для совместимости с ПО, использовавшим Int 13h, высчитывал значение CHS по следующему алгоритму:
Общее число секторов на диске, S_lba | 1 - 1 032 192 | 1 032 192 - 2 064 384 | 2 064 384 - 4 128 768 | 4 128 768 - 8 257 536 | 8 257 536 - 16 450 560 |
"Пересчитанное" число цилиндров, C | S_lba / (63*16) | S_lba / (63*32) | S_lba / (63*64) | S_lba / (63*128) | S_lba / (63*255) |
H | 16 | 32 | 64 | 128 | 255 |
S | 63 | 63 | 63 | 63 | 63 |
Максимальная ёмкость | 528Mb | 1.06Gb | 2.11Gb | 4.23Gb | 8.42Gb |
однако до появления LBA-винчестеров появилось много не поддерживающих LBA винчестеров ёмкостью больше 528Mb. Для работы с такими винчестерами использовался следующий пересчёт цилиндров:
Число цилиндров на диске, c | 1 - 1 024 | 1 024 - 2 048 | 2 048 - 4 096 | 4 096 - 8 192 | 8 192 - 16 384 | 16 384 - 32 768 | 32 768 - 65 536 |
Число головок, h | 1-16 | 1-16 | 1-16 | 1-16 | 1-16 | 1-8 | 1-4 |
Преобразованное число цилиндров, C | C=c | C=c/2 | C=c/4 | C=c/8 | C=c16 | C=c/32 | C=c/64 |
Преобразованное число головок, H | H=h | H=h*2 | H=h*4 | H=h*8 | H=h*16 | H=h*32 | H=h*64 |
Максимальная ёмкость | 528Mb | 1.06Gb | 2.11Gb | 4.23Gb | 8.47Gb | 8.47Gb | 8.47Gb |
в результате BIOS, использующие такую трансляцию для винчестеров 4.23Gb (и больше) и имеющие 16 головок, "переводили" их количество в 256. Однако DOS и Windows95 использовали только значения 0-255 и 256 головок воспринималось ими как "0".
7.93Gb, год 1997-1998-й.
правитьВ тех же что и в предыдущем случае BIOS, только более продвинутых, описанная выше проблема обходилась приравниванием числа головок к 15. В результате получалось не 256, а 240 дорожек и максимальный размер диска составлял: 1024*240*63*512 = 7 927 234 560 = 7.93Gb (7.38ГБ)
8.46Gb, год 1998-й.
правитьВышеописанное ограничение Int 13h. Правда, конфигурации с 256-ю головками не встречались, потому реальное ограничение: 1024*255*63*512 = 8 422 686 720 = 8.42Gb (7.84ГБ)
33.8Gb, год 1999-й, лето.
правитьПосле исправления в BIOSе "проблемы Int 13h", ограничивающей диски до 8.4Gb, схема адресации стала аналогичной ATA-интерфейсу:
В режиме CHS | В режиме LBA |
---|---|
С максимум = 2^16 = 65536 (16 бит) | 16+4+8=28 бит |
H максимум = 2^4 = 16 (4 бит) | |
S максимум = 2^8 = 255 (8 бит) |
Т.е. теоретически можно было работать с самыми большими дисками 137.4Gb. НО, при пересчёте цилиндров по старой схеме, 16 бит не хватит. Например, диск на 41.2Gb с конфигурацией 19 710/16/255, получал от винчестера LBA-значение количества секторов 80 416 800 шт. и при пересчёте по "стандартному" алгоритму с 16-ю головками и 63-мя секторами получалось: 80 416 800 / (16*63) = 79 778 цилиндра. 79 778 > 65 536 (2^16) и поэтому не помещалось в 16 бит. Соответственно использующийся алгоритм с 16-битным делением просто зависал из-за ошибки переполнения. Для решения проблемы нужно было заменить все инструкции 16-битного деления на 32-битные и добавить условие: если LBA-значение количества секторов диска превышает: 65 536x16x63 = 66 060 288 секторов = 33.8Gb (31.5ГБ), то количество секторов приравнивается к 255.
65.5Gb, год 2000-й, зима.
правитьНе все BIOS решили "проблему 32Gb" и в результате была исправлена лишь одна ошибка, связанная с переполнением при 16-битном делении. Дело в том, что для вывода на экран объёма винчестера использовался 16-битный регистр, объём выводился в мегаБайтах, итого максимальный диск мог быть: 2^16 - 1 = 65 535Mb = 65.5Gb (64ГБ). Позже для исправления этой проблемы было сделано следующее условие: до 64Гб - выводить ёмкость в мегаБайтах, выше - в гигаБайтах.
137.4Gb, год 2002-й.
правитьДиски достигли предела стандарта ATA. Для его преодоления нужно менять сам "интерфейс". Что, например, и предложил Maxtor в своей спецификации на UDMA133. --Mixabest 21:19, 24 января 2010 (UTC)
8.4 ГБ (512 байт даёт)
правитьСколько байт даёт? Мой Skype плагин в Гугл Хром v16 из кода делает телефонный номер! --ЗЕМЛЕРОЙКА 18:18, 22 декабря 2011 (UTC)
Возможно информация не соответствует действительности.
править"Максимальный размер диска (не раздела!), поддерживаемый MBR." Скорее всего MBR поддерживает диски емкостью более 2 TB. Судя по структуре Partition Table с помощью MBR можно создать два раздела, общим размером чуть менне 4 TB(точнее наверное 4 TB - 2*512). Например по этой ссылке с помощью MBR был размечен жесткий диск размером 3 TB. http://forum.ru-board.com/topic.cgi?forum=84&topic=3742 В частности в англовики есть "Sector indices have always begun with a 1, not a zero, and due to an early error in MS-DOS, the heads are generally limited to 255[citation needed] instead of 256. Both the partition length and partition start address are sector values stored as 32-bit quantities. The sector size is fixed at 512 (29) bytes, which implies that either the maximum size of a partition or the maximum start address (both in bytes) cannot exceed 2 TiB−512 bytes (2,199,023,255,040 bytes or 4,294,967,295 (232−1) sectors × 512 (29) bytes per sector). Alleviating this capacity limitation was one of the prime motivations for the development of the GUID partition table (GPT)."