Чем отличается Large от LBA и от CHS? Как lba пересчитать в мегабайты
Вопрос:
Может кто-нибудь объяснить чем отличается Large от LBA и от CHS? В зависимости от чего выбирать эти параметры? Или дайте ссылку где об это можно почитать.
Ответ:
LBA, Large, CHS — методы трансляции номеров секторов в винчестере. Раньше, когда жесткие диски были небольшими, обращение к сектору происходило следующим образом: Приложение (операционная система в частности) вызывает функцию 2 (чтение сектора) (или 3 — запись) прерывания BIOS int 13h и передет ей три координаты требуемого сектора — цилиндр (дорожка), головка, номер сектора на дорожке. Эти три параметра могли принимать значения 0-1023, 0-255, 1-63 соответственно дорожка, головка, сектор (если перемножить эти цифры мы получим 8 гб, емкость довольно большая и по сегодняшним меркам, но тяжело представить себе диск с такими параметрами). Эти диапазоны были заложены разработчиками BIOS еще самой первой IBM PC в далеком 1981 (кажется) году. Тогда эти ограничения не доставляли особых неудобств, поскольку самый емкий накопитель в 30 мегабайт имел 27 секторов на дорожке, 4 или 6 головок при 100-150 цилиндрах. Те кому было мало этих мегабайт ставили второй диск. Переданные координаты один к одному, без каких-либо преобразований и пересчетов загонялись в регистры контроллера диска. Вскоре появились IDE накопители, которые были более емкими и менее громоздкими. Аппаратные регистры их контроллеров позволяли адресовать 256 секторов, 16 головок и 65536 дорожек. Однако, реальные размеры дисков были еще далеки от этих цифр и поэтому при работе использовались те же самые функции BIOS с теми же самыми ограничениями. Алгоритм работы BIOS был таким же как и раньше — указанные координаты также засылались в контроллер и т.д. Такой метод адресации секторов сейчас называется прямой адресацией секторов или CHS (Cylinder-Head-Sector). Используется при необходимости подключить к современной машине старый диск, а также при необходимости запуска некоторых тупых программ. Если попытаться обратиться этим методом к винту емкостью выше 514 мб, то система увидит только первые 514 мб — причины — см. LBA. Со временем стало ясно, что физически невозможно было разместить в корпусе диска 256 головок, в то время, как увеличить кол-во цилиндров было гораздо проще и легче. Диски с максимальной емкостью в 514 неформатированных мегабайт не могли удовлетворить постоянно растущие запросы нового ПО и мультимедийных систем. Даже установка 2 или 4 дисков проблему не решала, с только отодвигала ее на некоторое время. Тогда был разработан ряд методов, позволявших обойти ограничение устарешего BIOS. Здесь и программные решения, вроде популярного в свое время ADM, и довольно экзотические аппаратные решения, когда один физический диск представлялся системе как 2, а то и 3 диска. Но все они имели свои недостатки и ограничения. Так, ADM сразу же «умирал», при малейшей порче MBR, а «раздваивающийся» диск не позволял подключить к себе slave накопитель. Единственный прижившийся метод — Large. Он применим для дисков, у которых число цилиндров между 1024 и 2048 и не поддерживающих LBA (см. ниже), но такие диски практически не встречаются сейчас. Этот метод «обманывает» систему передачи параметров BIOS, увеличивая в 2 раза число головок и во столько же раз уменьшая число цилиндров, тем самым загоняя его в рамки функций 2/3 и не изменяя емкость диска. В 1994 году появился стандарт LBA — Large (или Logic) Block Addressing, применяющийся и по сей день. LBA использует т.н. трансляцию секторов, при которой его реальные параметры отличаются от тех, которые видит система. Трансляция позволила решить и ряд других, чисто технических, внутренних задач. Например, проблема плохих секторов. Раньше такие места блокировались на уровне FAT, и никто не мог запретить программе, работающей на уровне секторов, писать в порченные места. Транслирующий контроллер автоматически выводит такие сектора из обращения, подставляя впесто них другие. Ни BIOS, ни ОС об этом никогда не знают. Еще одна особенность — когда-нибудь задавались вопросом — как умещаются в корпусе вашего диска толщиной 2 см те 16 головок, о которых он сообщает. Ответ прост — их там просто нет. В современных дисках чаще всего одна пластина (соответственно 2 головки), реже 2, еще реже — 3. Но на этой пластине огромное кол-во концентрических дорожек (цилиндров). А то, что выдает контроллер — так называемый виртуальный диск с нереальными параметрами. LBA адресует сектор не 3 координатами, а одной — логическим номером — также, как это делает DOS в своих прерываниях int25/26h. Это номер имеет длину 3*8+4=28 бит — соответственно max 2^28 секторов — сами пересчитайте в мегабайты. Максимальные параметры винт выдает в старой CHS схеме, т.е. например, диск имеет 16 головок, 63 сектора и 30000 цилиндров, причем сейчас меняется только число цилиндров, число головок и секторов практически всегда одинаково. Чтобы обойти то самое ограничение BIOS, используется алгоритм, такой же, как и в Large, т.е. деление цилиндров на 2, а головки *2, только здесь он работает не один раз, как в Large, а пока число головок не достигнет 256, либо число цилиндров не станет меньше 1023. Кол-во секторов не меняется. Вот и получается что-то типа 63 секторов, 256 головок и 790 цилиндров — полное соответствие ограничениям BIOS. При обращении к какому-то сектору, его 3 координаты пересчитывается в LBA номер, и он передается в контроллер. Если «сказать» BIOSу, чтобы он работал с большим винтом в Normal (CHS) режиме, то он использует первые 1024 цилиндра — мы получим те самые 514 неформатированных мегабайт, о которых говорилось выше. Работа с накопителями свыше 8 Гб проходит аналогично, поскольку LBA адресует гораздо больше 8 гб, только вместо старых добрых функций 2 и 3 используются другие, которые имеют менее жесткие ограничения на номера дорожек, головок и секторов. Павел
Вопрос: Запутался в гигабайтах
Запутался в гигабайтах гигабитах.
Имеется сервер с карточкой LSI SAS 9211-8i . К ней подключен ds3512.
На какой максимальной скорости они могут друг с другом общаться? В гигабайтах и гигабитах
Ответ: та той же странице таблица 2) там все скорости написаны в зависимости от дуплекса и количества линий)
те полка не упрется в производительность интерфейса? Гигабайт свободно прокачает?)
Вопрос: Перевел жесткий диск из gpt в mbr сторонней прогой, после перевода комп перестал читать его
Ребят нужна помощь. Вообщем перевел жесткий диск из gpt в mbr через прогу, без потери данных, чтобы под основной диск дать памяти немного. после перевода комп перестал читать его и требует для работы отформатировать его. Но я это сделать не могу, так как там важные данные остались. Пробовал назад перевезти тоже самое. Подскажи как вернуть все ну или хотябы прогу чтобы я смог эти данные прочесть и перекинуть на другое месте перед форматированием
Сообщение от dmitry911
Вообщем перевел жесткий диск из gpt в mbr через прогу , без потери данных, чтобы под основной диск дать памяти немного.
Через какую прогу? Договаривайте уж, коли начали.
Сообщение от dmitry911
Подскажи как вернуть все ну или хотябы прогу чтобы я смог эти данные прочесть и перекинуть на другое месте перед форматированием
Для начала покажите что видит DMDE в окне Разделы Возможно есть шанс восстановить разметку на месте, зависит от степени «глючности» той супер-проги, с помощью которой издевались над своими данными. Из прог для восстановления обычно рекомендую Rsaver (Free) и R-Studio.
Вопрос: Куда пропали гигабайты на жестком диске?
1) очень часто на форуме проскакивает вопрос: «Я купил жесткий диск на 1 терабайт, а система показывает что на нем 931 гигабайт, куда делись гигабайты? А может жесткий диск неисправен? Или меня обманули?» отвечаем: такая разница возникает в различном трактовании приставок «кило» «мега» «гига» «тера» (ну и так далее) производителями жестких дисков использующих
И двоичном представлении информации в компьютере являющиеся степенями двойки: 2^10 кило = 1024 байта 2^20 мега = 1048576 байта 2^30 гига = 1073741824 байта (хотя правильнее их было бы обозвать «киби» «меби» «гиби» (не смейтесь, данные приставки действительно но не прижились)) итак: терабайт, в понятии производителей жеских дисков: 1000000000000, начинаем делить: 1000000000000 /1024 = 976562500 килобайт 976562500 /1024 = 953674,3 мегабайт 953674,3 /1024 = 931.3 гигабайта. вот и весь фокус.
2) На многих дисках IDE предусмотрен режим «урезки» ёмкости до 32 Гб и включается такой режим специальной перемычкой, о назначении которых можно прочитать на наклейке HDD. Этот режим (32GB Clip) полезен в том случае, если материнская плата зависает при определении диска на начальном этапе старта. Соответственно, если перемычку снять — диск опять начнет определяться на свою родную ёмкость. эта информация не актуальна для SATA дисков. Приобретя IDE жесткий диск «с рук» проверьте, не установлена ли она. Или если внезапно диск «урезался» до этого размера — проверьте не подшутил ли кто над Вами.
3) еще один вопрос, тоже довольно старый, но все же: Когда я подключаю винчестер объемом 250GB к моей матплате ASRock , операционные системы Windows® 2000 или XP определяют только 128 GB или 137GB. Как мне решить эту проблему? ответ: импортировать в реестр такой ключик и перегрузиться, конечно.
4) еще одна причина по которой видимая емкость жесткого диска может отличаться от паспортной: Host Protected Area: изменение физического объема диска
Можно ли превратить 120 гигабайтный диск в 20 гб? Конечно да — например создать на нем один раздел на 20 Гб, а остальное не использовать. А чтобы он в BIOS»е при этом определялся тоже на 20? Но зачем? — спросите Вы. Например, для защиты информации от вирусов или от случайной порчи/удаления. Или, если старый BIOS зависает на автодетекте винта, превышающего 32 Гб, а перемычек, ограничивающих объем, производитель не предусмотрел. Или (не дай Бог), на винчестере появились бэд-блоки, в самом конце, и их надо скрыть от операционной системы, чтоб она даже не лезла туда при форматировании. В общем, вариантов много.
Host Protected Area — это уменьшение количества доступных физических секторов на жестком диске, с соответствующей коррекцией паспорта диска. Т.е. диск, обрезанный HPA, будет определяться на меньший (по сравнению с заложенным производителем) объем, что сделает отрезанную часть недоступной ни ОС, ни BIOS. Соответственно, и другие программы, например форматирования и проверки, не смогут получить доступ к скрытой части. Обрезание диска происходит всегда с конца, т.е. с помощью HPA нельзя вырезать произвольную область в середине, и нельзя сдвинуть начало диска. Как и в случае с AAM, результаты HPA сохраняются после выключения питания.
5) еще одна нашумевшая в свое время проблема — так называемая «муха ЦЦ», сильно подорвавшая доверие к жестким дискам марки Seagate Barracuda
Подозрения начали появляться ещё в декабре прошлого года, когда в сервис-центры стали всё чаще поступать диски Seagate серии 7200.11 с одной и той же симптоматикой — при включении компьютера винчестер не определяется вообще или же определяется, но с объёмом 0 Гбайт. При этом и электроника, и механика диска совершенно исправны. Как выяснилось, проблема заключается в так называемой таблице транслятора, отвечающей за пересчёт реальной физической адресации диска в логическую — из-за ошибки в прошивке дисков эта таблица может разрушиться, что и приведёт к описанным выше симптомам. При этом все пользовательские данные на диске остаются в целости и сохранности, но для компьютера более недоступны.
(цитата датирована январем 2009 года) проблема коснулась моделей Seagate Barracuda 7200.11, ES.2 и DiamondMax 22. В настоящее время изредка но встречается. Если Вы умеете держать в руках паяльник, то вполне можете с помощью нехитрого устройства изгнать муху ЦЦ. Я не стану приводить здесь весь механизм лечения, он сейчас элементарно разыскивается на просторах инета.
В группе риска находятся модели: ST3500320AS, ST3500620AS, ST3500820AS, ST3640330AS, ST3640530AS, ST3750330AS, ST3750630AS, ST31000340AS с прошивками AD14, SD15, SD16, SD17, SD18, SD19 STM3500320AS, STM3750330AS, STM31000340AS, STM31000333AS с прошивками MX15 и старше ST31500341AS, ST31000333AS, ST3640323AS, ST3640623AS, ST3320613AS, ST3320813AS, ST3160813AS STM31000334AS, STM3320614AS, STM3160813AS ST3250310NS, ST3500320NS, ST3750330NS, ST31000340NS
Здесь можно проверить свой диск на необходимость обновления Firmware. или програмка от сигейта:
Бывают конечно и другие причины пропадания или изменения емкости жестких дисков и флешек, но о них несколько позже.
Сообщение от magirus
терабайт, в понятии производителей жестких дисков: 1000000000000
Совершенно верно. в средние века производителей сожгли бы на костре за подобную ересь
Вопрос: двухканальный режим на планках 2+1 гигабайт
Вопрос, я догадываюсь, нубский. Но, тем не менее, ответа на него прямым текстом я нигде не видел.
Как именно встроенное (на мать) видео забирает себе часть оперативной памяти?
Поясню. Имеется старый компьютер с 3 (2+1) гигабайтами оперативки. Хотелось бы немного его бесплатно ускорить. Без обновления оборудования.
И первое, что мне пришло в голову — увеличить размер выделенной для встроенного видео части памяти. По умолчанию выделяется 256 мегабайт. BIOS позволяет выставить значения, кажется, до 2 гигабайт. Но такой древней видеокарте, как Radeon HD3100 (чипсет 780V) столько памяти ни к чему. Да и винде останется только 1 гиг, что мало. Решил выделить 1 гиг. И вот тут и возник собственно вопрос: если я выделю из 2 гиговой планки 1 гиг для видео, смогу ли я включить двухканальный режим памяти? Ведь по сути обе планки станут 1-гиговыми. Или всё происходит наоборот: из уже работающй в двухканальном режиме пары планок выделяется память для видеочипа?
Ответ: komandor, спасибо за развёрнутый ответ
Вопрос: 3 гигабайта в GTX1060 , так уж страшно?
Вообщем, как мы знаем GTX1060 есть в двух вариациях: 3 гигабайта и 6 соответственно. Так вот, помимо памяти был порезан чип. Отключили какой-то кластер, я на самом деле понятия не имею, что это, т.к. для меня «цифырки и букафки» главное. Посмотрел видео и ясно видно, что именно объём памяти решает, т.к. в том же Tomb Raider при разгрузке памяти в закрытых локациях ФПС почти сравнивается. А в играх попроще (GTA , Witcher)в плане памяти) он и вовсе в 90% случаев одинаков. Так вот, есть ли резон брать 3 гигабайта для таких игр? Потому что в Лару я всё равно играть не буду, ни разу даже не знакомился. Как ни грустно (хотя и весело) , но через год Volta увидит свет и унизит Pascal так, как случилось с Maxwell. При более высоких характеристиках, и меньшей цене. Пример тому опять же GTX1060 , которая почти что опустила GTX980. Ну и стоит наверное огласить самое главное. Разница составит 3-4 тысячи. Прошу к размышлению и осмыслению данной ситуации, т.к. каждое новое поколение даёт прирост в геометрической прогрессии, да и карту придётся продавать, а 3 гигабайта будет сбагрить легче, ИМХО.
Ответ: вот вам вариант еще лучше, 1050ti с 4 гигами памяти. еще дешевле
Вопрос: Из 4х гигабайт (3 планки: 2,1,1) оперативки DDR2 доступно только 2.74Gb
(windows7*64bit). Может из-за того что одна АВ? 1 гигабайт DDR2 6400 800 Hynix HYMP112U64CP8-S6 AB (1R *8PS2-6400U-666-12) 1 гигабайт DDR2 6400 800 Hynix HYMP112U64CP8-S6 AB-С (1R *8PS2-6400U-666-12) 2 гигабайт DDR2 Hynix HYMP125U64CP8-S6 AB-C (2R *8PS2-6400U-666-12) тайминги у всех трех одинаковые 6-6-6-18 материнская плата asus P5B-V 4 слота (2 желтых 2 черных)
Выдержка из мануала
DIMM support: A — Supports one module inserted in any slot as Single-channel memory confiuration. B — Supports one pair of modules inserted into eithor the blue slots or the black slots as one pair of Dual-channel memory confiuration. C — Supports 3 modules inserted into both the blue and black slots as two pairs of Dualchannel memory confiuration.
2.4 System memory 2.4.1 Overview The motherboard comes with four Double Data Rate 2 (DDR2) Dual Inline Memory Modules (DIMM) sockets. A DDR2 module has the same physical dimensions as a DDR DIMM but has a 240-pin footprint compared to the 184-pin DDR DIMM. DDR2 DIMMs are notched differently to prevent installation on a DDR DIMM socket. The figure illustrates the location of the DDR2 DIMM sockets:
2.4.2 Memory confiurations You may install 256 MB, 512 MB, 1 GB, and 2 GB unbuffered non-ECC DDR2 DIMMs into the DIMM sockets.
You may install varying memory sizes in Channel A and Channel B. The system maps the total size of the lower-sized channel for the dual-channel confiuration. Any excess memory from the higher-sized channel is then mapped for single-channel operation. Always install DIMMs with the same CAS latency. For optimum compatibility, it is recommended that you obtain memory modules from the same vendor. If you install four 1 or 2GB memory modules, the system may only recognize less than 3GB because the address space is reserved for other critical functions. This limitation appears on Windows® XP 32-bit operation system which does not support Physical Address Extension (PAE). If you install Windows® XP 32-bit operation system, a total memory of less than 3GB is recommended. The total memory may has 8MB reduction under Single Channel mode, and 16MB reduction under Dual Channel mode because the address space is reserved for Intel® Quiet System Technology. Due to chipset limitation, double x16 memory modules or memory modules with 128MB chips are not supported on this motherboard.
Notes on memory limitations Due to chipset limitation, this motherboard can only support up to 8 GB on the operating systems listed below. You may install a maximum of 2 GB DIMMs on each slot, but only DDR2-533 and DDR2-667 2 GB density modules are available for this configuration. 32-bit 64-bit
Some old-version DDR2-800/667 DIMMs may not match Intel®’s On-Die-Termination (ODT) requirement and will automatically downgrade to run at DDR2-533. If this happens, contact your memory vendor to check the ODT value. Due to chipset limitation, DDR2-800 with CL=4 will be downgraded to run at DDR2-667 by default setting. If you want to operate with lower latency,
Due to chipset limitation, DDR2-667 with CL=3 will be downgraded to run at DDR2-533 by default setting. If you want to operate with lower latency, adjust the memory timing manually.
Вопрос: После использования «Acronis Disk Director 12» потеряно несколько гигабайт
Я понимаю, что сделал глубочайшую ошибку, использовав эту не хорошую программу. Надо было перенести с диска D на C, гигабайты, но на втором этапе много ошибок вылезло. И комп перезагрузился, гигабайты, которые я хотел перенести с D потерялись в ныбитье, C остался с прежним объёмом. У меня пропало довольно много гигов. Помогите их вернуть, видел подобную тему, но не чего толком не понял. У меня Windows 8.1×64, если ещё что нужно я предоставлю, только помогите прошу!
Ответ: Насчёт ПО согласен, я думаю идеальные программы найти тяжело(скорее всего и создать тоже), по сути смотришь на них они одинаковые, а вроде и нет, повезёт, если программа что-то сделает плохого, но не сильно плохого. У некоторых я читал после акрониса вообще диск D открываться перестал, благо у меня подобного не случилось, в компьютерной сфере жёстких дисков я не разбираюсь, и мне надо было найти то, что сделает всё за меня, из этого вышел плохой опыт, но позже оказалось, что он мне помог, раследывая эту проблему что-то я таки узнал. Я много знаю о компьютерах, но компьютер знать полностью невозможно и повышать опыт, пусть и опасными способами, уж точно не помешает. Правда. главное не переборщить с опасностью)))
Вопрос: Скорость диска 64 мегабайта. Здоровье 25% еще с 2012 года. Диск жив до сих пор
Ребят помогите мне советом если не трудно. Я в жестких дисках не разбираюсь, по этому мне важно понять логику происходящего. Давайте начнем по порядку. Что и как у меня было я помню прекрасно.
В 2008 собрал ПК. Там был хард на 320 гб от Сигейт. В 2009 я купил за 5000 рублей диск на 1500 гб от Сигейт, модель ST31500341AS. С 2008 по 2012 я компьютер не трогал, никакими ПО не пользовался.
Когда в 2012 залез в тот же Crystal Disk Info, там было много тревог и надпись Warning. Ну и что мне с этим делать, я просто забил. Затем я воспользовался разными программами для жесткого диска, из сборника (реаниматора). Так вот все они писали что состояние «здоровья» диска 25%, того диска что на 1500гб. Тот диск что на 320гб, его здоровье 30%. Прогнозы этих программ были очень плачевными, дискам оставалось жить от 2 месяцев до 6 (точно не помню).
Так вот хотите прикол: Тот диск что на 1500 гб, я использовал его как файловое хранилище для ТОРРЕНТОВ. С 2009 года по 2014, с 12 часов до 2:00 ночи, у меня был всегда включен торрент клиент, который раздавал торренты. Иногда раздач было 30, бывало и 60 и 90 и 120 даже. Раздачи типа 15 сезонов «Разруштели легенд», 100 гигов раздача, но это самая большая. Напомню, этот диск «здоров» на 25%.
Тот диск что системный, для ОС и игрушек, он на 320 гб. С 2008 года на нем никогда не было ни одного торрента. Этот диск здоров на 30%.
Оба диска живы до сих пор, в 2017 году! Так вы спросите а какого ты тогда нам пишешь?
Мы с отцом проводили тест скорости диска, Отец сильно удивился, почему мой диск выдает 64 мегабайта на запись и чтение. К примеру у моего Отца диск 2009-2010 года, легко выдает 180 мегабайт. Отец мне объяснил что все что меньше 100, это стандарт каменного века. Что проблемы у меня в системе.
Добавлено через 9 минут p.s Забыл кое что упомянуть. Я в целях профилактики, в 2013 году, запустил MHDD. Я сначала полностью стер оба диска, затем в каждый сектор каждого диска записал единицу, что бы в конце посмотреть на некий «ПИНГ», пинг каждого сектора. Так вот медленных и плохих секторов на диске 320 не было. На диске 1500 плохих не было, медленных от 3-5. Диску не нужна забота, Прошивка сама управляет битыми секторами. дефрагментацию никогда не делал. Зачем если она в принципе не бывает больше 20-25%.
Ответ: Что Вы хотите услышать в ответ на Ваше эссе? Смерт жесткого диска так же непредсказуема как смерть человека.
Вопрос: Пропали гигабайты
Столкнулся с такой проблемой: У меня hdd 1tb(а точнее 931гб) transcend storejet 25d3. Он заполнен на 110 гигабайт, и когда я пытаюсь записать на него что-нибудь более 4 гб он пишет что нет свободного места и предлагает очистить его, хотя свободно ещё 821 гбт. Можете подсказать в чём проблема.
В далёкие 80-е года прошлого тысячелетия;), во времена уже, наверное, мало кому известного MFM и RLL, для доступа к винчестеру надо было знать (и указывать) его «геометрию». Под «геометрией» понимается «физическое» количество цилиндров (дорожек) («C » — от Cylinders), головок («H » — от Heads), и секторов на дорожку («S » — от Sectors). Т.е. любой блок информации на винчестере характеризовался тремя переменными: C, H и S (отсюда — CHS-адресация ). И надо отметить, что эти величины всегда были «реальными». Все современные же винчестеры имеют принципиально другую плотность информацию и, например, даже такая, на первый взгляд, «логичная» величина как S — количество секторов на дорожку, даже близко не соответствует указанному на этикетке винчестера (и при детекте в BIOS) значению. В реальности количество секторов на дорожку — величина переменная и уменьшается по мере приближения к последней (крайней) внутренней дорожке. Поэтому для преодоления этой неоднозначности контроллер винчестера «сообщает» BIOS-у не реальные значения, а «удобоваримые» для него параметры, переводя уже поступившие от него «координаты» в «реальные». Например, винчестер может содержать две пластины и, соответственно, четыре головки, а контроллер «скажет» биосу о 16-ти имеющихся головках. Мало того, биос, для «удобоваримости» уже операционной системы, может яростно «утверждать», что на винчестере вовсе не 16, а целых 255 головок. В свою очередь ОС к проблемам всех этих «пересчётов» будет добавлять ещё и ограничения на объём раздела из-за использования конкретной файловой системы (например, FAT16). Именно из-за такой многогранности проблемы многие люди так часто спорят, путая и смешивая различные по происхождению проблемы. Попробуем прояснить все аспекты проблемы.
Чтобы разобраться с «ограничениями» нужно достаточно чётко представлять всю структуру работы с диском: от приложения до самих головок чтения/записи. Схематически процесс записи можно представить в следующем виде:
Рассмотрим «форматы» каждого из этапов.
1. Винчестер «физически» состоит из одной или нескольких пластин, покрытых магнитным слоем. С обеих сторон пластины (иногда — только с одной) располагаются головки чтения/записи информации. Информация записывается на «дорожки», которые в случае нескольких головок образуют цилиндр. Дорожка разбита на секторы, каждый из которых и представляет тот минимум блок информации, которую можно записать на диск. Стандартный размер сектора — 512 байт. Как уже говорилось, самые первые винчестеры имели постоянное количество секторов на дорожку на всём диске. Однако это не позволяло эффективно использовать всю поверхность диска — каждая следующая внешняя дорожка длинней внутренней, соответственно, на ней может поместиться больше информации. Поэтому современные винчестеры разбиты на «зоны», т.е. совокупности соседних дорожек с одинаковым количеством секторов на дорожку. Именно поэтому график линейного чтения винчестера (исправного) выглядит в виде нисходящих ступенек.
2. Контроллер винчестера управляет работой головок чтения/записи. Он переводит команды «интерфейса» в электрические сигналы на головках. Интерфейсы бывают разные: «доисторические» MFM и RLL, современные IDE (ATA) и SCSI, «будущие» SerialATA. Нас, естественно, интересует IDE-винчестеры, потому и рассмотрим интерфейс ATA. Как уже, опять же, говорилось — «исторически» сложилось использование CHS-адресации. При этом в случае ATA:
Все современные винчестеры используют LBA-адресацию. В этом случае номер каждого сектора представляет собой 28-битное число и максимальным диском для LBA будет:
3. BIOS по вышеописанной «иерархии» находится между ОС и контроллером винчестера. В его функцию входит перевод команд запроса на работу с диском от ОС в команды контроллера винчестера. Большинство программного обеспечения использует CHS-адресацию. Поэтому с появлением «LBA-винчестеров», чтоб не переписывать имеющееся ПО, поступили следующим образом. Биос в случае определения LBA-винчестера, переводит его параметры в CHS-версию и ОС «думает», что работает с CHS-винчестером. Т.е. 28-битное значение LBA «раскладывается» следующим образом — «цилиндрические» 16 бит + «секторные» 8 бит + «головчатые» 4 бита (итого 16+8+4=28). Или конкретно:
биты 0-7 — сектор (+1шт., т.к. адресация CHS начинается с 1-го, а не 0-го сектора)
биты 8-15 — цилиндр, младший байт
биты 16-23 — цилиндр, старший байт
биты 24-27 — головка
При получении запроса на работу с диском, биос переводит для контроллера это значение обратно в LBA:
LBA = [(цилиндр * число головок + номер головки) * количество секторов на дорожку] + (номер сектора — 1)
4. В далёкие, ещё DOS-овские времена не подозревали, что когда-то ёмкость винчестеров будет измеряться десятками и даже сотнями гигабайт. Ведь самый богатый в мире человек (и самый проклинаемый компьютерной братией в одном флаконе;) тоже как-то рассуждал «о бесконечности» 640кБ оперативной памяти. В результате для адресации CHS в DOS (Int 13h ) была выбрана следующая «трёхбайтовая» система:
один байт — для младших битов значения цилиндров (0-7 биты)
один байт — для двух старших бит значения цилиндров (8-9 биты) и шесть битов значения сектора
один байт — для значения головок
Итого получалось, «C» = 0-1023, «H» = 0-255, «S» = 1-63, соответственно, максимальным винчестером, с которым способен работать DOS будет:
5. Приложения используют определённую файловую систему, которая также имеет свои ограничения. Например, в случае FAT16 объём раздела зависит от величины кластера и по максимуму может быть 2^16 кластеров. Кластер — это совокупность секторов и его стандартное максимальное значение — 64 сектора («нестандартные» 128 и больше позволяют делать лишь linux-образные утилиты), т.е. 32кБ. Т.е. максимальный раздел для FAT16:
Теперь, зная все эти моменты, попробуем восстановить хронологию возникновения проблем «больших» дисков.
Самая старая и, наверное, уже мало кому известная проблема касается времён 100Mb (не Gb!) винчестеров и больше. Использовалась тогда FAT12, для которой максимальным был раздел:
Способ решения простой — переход на FAT16 (для этого-то он и создавался).
Самая первая, самая известная и самая серьёзная проблема, затронувшая CHS. Дело в том, что все первые биосописатели не рассчитывали, что когда-то в их детища кто-нибудь попытается засунуть такие «гигантские» винты. Проблема была из-за того, что Int13h и IDE имели следующие ограничения на значение CHS:
Решение проблемы имело три пути. Первый — это форматирование «слишком большого» винчестера с помощью встроенной в биос утилиты на 528Mb. Такой способ был достаточно «распространённым» в своё время (из-за неопытности пользователей;). Второй — использование специального ПО — disk managers (типа OnTrack, EZ-Drive и др.), заменяющие подпрограммы BIOS для работы с дисками своими собственными. Как правило, для работы такие программы модифицировали MBR диска. Однако это не позволяло корректно работать с диском при загрузке с другого винчестера (или даже дискеты), а также возникали большие проблемы с установкой нескольких ОС на такой диск. Ну, и третий — обновление биос. Однако флэш-память для микросхем биоса не была тогда распространена, да и интернет не был развит, соответственно и прошивок никто не делал и не выкладывал. Поэтому из-за практической малоэффективности всех этих способов, плату нужно (было) просто заменить на «поддерживающую LBA».
Многие биосописатели не учли предыдущего опыта и добавили в биосе всего 2 бита на цилиндры. Итого получалось:
При чём некоторые версии определяли только «часть» винчестера (например, 2.5Gb определялся как 425Mb), а некоторые просто зависали при автоопределении винчестера из-за неправильного перерасчёта головок.
Решение проблемы — обновление биос (либо использование disk managers ).
Только появившаяся Windows95 («A», не OSR) использовала DOS-овские FAT16 и потому наследовала все его проблемы — вышеописанное ограничение в 2.15Gb на один раздел.
Решение проблемы — установка Windows95B (OSR2), которая позволяла использовать FAT32. У FAT32 максимальный раздел:
В старых версиях Phoenix BIOS (v. 4.03 и 4.04) была ошибка с определением винчестеров более 3.277Mb.
Решение проблемы — обновление до версии 4.05 и позже.
Не всем известное ограничение, оно вытекает из способов решения «проблемы 528Mb» . Так вот, чтоб преодолеть барьер 528Mb биосы могли использовать один из двух способов: «LBA assist translation» и «Bit shift translation («Large» Mode)» . Метод «LBA-трансляции» при наличии в системе LBA-винчестера для совместимости со старым ПО (Int 13h ) высчитывал значение CHS по следующему алгоритму: