OSDev

для всех
Текущее время: 05 май 2024, 15:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 18 июн 2013, 21:32 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
А зачем нужны такие функции? Чтобы определять физические адреса страниц что ли? Так для этого можно сделать спец. функцию или использовать функцию отображения, которая бы возвращала физический адрес отображенной страницы (надо заметить, что физический адрес такой страницы должен оставаться неизменным). Зачем нужна функция записи, мне вообще не понятно. В элементах таблицы страниц хранится много служебной информации, изменение которой может отрицательно повлиять на работоспособность системы. Функцию, отображающую страницу с конкретным физ. адресом, ты вроде бы уже включил в список.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 18 июн 2013, 21:41 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
phantom-84 писал(а):
pavia писал(а):
ВАП не интересует. Любые окна это изврат
Это, видимо, было нужно в 32-разрядных системах с большим количеством памяти. С появлением 64-систем это стало не так актуально


Именно. Хотя появилось намного раньше, естественно. Например, в PDP-11 активно использовалось (виртуальный адрес -- 16 битов, физический -- 18 или 22 в зависимости от модели).

Цитата:
А зачем нужны такие функции? Чтобы определять физические адреса страниц что ли? Так для этого можно сделать спец. функцию


А разве в системе команд IA-32 нет инструкции, которая по заданному логическому адресу вычисляет физический? В мэйнфреймах точно была -- LRA (вообще, то, что учил в юности, помнится более-менее и сейчас, а вот что позже -- уже откровенно хуже :) ).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 18 июн 2013, 22:03 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
SII писал(а):
Именно. Хотя появилось намного раньше, естественно. Например, в PDP-11 активно использовалось (виртуальный адрес -- 16 битов, физический -- 18 или 22 в зависимости от модели).
Кстати еще окна могут использоваться для экономии в пространстве ядра, т.е. чтобы можно было использовать небольшое пространство ядра, но работать в нем с большим количеством памяти. Недавно кто-то на буржуйском форуме говорил, что это к примеру можно использовать для управления большим дисковым кэшем при небольшом размере пространства ядра.

Цитата:
А разве в системе команд IA-32 нет инструкции, которая по заданному логическому адресу вычисляет физический? В мэйнфреймах точно была -- LRA (вообще, то, что учил в юности, помнится более-менее и сейчас, а вот что позже -- уже откровенно хуже :) ).
Специальной инструкции нет, но во всех нормальных системах используется хак (рекурсивное отображение каталога страниц), позволяющий отображать в ВАП саму таблицу страниц. Может, pavia имел в виду функции определения/установки статуса страниц ВАП. Просто для меня как-то непривычно называть это доступом к элементам таблицы страниц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 18 июн 2013, 22:30 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
phantom-84 писал(а):
Кстати еще окна могут использоваться для экономии в пространстве ядра, т.е. чтобы можно было использовать небольшое пространство ядра, но работать в нем с большим количеством памяти. Недавно кто-то на буржуйском форуме говорил, что это к примеру можно использовать для управления большим дисковым кэшем при небольшом размере пространства ядра.


Ага. В полноценных вариантах RSX-11 использовались окна для отображения на части ядра (обработчики вызовов системных сервисов) и на драйверы режима ядра. Правда, опять-таки делалось это не от хорошей жизни, а из-за малого виртуального адресного пространства (64 Кбайта всего, из коих 8 всегда отображены на регистры внешних устройств, MMU и т.п. вещи, а ещё весьма значительную часть занимает динамическая память системы; собственно код ядра без драйверов -- порядка 30-40 Кбайт). Я подумывал над использованием такого механизма как раз для работы с дисками (точней, устройствами, которые выглядят как диски, -- например, с SD-картами), но пока всё на уровне размышлений на диване, поскольку до практической реализации всего этого ещё далеко.

Цитата:
Цитата:
А разве в системе команд IA-32 нет инструкции, которая по заданному логическому адресу вычисляет физический?
Специальной инструкции нет


Жаль. Удобная вещь, когда по виртуальному адресу надо быстро физический определить.

Цитата:
Может, pavia имел в виду функции определения/установки статуса страниц ВАП. Просто для меня как-то непривычно называть это доступом к элементам таблицы страниц.


Да, тут надо определиться с терминологией :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 18 июн 2013, 22:44 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
SII писал(а):
Жаль. Удобная вещь, когда по виртуальному адресу надо быстро физический определить.
При отображенной таблице страниц это можно сделать быстро. Виртуальный адрес страницы переводится в соотв. ей индекс элемента таблицы страниц простым сдвигом вправо. Физический адрес получается путем обнуления мл. битов элемента при помощи AND. Хотя конечно часто бывает так, что сама таблица отображена не полностью, тогда еще нужно проверить, отображена ли страница таблицы, в которой содержится нужный элемент.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 19 июн 2013, 00:45 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
pavia писал(а):
Общие страницы для простоты запретим.

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

phantom-84 писал(а):
pavia писал(а):
ВАП не интересует. Любые окна это изврат

Это, видимо, было нужно в 32-разрядных системах с большим количеством памяти. С появлением 64-систем это стало не так актуально

Я полагаю, что даже в 64-битных системах ВАП вполне обосновано. Если мы говорим о высокопроизводительной ОС, то есть вероятность образования большого кол-ва процессов и потоков. Чем их больше, тем меньше остаётся адресного пространства на каждый из них. Кроме того, только виртуальная память может быть отсвоплена на диск, а физическая страница выделена другому процессу.

phantom-84 писал(а):
Специальной инструкции нет, но во всех нормальных системах используется хак (рекурсивное отображение каталога страниц), позволяющий отображать в ВАП саму таблицу страниц.

Кстати, очень красивый хак. Я думаю, он задумывался изначально при разработки механизмов виртуализации 386.
По поводу инструкции, задача получения физического адреса возникает очень редко. А при манипуляции с таблицами нам и так необходим к ним доступ. Поэтому, думаю, что отсутствие такой инструкции совсем не недостаток.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 19 июн 2013, 08:52 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Yoda писал(а):
Я полагаю, что даже в 64-битных системах ВАП вполне обосновано. Если мы говорим о высокопроизводительной ОС, то есть вероятность образования большого кол-ва процессов и потоков. Чем их больше, тем меньше остаётся адресного пространства на каждый из них. Кроме того, только виртуальная память может быть отсвоплена на диск, а физическая страница выделена другому процессу.
Спору нет. Я говорил не о ВАП, а об окнах в ВАП. Допустим, у тебя в 32-разрядной системе имеется 8 гиг памяти. Конечно их можно раскидать по разным процессам. Но в серверных приложениях часто требуется большое количество памяти в рамках отдельно взятого приложения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 19 июн 2013, 09:59 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Но в серверных приложениях часто требуется большое количество памяти в рамках отдельно взятого приложения.

Серверная ОС это ОС в которой одна программа может использовать любой тип ресурса на все 100% минус минимум необходимый системе.
В пользовательской ОС. Ресурсы резервируются для возможности запуска и других приложений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 19 июн 2013, 10:11 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
SII писал(а):
phantom-84 писал(а):
Может, pavia имел в виду функции определения/установки статуса страниц ВАП. Просто для меня как-то непривычно называть это доступом к элементам таблицы страниц.


Да, тут надо определиться с терминологией :)

Не вижу зачем или для чего нужно менять статус?
С терминологией всё просто. Я описал низкий уровень согласно объекту дерева. А вот более высокий уровень я описать не могу, в виду того что я его не вижу. Поэтому и советуюсь с вами.
Я описал низкий уровень, а более высокий такой как изменения статуса можно будет реализовать через низкий уровень, через функции дерева.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аллокирование страниц
СообщениеДобавлено: 19 июн 2013, 11:35 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda писал(а):
По поводу инструкции, задача получения физического адреса возникает очень редко. А при манипуляции с таблицами нам и так необходим к ним доступ. Поэтому, думаю, что отсутствие такой инструкции совсем не недостаток.


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

pavia писал(а):
Серверная ОС это ОС в которой одна программа может использовать любой тип ресурса на все 100% минус минимум необходимый системе.
В пользовательской ОС. Ресурсы резервируются для возможности запуска и других приложений.


MS DOS -- серверная система? Под Ваше определение подпадает на все 100%.
Различные ОСРВ, "резервирующие ресурсы" и не дающие их использовать текущим выполняющимся приложениям на случай необходимости запуска других -- они пользовательские?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB