Я вивчаю операційні системи та архітектуру x86, і, коли я читав про сегментацію та пейджинг, мені, природно, було цікаво, як сучасні ОС керують управлінням пам'яттю. З того, що я виявив, Linux та більшість інших операційних систем по суті уникають сегментації на користь пейджингу. Декілька причин цього, які я знайшов, - це простота та портативність.
Які практичні можливості існують для сегментації (x86 чи іншим способом) і чи зможемо ми коли-небудь побачити надійні операційні системи, що використовують її, чи вони надалі надаватимуть перевагу системі, що базується на пейджингу.
Тепер я знаю, що це навантажене питання, але мені цікаво, як сегментація буде оброблятися за допомогою нових розроблених операційних систем. Чи має такий сенс віддавати перевагу пейджингу, що ніхто не вважатиме більш «сегментований» підхід? Якщо так, то чому?
І коли я кажу про "сегментацію", я маю на увазі, що Linux використовує її лише наскільки це потрібно. Лише 4 сегменти для сегментів коду / даних ядра користувача та ядра. Читаючи документацію Intel, я просто відчув, що сегментація розроблена з більш надійними рішеннями. Потім мені неодноразово говорили, наскільки складним може бути х86.
Цей цікавий анекдот я знайшов після того, як він був пов'язаний з оригінальним "оголошенням" для Linux Torvald для Linux. Про це він сказав кілька публікацій пізніше:
Просто я б сказав, що перенесення неможливо. Це здебільшого на C, але більшість людей не називатиме те, що я пишу C. Він використовує всі можливі функції 386, які я міг би знайти, оскільки це був також проект, який навчає мене про 386. Як уже згадувалося, він використовує MMU , як для підкачки (ще не на диску), так і для сегментації. Саме сегментація робить її НАДАЛЬНО 386 залежною (кожне завдання має 64Mb сегмент для коду та даних - максимум 64 завдання в 4Gb. Кожен, кому потрібно більше 64Mb / завдання - жорсткі файли cookie).
Я думаю, що власні експерименти з x86 змусили мене задати це питання. У Лінуса не було StackOverflow, тому він просто реалізував його, щоб спробувати його.