RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : чем отличаются Warp 3.0 и 4.0?


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Andrew Belov, 2:5020/181.2
To : shiz0rat
Subj : чем отличаются Warp 3.0 и 4.0?


> > > по какому алгоритму работает своп?
> >
> > Про это (включая сокращение-расширение с гистерезисом) можно диссертации писать... Дизайн 80-х был продуманным. :)
>
> я имел в виду - в первом приближении. самые общие сведения. например, в линуксе ядро ждёт до последнего, и только когда свободной физической памяти не остаётся ни байта, задействует своп, старается держать его размер на минимуме, полностью освобождая при первой возможности. БЗД наоборот, сбрасывает как можно больше неиспользуемых страниц, чтобы не заниматься этим, когда какая-нибудь дурная прога вдруг потребует аж гигабайт рамы. примерно так же, афаик, действует AIX. ОС\2 в этом смысле - тёмный лес.

В этом смысле здесь Linux-подобный алгоритм, но более консервативный. Сначала в цикле выявляются неиспользуемые страницы, затем когда запрашивается выделение - сразу несколько страниц летит в своп. Своп растет по мере необходимости, а будет ли сокращение - зависит от динамики своппинга в течение последних 30 секунд. Страницы классифицируются по их "свопабельности": resident/discardable/swappable, плюс разделение на тех, которые в свопе побывали/не побывали, изменились после вылезания из свопа и т.д.

>Допустим, я хочу выделить под своп отдельный раздел. Какого он должен быть размера (если по максимуму)? Допустим, виртуальная память в 3.0 ограничена гигабайтом. У меня 64Мб РАМ. Максимальный размер свопа 1024 или 960Мб? На какой файловой системе лучше располагать своп-файл?

На FAT16, причем отдельный раздел (IMHO) желателен только там, где есть отдельный HDD. В остальных случаях - отдефрагментированный файл в начале диска. Впрочем, дефрагментация может слететь при пересоздании свопа. Минимальный размер выставить по размеру свопа при типовой нагрузке (несколько часто используемых софтин одновременно).

> Могу лишь предположить, что независимо от файловой системы (ФАТ\ХПФС) своп не может быть более 2Гб из-за ограничения на размер файла. До каких размеров может расти своп на ЖФС - страшно даже представить :)

Да никуда он не дорастет, если адресуемой памяти все равно 4G. Реально SYS1504/SYS1503 вылетит гораздо раньше.

> > А вот это вполне тривиально. VMM участвует только как помощник.
> >
> > "Туда" - глушится многозадачность, IFS'ам и железкам дается отбой (SAVERESTORE), выделяется-освобождается пара мегабайт для стабилизации своппинга,
>
> значит, своп не уничтожается? ага...

Старые беты Мерлина вообще в SWAPPER.DAT хибернировались.

> опрашивается список страниц, список с оглавлением кладется в обход *.IFS
>
> хмм... может, и своп работает в обход ИФС? это было бы логично.

Логично до первого ресайза. Вот Hibernate работает в полный обход - до начала процесса создается пустой \SWAPPER2.DAT размером с физическую RAM, затем он закрывается (IFS больше с этим файлом дела не имеет) и специальная "MFS" (юзер-мод библиотека для FAT/HPFS) лезет к диску напрямую, не консультируясь с IFS'ом, определяя физические сектора экстентов \SWAPPER2.DAT - "куда писать".

> в заранее подготовленный \SWAPPER2.DAT, затем система ... продолжает работать - состояние сохранено, дальше по выбору.
>
> вроде бы есть режим, при котором сразу после сохранению происходит автоматический ребут.

Тем не менее, архитектура такова, что DosSysCtl(12, ...) - это fork(). В \SWAPPER2.DAT летит одна копия, вторая продолжает работать, и по выбору может перезагрузиться, вылететь в trapdoor, выключить машину и т.д.

> дается SAVERESTORE на реинициализацию драйверов, включается многозадачность (DosSysCtl#14), \SWAPPER2.DAT прибивается или НЕ прибивается - есть спецрежим, когда система всегда при пропадании питания будет стартовать с сохраненного \SWAPPER2.DAT.
>
> а можно сохранять несколько поколений хиберната? напр. настроить на запуск hibernat.exe каждую минуту, а потом по Альт-Ф1 выбирать, какой из последних 5-10 имаджей памяти восстанавливать... по аналогии с Archive Desktop. наверно, я слишком многого хочу, но это у меня юношеский максимализм играет :)

Если учесть, что и обычный "sticky hibernation" (HYBERNAT -s) не документирован, то... :)

> > >Есть где-нибудь подробная инфа по менеджменту памяти в ОС2? ФАК я читал.
> >
> > Хм, наверное самая полная - только в исходниках и сопроводиловке (KGUIDE20.INF). Если найдешь. Либо "The Design of OS/2" (DESIGN.INF) в порядке введения + OS/2 Debugging Handbook, EDM/2 и документация из DDK в качестве технической закуски.
>
> ой. а если не так подробно, а совсем наоборот, обзорно-популярно?

Ну вот Когана-Дейтела ("The Design of OS/2") и хватит. Там про OS/2 v 2.0. Правда, в известных мне электронных вариантах нет иллюстраций.


Thu 01 Jan 2004 13:24 Mozilla/5.0 (OS/2; U; Warp 3; en-US; rv:1.4) Gecko/20030811




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.