Sto studiando i sistemi operativi e l'architettura x86, e mentre leggevo della segmentazione e del paging, ero naturalmente curioso di sapere come i moderni SO gestiscono la gestione della memoria. Da quello che ho trovato Linux e la maggior parte degli altri sistemi operativi essenzialmente evita la segmentazione a favore del paging. Alcuni dei motivi che ho riscontrato sono stati la semplicità e la portabilità.
Quali usi pratici ci sono per la segmentazione (x86 o altro) e vedremo mai sistemi operativi robusti utilizzarlo o continueranno a favorire un sistema di paging.
Ora so che questa è una domanda carica ma sono curioso di sapere come gestire la segmentazione con i sistemi operativi di nuova concezione. Ha molto senso favorire il paging che nessuno prenderà in considerazione un approccio più "segmentato"? Se è così, perché?
E quando dico segmentazione 'shun', intendo che Linux lo usa solo per quanto deve. Solo 4 segmenti per segmenti di codice / dati utente e kernel. Durante la lettura della documentazione Intel ho appena avuto la sensazione che la segmentazione fosse progettata pensando a soluzioni più robuste. Poi di nuovo mi è stato detto in molte occasioni quanto possa essere complicata la x86.
Ho trovato questo aneddoto interessante dopo essere stato collegato all '"annuncio" originale di Linux Torvald per Linux. Lo ha detto qualche post dopo:
Semplicemente, direi che il porting è impossibile. È principalmente in C, ma la maggior parte delle persone non chiamerebbe ciò che scrivo C. Utilizza ogni caratteristica immaginabile del 386 che ho potuto trovare, poiché era anche un progetto per insegnarmi il 386. Come già accennato, utilizza un MMU , sia per il paging (non ancora su disco) sia per la segmentazione. È la segmentazione che lo rende DAVVERO 386 dipendente (ogni attività ha un segmento di 64 Mb per codice e dati - max 64 attività in 4 GB. Chiunque abbia bisogno di più di 64 Mb / attività - cookie difficili).
Immagino che la mia sperimentazione con x86 mi abbia portato a porre questa domanda. Linus non aveva StackOverflow, quindi l'ha appena implementato per provarlo.