Одноуровневый магазин
Одноуровневое хранилище ( SLS ) или одноуровневая память — это термин компьютерного хранилища , который имеет два значения. Эти два значения связаны тем, что в обоих случаях страницы памяти могут находиться в первичном хранилище ( ОЗУ ) или во вторичном хранилище (на диске), и физическое расположение страницы не имеет значения для процесса.
Первоначально этот термин относился к тому, что сейчас обычно называют виртуальной памятью , которая была введена в 1962 году системой Atlas в Манчестерском университете . [1]
В современном использовании этот термин обычно относится к организации вычислительной системы, в которой нет файлов , а есть только постоянные объекты (иногда называемые сегментами ), которые отображаются в процессов адресные пространства (которые полностью состоят из набора отображаемых объектов). . Вся память компьютера рассматривается как единая двумерная плоскость адресов (сегмент и адрес внутри сегмента).
Концепция постоянного объекта была впервые представлена компанией Multics в середине 1960-х годов в проекте, совместно используемом MIT , General Electric и Bell Labs . [2] Она также была реализована как виртуальная память, а фактическая физическая реализация включала несколько уровней типов хранения. (Например, у Multiks изначально было три уровня: основная память, высокоскоростной барабан и диски.)
IBM владеет патентами на одноуровневое хранилище, реализованное в операционной системе IBM i на IBM Power Systems и ее предшественниках, еще в System/38 , выпущенной в 1978 году. [3] [4]
Дизайн
[ редактировать ]В ранних системах существовало четкое различие между основной памятью и любой вторичной памятью. Чтобы обработать данные, программы будут использовать явный код для чтения данных из вторичного хранилища в основную память, манипулировать ими в основной памяти, а затем использовать дополнительный код для повторной записи их обратно во вторичное хранилище. Это различие сохраняется и по сей день в большинстве операционных систем (ОС).
В 1960-е годы разделение времени и мультипрограммирование были введены . В этих системах одновременно может работать несколько программ, и каждая желает иметь собственную память для работы. Это приводило к созданию иногда сложных систем, в которых программы описывали минимальный и желаемый объем памяти, необходимый им для работы, а операционная система разбивала основную память на блоки, обычно называемые сегментами . Поскольку теперь потенциально одновременно выполнялось множество программ, каждая отдельная программа могла иметь меньше памяти для работы, чем хотелось бы.
Попытки решить эту проблему привели к разработке виртуальной памяти (ВМ). Системы виртуальных машин разбивают основную память на ряд сегментов фиксированного размера или «страниц» и выделяют их программам по требованию. Программы не знают о существовании системы ВМ, они просто запрашивают память и получают ее или отказывают, как и раньше. Разница в том, что каждая программа не будет ограничена некоторой частью основной памяти, отведенной для нее, а вместо этого ей будет предоставлен доступ ко всей памяти, фиксированной «виртуальной» основной памяти, которая обычно намного больше реальной физической памяти. . По мере того, как программы использовали физическую память, и в конечном итоге она заканчивалась, система VM проверяла страницы на наличие данных, которые в данный момент не нужны, и записывала их во вторичное хранилище. Это было известно как «пейджинг». Когда программа пыталась получить доступ к значениям в памяти, которые были выгружены, система VM снова вмешивалась, записывая какую-то другую страницу памяти и загружая запрошенную обратно. Это невидимо для программы, для нее оно появляется там. представляет собой единую большую память, и ее данные всегда доступны. Программы, написанные в системе VM, в остальном аналогичны программам на более ранних машинах. Для постоянного хранения данных программа все еще должна была иметь код для чтения и записи данных во вторичное хранилище и из него, чаще всего это файловая система , но иногда и ядро базы данных .
Одноуровневое хранилище меняет эту модель, расширяя возможности виртуальной машины от обработки только файла подкачки до новой концепции, в которой «основная память» представляет собой всю вторичную систему хранения. В этой модели нет необходимости в файловой системе, отдельной от памяти, программы просто выделяют память как обычно, и эта память незаметно записывается в хранилище и извлекается по мере необходимости. Программе больше не нужен код для перемещения данных во вторичное хранилище и обратно. Программа может, например, создать в памяти серию визитных карточек , которые будут незаметно записаны. Когда программа будет загружена снова в будущем, эти данные немедленно снова появятся в ее памяти. А поскольку программы также являются частью этой единой памяти, перезапуск компьютера или вход пользователя в систему приводит к тому, что все эти программы и их данные появляются снова.
Операционная система берет на себя ответственность за поиск страниц и предоставление их для обработки. Если страница находится в основном хранилище, она доступна немедленно. Если страница находится на диске, возникает ошибка страницы , и операционная система переносит страницу в основное хранилище. Никакой явный ввод-вывод во вторичное хранилище не выполняется процессами: вместо этого чтение из вторичного хранилища выполняется в результате ошибок страницы; запись во вторичное хранилище выполняется, когда страницы, которые были изменены с момента чтения из вторичного хранилища в основное хранилище, записываются обратно в свое местоположение во вторичном хранилище.
Проектирование System/38 и IBM i
[ редактировать ]Проект одноуровневого хранилища IBM был первоначально задуман и впервые реализован Фрэнком Солтисом и Гленном Генри в конце 1970-х годов как способ создания переходной реализации к компьютерам со 100% твердотельной памятью . В то время считалось, что дисковые накопители устареют и будут полностью заменены какой-либо формой твердотельной памяти. System/38 был разработан так, чтобы быть независимым от формы аппаратной памяти, используемой в качестве вторичного хранилища. Однако этого не произошло, поскольку, хотя твердотельная память стала дешевле в геометрической прогрессии, дисководы также стали дешевле; таким образом, соотношение цен в пользу дисковых накопителей сохраняется: гораздо более высокая емкость, чем у твердотельной памяти, гораздо более медленный доступ и гораздо меньшая стоимость.
В System/38 и IBM i всем данным в хранилище назначается адрес, доступный инструкциям процессора, в виртуальной памяти , и на них ссылаются по этому адресу, независимо от того, находятся они в данный момент в физической памяти или нет. Если данные, на которые ссылается этот адрес, отсутствуют в физической памяти, ошибка страницы возникает . Ошибка страницы обрабатывается программным обеспечением низкого уровня, которое считывает страницу в доступный страничный фрейм в основном хранилище. [5] [6]
В реализации одноуровневого хранилища IBM i ошибки страниц делятся на две категории. Это ошибки базы данных и ошибки, не связанные с базой данных. Сбои базы данных возникают, когда страница, связанная с объектом реляционной базы данных, например таблицей, представлением или индексом, в данный момент не находится в основном хранилище. Ошибки, не связанные с базой данных, возникают, когда какой-либо другой тип объекта в настоящее время отсутствует в первичном хранилище.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Одноуровневая система хранения , Т. Килберн, ДБГ Эдвардс, М. Дж. Ланиган, Ф. Х. Самнер, IRE Trans. Электронные компьютеры, апрель 1962 г. , по состоянию на 7 августа 2014 г.
- ^ Виртуальная память, процессы и совместное использование в Multics , Роберт К. Дейли, Джек Б. Деннис, доступ: 7 августа 2014 г.
- ^ Вуди, Алекс. «Фрэнк Солтис обсуждает возможное будущее одноуровневого хранилища» . itjungle.com . IT-джунгли . Проверено 4 декабря 2020 г.
- ^ Технические разработки IBM System/38 (PDF) , декабрь 1978 г.
- ^ французский, RE; Коллинз, RW; Лоен, LW (июль 1980 г.). «Управление машинным хранилищем System / 38». Технические разработки IBM System/38 (PDF) (второе изд.). стр. 63–66.
- ^ «Управление памятью AS/400» .