|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Zahar Kiselev 2:5030/382.1 14 Oct 2004 00:59:28 To : Sergey Mudry Subject : Re: неисполняемый стэк в 2.4 ? -------------------------------------------------------------------------------- Oct 13 23:16 04, Sergey Mudry wrote to Zahar Kiselev: SM> Да можно. Всего-то надо сделать так, чтобы сегменты программы SM> (исполняемые) и данных (принципиально неисполняемые) не пересекались. SM> Ограничить их размеры. Более того, и код и данные вообще-то не обязаны состоять каждый из единственного сегмента. И это было реализовано в частности в дос-экстендерах (это то, с чем я имел дело лично, про другое спорить не буду). SM> При этом возникают некоторые проблемы с SM> динамической сборкой и разделением библиотек, нужно организовать две SM> кучи, исполняемую и неисполняемую, причем каждая - в непрерывном SM> линейном адресном пространстве. Кто и когда сказал, что линейное непрерывное пространство обязательно с точки зрения компьютера? По-моему оно возникло по двум причинам - проще создать средства разработки(прежде всего линкер) и удобно делить на одинаковые страницы для свопа, который был черезвычайно актуален тогда, когда эти средства разработки создавались - ведь память тогда стоила по полтиннику баксов за мегабайт. SM> Hо с учетом того, что сегменты можно SM> перемещать, а страницы переставлять, это все решаемо. Hо кто это будет реализовывать? Это же кучу всего переписывать надо! SM> Вопрос только насколько оно будет совместимо с другими архитектурами? SM> И вообще с архитектурой UNIX. Про другие архитектуры машин рассуждать не буду, ибо кроме СМ1600 ничего толком не знаю, да и ее уже забыл основательно. А вот что такое "архитектура UNIX" применительно к данному вопросу - можно обсудить. Hапример были юниксоподобные ОС (несколько!), работавшие на 286 процессоре, у которого вся защита памяти основана именно на сегментах. Будем считать эти ОС несовместимыми с архитектурой UNIX? Также существуют клоны юникса, работающие на процессорах, вообще не имеющих аппаратной защиты памяти - экзотика конечно, но тем не менее существуют и даже используются(как правило только в embedded применениях). Отсюда можно сделать вывод, что конструкция механизма защиты памяти и даже само его наличие - не является неотъемлимой деталью "архитектуры UNIX". Кстати - та машина, на которой отцы-основатели написали первую версию в 60-х годах - она защиту памяти имела или нет? Вот этого я не знаю:) Вот читал что у них там сначала свопа небыло, его позже приделали:) И свопили целыми сегментами. Потом стали свопить страницами, опять же чтобы экономить память, и название поменяли на "пейджинг". Zahar(@spbdept.rbc.ru) Остров Большой Березовый: http://birch-island.spb.ru --- Msged/LNX 6.1.1 * Origin: N:60.17'54" E:28.39'40" (2:5030/382.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/3288416d551f.html, оценка из 5, голосов 10
|