Почему Оперативная память не имеет никакой схемы выделения разделов?

Другой способ спросить это был бы:

"почему Жестким дискам, Перьевым Дискам и SSD нужна схема выделения разделов, и RAM не делает?"

Просто пытаясь понять лучше, как работают все штуки памяти.

3
задан 09.03.2011, 02:35

4 ответа

Ну, проблема немного более сложна.

Во-первых, предположение, выраженное в вопросе, является ложью. Жестким дискам и флэш-памяти на самом деле не нужны разделы вообще! Можно просто записать необработанные данные по жесткому диску и затем считать его назад, и он будет хорошо работать. Некоторые относительно простые компьютерные системы не используют разделы даже сегодня, потому что нет никакой потребности использовать их. Например, у меня есть прямо здесь прямо сейчас на моем столе компьютер, который основан на микроконтроллере ATmega 162, и он использует флэш-память, прекрасную без разделов.

В основном то, что делают разделы, включают разделение трудовых обязанностей среди разработчиков системы. На моих 162 я должен знать, где каждый бит данных хранится и сколько раз каждая ячейка флэш-памяти, к которой получают доступ, таким образом, я могу реализовать выравнивание износа. Чтобы сделать это, мне даже не нужны файлы. Проблема однако состоит в том, что мой миниатюрный компьютер имеет только 16 кибибайт флэш-памяти и что суммой могут управлять комментарии ручного и исходного кода. Это похоже на наличие стола с единственной секцией. Я могу поместить что-либо там, и будет легко достигнуть и получить доступ.

На большой компьютерной системе, такой как сегодняшние настольные компьютеры, программное обеспечение является продуктом работы тысяч программистов, работающих отдельно. У них должен быть некоторый способ хранить данные, и вот почему нам нужны файлы и разделы. Когда у нас есть они, программист может сфокусироваться только на данных, с которыми он должен работать и не должен волноваться о повреждении других данных. Он может позволить программистам, работающим над беспокойством программирования файловой системы о физическом устройстве хранения данных данных. Для продолжения моего примера секции это похоже на наличие системы складов и попытки найти один единственный объект, если у Вас есть сотни тысяч объектов в запасе. Таким образом, в то время как Вы могли просто достигнуть простой секции и получить карандаш, например, в складском случае, карандаш будет на складе 3, раздел P, полка 273, уровень 3, поле 5.

Я надеюсь, что сделал это более ясным, почему мы используем разделы, даже если нам на самом деле не нужны они.

Теперь перемещаться в RAM. Также неверно, что нет никаких разделов в RAM. Основной причиной, почему мы используем разделы, является организация, и RAM организована также. В случае RAM, однако, это - ядро системы, которое решает, куда каждый бит информации собирается пойти, и это отслеживает использование пространства.

Давайте сравним, как работает программа на моем простом ATmega 162 и как работает программа в современной операционной системе как Windows. На 162, программа предварительно запрограммирована с адресами ячеек памяти, которые она собирается использовать, чтобы хранить данные. С тех пор 162 только имеет одну программу, я не должен волноваться о перезаписи данных, используемых другой программой или о выделении памяти. Я могу просто записать то, что я хочу в каждый элемент памяти, и это останется там, в то время как компьютер работает.

С другой стороны, в Windows у нас может быть большое количество программ, работающих одновременно, и все они записали бы и считали бы данные в и от памяти. Это - мы, мы не можем позволить отдельным программам непосредственно получать доступ к элементам памяти (и то, что программист должен был бы знать, как получить доступ к памяти на том конкретном компьютере и сколько RAM, которую компьютер имеет и так далее. В этой точке мы возвращаемся к тысячам по сравнению с одним обсуждением программиста.). Вместо этого когда каждая программа запускается, ядро выделяет память для нее и к программе, выглядит, как будто это - единственная программа, работающая на компьютере. Ядро там, чтобы удостовериться, что наша программа не пытается считать или записать память, выделенную в другие программы и что это не пытается выполнить память, отмеченную как данные и что это не приносит всю систему в опасность. Так в основном в Windows и многих много других современных операционных систем каждая программа получает свой собственный раздел RAM. Это - также интересный o, отмечают, что в системах на 32 бита, каждая программа могла взять только до 2 гибибайт RAM, потому что это было верхним пределом размера "раздела".

Я хотел бы сделать маленькое отклонение здесь. Существуют некоторые программы, которые повреждены разделами в RAM. Например, были программы, названные тренерами, которые позволят обманывать в компьютерных играх. Они работали путем нахождения ячейки памяти, где игра хранит свои данные на, например, количестве жизней или здоровья, и затем они непосредственно получили бы доступ к данным и изменили бы их. С другой стороны, у нас также были вирусы который работавший путем попытки получить доступ к памяти, используемой важными системными службами и повреждения ее, чтобы позволить им сделать свои низкие дела.

Другой вещью, стоящей засаливания, является раздел подкачки или файл подкачки. Программисту, пишущему приложение, не важно, если программа находится в файле подкачки или если это находится в RAM, потому что ядро заботится об этом. На моем ATmega 162 ситуация немного более сложна. Когда я должен использовать больше RAM, чем это доступно, я должен сначала обнаружить ручной ситуацией, когда я израсходовал всю RAM, после этого я должен вручную скопировать данные из RAM, чтобы высветить, освободить RAM, использовать его для того, для чего я должен использовать его, освободить его снова, переместите данные от флэш-памяти до RAM и затем свободный занятое место во флэш-памяти. На настольном компьютере не может даже видеть программа, была ли она подкачана на диск и затем попятилась в RAM.

Еще одной интересной вещью является производительность. Давайте вернемся к складскому примеру и секции. Давайте возьмем все объекты с наших складов и выведем их в одной груде. Таким образом, если мы должны взять один карандаш от секции, мы просто откроем секцию и возьмем карандаш. Если мы должны взять один конкретный карандаш от груды из тысяч других карандашей, ноутбуков, линеек, шоколадных батончиков, средств стирания и что не, мы должны будем провести большое количество времени, ищущее его. То время (в среднем случае) намного дольше по сравнению со временем, должен был найти тот же карандаш на хорошо организованном складе. С другой стороны, время должно было найти, что карандаш на организованном складе намного длиннее, чем время должно было найти карандаш в секции. Таким образом, некоторые методы работают хорошо над небольшими объемами данных и некоторой работы хорошо над большими объемами данных. Файловые системы улучшают производительность, храня данные логическим способом на диске, в котором может быть легко найдена каждая отдельная данная величина. Некоторые файловые системы также предоставляют другие преимущества. В случае JFFS2 файловая система разработала для флэш-памяти, износ реализаций файловой системы, выравнивающийся так, чтобы пользователь или разработанные аппаратные средства не имели к.

Еще одна интересная вещь состоит в том, что мы можем использовать стандартные файловые системы для RAM также! Существуют программы, которые поднимут RAM и организуют ее точно так же, как файловая система и позволят программам использовать ее, как будто это было дисковое пространство.

Некоторые интересные ссылки: статья управления памятью Wikipeda описывает, как и почему данные в RAM разделены. Статья операционной системы, раздел памяти объясняет, почему нам нужны вещи как сегментация памяти, подкачка страниц виртуальной памяти и так далее.

22
ответ дан 07.12.2019, 22:47

Для грубого упрощения RAM действительно имеет схему расположения, но она абстрагирована далеко аппаратными средствами.

Внутренне, RAM расположена как матрица "элементов памяти", размеченных в строках и столбцах, как электронная таблица. Каждый элемент памяти используется, чтобы хранить немного данных, которые могут быть мгновенно получены путем указания на строку и местоположение столбца (или адрес) данных.

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

2
ответ дан 07.12.2019, 22:47

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

Для персональных компьютеров обычно RAM только используется одной операционной системой за один раз и таким образом нет никакой схемы выделения разделов для нее. Но несмотря на это в некоторых больших компьютерах (мейнфреймы), существует также схема выделения разделов для RAM.

1
ответ дан 07.12.2019, 22:47

RAM не нужно разделение, потому что это организовано на страницах, и эти страницы динамично (MMU), структурированный без потребности предварительного выделения областей. Однако существует некоторое эфемерное разделение, происходящее с RAM, когда аппаратные компоненты, главным образом некоторые видеокарты, но это может быть что-либо, резервируют часть физической RAM перед начальными загрузками ОС.

На самом деле жестким дискам, перьевым дискам или SSD действительно не нужна схема выделения разделов или, или по крайней мере, они не были должны. Существуют все еще неизбежные компоненты как BIOS (или эквивалентные встроенные микропрограммные обеспечения) и загрузчики, которые требуют таблицу разделов, чтобы быть там для надлежащей работы, но иначе разделы только требуются из-за операционных систем (более точно файловые системы и менеджер томов) ограничения дизайна.

Понятие пула ZFS продемонстрировало, что разделы не требуются, даже если Вы хотите загрузить несколько операционных систем и если эти Ose требуют нескольких объемов и файловых систем.

Разделы затем только требуются, если диски используются одним или несколькими Ose, чем не поддерживают ZFS (или гипотетический эквивалент).

1
ответ дан 07.12.2019, 22:47

Теги

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