Есть ли решение для двойных перегородок, которые растут навстречу друг другу?

314
GxFlint

Принимая форму, как программы используют свою доступную память. С кучей и стеком, начинающимися в противоположных концах адресного пространства и затем растущими навстречу друг другу.

Есть ли подобное решение для разметки диска?

Как и определение двух разделов на диске, первый раздел определен как обычно, но второй с его началом определен как конец диска, а его конец определен как конец первого раздела.

Это позволило бы мне определить маленький первый раздел и перераспределить его размер во второй раздел, так как второй раздел был бы больше и его конец обычно не содержал бы никаких данных.

-2
* «Есть ли подобное решение для разметки диска?» * - Яблоки и апельсины. ОЗУ используется в качестве энергозависимого хранилища, тогда как диск является запоминающим устройством и должно быть энергонезависимым. Просто не существует динамического размера разделов диска или (энергонезависимых) файловых систем. sawdust 6 лет назад 0
Ну, в некотором роде - APFS динамически распределяет размеры томов внутри контейнера. Tetsujin 6 лет назад 0
@Tetsujin - Хорошо, поэтому Apple сделала что-то странное с другим уровнем выделения для * «томов в формате APFS» *. Но для разделов MBR / GUID я уверен, что мой комментарий точен. Хочу отметить тег `windows-10`. sawdust 6 лет назад 0
Потенциально может быть сделано с использованием стороннего программного обеспечения - https://www.paragon-software.com/home/apfs-windows/ - Я на самом деле не предлагаю его в качестве решения, просто упомяну, что один очень новый метод разделения, кажется, действительно добиться чего-то похожего на то, что просит ОП. Tetsujin 6 лет назад 0
@Tetsujin * «Возможно, это можно сделать с помощью стороннего программного обеспечения» * - Это программное обеспечение четко указывает, что оно обеспечивает доступ только для чтения из Windows к APFS. sawdust 6 лет назад 0
Мех ... хорошо, тогда я буду придерживаться моего Mac с его потенциалом, чтобы сделать все вышеперечисленное;) Tetsujin 6 лет назад 0

1 ответ на вопрос

1
cybernard

Нет, не совсем так, как вы себе это представляете.

Windows 10 создаст несколько небольших разделов на передней панели. Особенно, если вы используете UEFI.

Однако вы можете создать C: меньше, чем весь диск. Оставьте столько свободного места, сколько пожелаете. Кроме того, вы можете расширить (а в некоторых случаях даже сжать диск) диск c: из управления дисками в Windows 10. Эти параметры имеют некоторые ограничения.

Вы также можете создать раздел в конце диска, но он не будет работать так, как вы предполагаете.

Конец будет в конце, а начальный сектор будет в меньшей позиции. Кроме того, чтобы расширить диск, вам необходимо переместить все содержимое обратно на желаемый объем в ГБ, а затем расширить раздел до свободного пространства.

Есть автономное программное обеспечение для создания разделов, которое позволит вам перемещать и изменять размеры разделов по желанию.

Однако ни одно из существующих решений не позволяет разделу работать в обратном направлении.

Это означает, что вам придется написать код самостоятельно и провести его тщательное тестирование, чтобы убедиться, что он не вызывает потери / повреждения данных. Есть неиспользуемый тип раздела, который вы можете временно использовать на этапе разработки, но это годы работы. Вы должны будете убедить существующих заинтересованных лиц позволить водителям связать ваши драйверы с их ОС.

Будет ли это также верно, если бы второй раздел был разделом Linux? Я думаю, что было бы «проще» заставить драйвер хранить данные «задом наперед» GxFlint 6 лет назад 0
Было бы проще спроектировать и реализовать. Ваша единственная надежда на более простую реализацию - изучить ассемблер и создать прошивку для жесткого диска. Предположим, у вас есть диск, начинающийся с 700-метровых секторов и заканчивающийся на 950-метровом секторе. Вы должны взять логический сектор 0 (в нашем случае 700 м), а если сектор> 700 м, применить специальную математику (950 м (логический сектор)). Далее вам придется вычислять логический сектор #, вычитать и преобразовывать обратно в физический сектор. и затем отправьте обратно содержимое исправленного номера сектора. Наряду с тщательным тестированием, чтобы убедиться, что он всегда работает правильно. cybernard 6 лет назад 0
Практически безнадежно тогда: P Но это наверняка было бы хорошей особенностью. Спасибо GxFlint 6 лет назад 0
@GxFlint Если вы не подружитесь с программистом на ассемблере. Для доступа к прошивке жестких дисков требуется только JTAG-штекер. https://www.malwaretech.com/2015/04/hard-disk-firmware-hacking-part-1.html cybernard 6 лет назад 0
@cybernard * "если сектор> 700 м применять специальную математику (950 м (логический сектор))" * - Ваша дешевая схема работает, только если она ограничена доступом к одному сектору (и на самом деле даже не требует взлома прошивки жесткого диска, поскольку это можно сделать в драйвере). (Это от кого-то, кто сделал прошивку контроллера диска.) Современные операционные системы используют чтение / запись нескольких последовательных секторов одновременно для повышения пропускной способности. Только использование доступа из одного сектора приводит к катастрофическим потерям производительности. sawdust 6 лет назад 0
@sawdust Доступ к одному сектору был бы плохим. Однако, если ваш буфер содержит 100 секторов, вы вычитаете еще 100 секторов, а затем записываете 100 секторов в пакете, как всегда. Потребовалось бы больше математики, чтобы на самом деле это заработало, но с достаточным количеством времени это можно было бы сделать. если> 700 м (950- (физический сектор-700 м)) - () / 512 (или 4096 зависит). cybernard 6 лет назад 0
* "... тогда запишите 100 секторов в серии, как вы всегда делаете." * - Неверно! Существует проблема порядка секторов: все в компьютерной системе ожидает определенного порядка секторов. Это то, что должен решить доступ к одному сектору, иначе вы выполняете много переупорядочений путем копирования в память. Это та же самая проблема одновременного обращения с источниками порядка байтов liitle-endian и big-endian. Вы должны были держать свой ответ простым и понятным. Вы углубляетесь в хак, когда не понимаете * очевидных * ловушек. sawdust 6 лет назад 0

Похожие вопросы