в процессе написания оси возникла проблемма - если сделать своппинг на уровне ядра то сильно усложнится раздатчик памяти ядра, а он будет юзаться в массовом порядке на каждом сискалле. усложнения фактически отложат выпуск первого релиза месяца на 2. поэтому решил спросить совета - как поступить? вообще не вводить свопинг в ядро? помучаться с ним но сделать что нибудь? сделать своппинг на уровне процессов - если ядро выяснит что выделить памяти никак, оно попробует у запрашивающего процесса сбросить страничку которая помечена как кэш диска(например) и заберет её себе(а) либо не будет подкалывать процесс, а вернет ему E_NOMEM отчего процесс обратится к системному процессу с просьбой поискать жертву для выброса из памяти, после чего ей пошлют сигнал почистить совю память(может быть даже со списком страниц которые давно не юзались)?
Лучьше на уровне ядра, на мой взгляд. Но свопинг имеет смысл только при написании мощьной ОС, если Вы просто пробуете свои силы, то возится с ним не стоит.
Narkomanius Моё мнение ты знаешь. Своппинг - это механизм виртуализации памяти. Я считаю, что если предоставить хорошие средства для работы с физической памятью, то можно добиться более высокой скорости работы, более экономичного использования памяти, чем при виртуализации... Среди таких средств предположительно должны быть: -- механизм перераспределения (попросту говоря, отбирания) физической памяти -- возможность читать\писать флаги страниц Accessed и Present -- способ перехватывать свои собственные page fault Помимо всего прочего при такой реализации программы смогут сжимать обрабатываемые данные при своппинге алгоритмами сжатия, специально заточенными для конкретного класса данных (например, растровых изображений). А своппинг "общего назначения" можно будет вынести вообще на библиотечный уровень... Таким, образом своппинг не нужен. Тем более в ядре...
против своппинга: 1.своппинг предполагает внешний носитель (ужастно медленный). ос, зашитая в биос (я понял, именно это ты и пишешь), может работать на бездисковой машине (грузить приложения по сети или с дискеты, или из флэшки) - это преимущество! 2.лишний гемморой, особенно если приложения будут небольшие, а так оно и будет поначалу как минимум.