Лучшие вопросы
Таймлайн
Чат
Перспективы
Одноуровневое хранилище
Из Википедии, свободной энциклопедии
Remove ads
Одноуровневое хранилище (англ. Single-level storage, SLS) или одноуровневая память — это термин, относящийся к компьютерной памяти, который имел два смысла, связанные с тем, что страницы памяти могут быть в основной памяти (RAM) или во вторичной памяти (диске), и физическое расположение страницы не имеет значения для процесса.
Термин
Суммиров вкратце
Перспектива
Изначально этот термин относился к тому, что сейчас обычно называют виртуальной памятью. Она была впервые реализована в 1962 году в системе Atlas Манчестерского университета. В этой системе данные из памяти на магнитных сердечниках автоматически переносились на магнитный барабан и с него, так что память на сердечниках как бы имела ту же ёмкость, что и барабан (много большего объёма)[1].
В современном понимании этот термин обычно относится к организации вычислительной системы, в которой отсутствуют файлы, а существуют только постоянные объекты (иногда называемые сегментами). Программное обеспечение, очень похожее на виртуальную память и разработанное как её ответвление, позволяет отображать данные на внешних носителях в адресные пространства процессов, обрабатывать их в памяти и незаметно записывать обратно на носитель. Всё хранилище компьютера рассматривается как единая двумерная плоскость адресов (сегмент и адрес внутри сегмента).
Концепция долгоживущих объектов (англ. persistent object) впервые появилась в системе Multics iв середине 1960 в рамках совместного проекта MIT, General Electric и Bell Labs[2]. Она также была реализована как виртуальная память, при этом фактическая физическая реализация включала несколько уровней типов хранения. Например, в Multics, изначально было три уровня: основная память, высокоскоростной барабан и диски. Система Multics оказала значительное влияние, и концепция одноуровневого хранилища стала очень популярной в начале 1970-х годов.
Среди значительных усилий по внедрению этой концепции в широкое использование был проект IBM Future Systems project[англ.]* в 1971 году (Проект IBM «Будущие системы»), однако он вышел из-под контроля и был отменен в 1975 году. Затем концепцию подхватили среднеуровневые лаборатории IBM и она стала частью System/38, выпущенной в 1978 году. В этой системе память выделяется не только по размеру, но и получает имя. Данные, записанные в это выделенное пространство, невидимо сохраняются во вторичном хранилище, и когда программа снова выделяет эту память в будущем, сохранённые данные невидимо загружаются обратно. IBM владеет патентами на одноуровневое хранилище, реализованное в операционной системе IBM i на IBM Power Systems[3][4].
Remove ads
Дизайн
Суммиров вкратце
Перспектива
В ранних компьютерных системах существовало чёткое разделение между основной памятью и любыми вторичными накопителями. Для обработки данных программы использовали явный код для чтения данных с вторичного накопителя в основную память, манипулирования ими в основной памяти, а затем с помощью другого кода записывали их обратно на вторичный накопитель. Это разделение сохраняется и по сей день в большинстве операционных систем (англ. Operating System, OS).
В 1960-х годах появились системы разделения времени и поддерживающие многозадачность. В таких системах одновременно могло выполняться несколько программ, и каждая из них нуждалась в собственной памяти для работы. Это привело к созданию порой сложных систем, где программы описывали минимальный и желаемый объём необходимой им памяти для работы, а операционная система разбивала основную память на блоки, обычно называемые сегментами. Поскольку одновременно могло выполняться множество программ, каждая отдельная программа могла получить меньше памяти для работы, чем ей требовалось.
Для решения этой проблемы была разработана виртуальная память (англ. Virtual Memory, VM). Системы VM делят основную память на ряд сегментов фиксированного размера, или «страниц», и выделяют их программам по запросу. Программы не знают о существовании системы VM, они просто запрашивают память и получают её или получают отказ, как и раньше. Разница в том, что каждая программа не ограничивалась бы некоторой долей основной памяти, выделенной для неё, а вместо этого получала бы доступ ко всей памяти — «виртуальной» основной памяти, которая обычно была намного больше фактической физической памяти. По мере того как программы использовали физическую память, и она в конечном итоге заканчивалась, система VM анализировала страницы с данными, которые в данный момент не требовались, и записывала их на вторичное хранилище. Это было известно как «страничная подкачка». Когда программа пыталась получить доступ к значениям в памяти, которые были выгружены на диск, система VM снова вмешивалась, записывая другую страницу памяти и загружая запрошенную обратно. Это незаметно для программы, для неё существует единая большая память, и её данные всегда доступны. Программы, написанные в системе VM, в остальном похожи на программы для более ранних машин. Для постоянного хранения данных программа по-прежнему должна была иметь код для чтения и записи данных на вторичное хранилище и с него, чаще всего это была файловая система, но иногда и система управления базами данных.
Одноуровневое хранилище меняет эту модель, расширяя концепцию виртуальной памяти . Теперь она охватывает не только файл подкачки, но и всю систему вторичного хранения данных, которая становится «основной памятью». В такой модели нет необходимости в отдельной файловой системе, поскольку программы просто выделяют память как обычно, и эта память невидимо записывается на диск и извлекается по мере необходимости. Программе больше не нужен код для перемещения данных между основной и вторичной памятью. Например, программа может создать в памяти серию визитных карточек, которые будут автоматически сохранены. При последующей загрузке программы эти данные мгновенно появятся в памяти. Поскольку программы также являются частью этой единой памяти, перезагрузка машины или вход пользователя приводят к автоматическому восстановлению всех программ и их данных.
Операционная система отвечает за поиск страниц и предоставление их для обработки. Если страница находится в основной памяти, она сразу же доступна. Если страница находится на диске, возникает отказ страницы и операционная система загружает страницу в основную память. Процессы не выполняют явных операций ввода-вывода с вторичным хранилищем, вместо этого чтение из вторичного хранилища происходит в результате ошибок страницы. Запись во вторичное хранилище осуществляется, когда измененные страницы вытесняются читаемыми страницами.
Дизайн System/38 и IBM i
Концепция одноуровневого хранилища, разработанная IBM, была изначально предложена и впервые реализована Франком Солтисом[англ.] и Гленном Хенри[англ.] в конце 1970 годов как способ создания переходного решения для компьютеров с полностью твердотельной памятью. Появление памяти на цилиндрических магнитных доменах породило убеждение, что дисковые накопители устареют и будут полностью заменены какой-либо формой твердотельной памяти. Система/38 была спроектирована так, чтобы быть независимой от типа аппаратной памяти, используемой для вторичного хранения.
Однако этого не произошло, потому что, хотя флеш-память стала экспоненциально дешевле, жёсткие диски также стали аналогично дешевле. Таким образом, ценовое соотношение в пользу жёстких дисков сохраняется: гораздо большая ёмкость по сравнению с флеш-памятью, гораздо более медленный доступ и значительно меньшая стоимость.
В системах System/38 и IBM i всем данным в памяти присваивается адрес в виртуальной памяти, доступный для инструкций процессора, и к ним обращаются по этому адресу, независимо от того, находятся ли они в данный момент в физической памяти или нет. Если данные, на которые указывает этот адрес, отсутствуют в физической памяти, происходит отказ страницы. Отказ страницы обрабатывается низкоуровневым программным обеспечением, которое считывает страницу в доступный фрейм страницы в основной памяти[5][6].
При реализации одноуровневой памяти в IBM i отказы страниц ошибки страниц делятся на две категории. Это ошибки базы данных и ошибки, не связанные с базой данных. Ошибки базы данных возникают, когда страница, связанная с объектом реляционной базы данных, таким как таблица, представление или индекс, отсутствует в основной памяти. Ошибки, не связанные с базой данных, возникают, когда любой другой тип объекта отсутствует в основной памяти.
Remove ads
См. также
Примечания
Литература для дальнейшего чтения
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads