Sto studiando i sistemi operativi e l'architettura x86, e mentre leggevo sulla segmentazione e sul 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 evitano la segmentazione a favore del paging. Alcuni dei motivi che ho riscontrato sono la semplicità e la portabilità.
Quali usi pratici ci sono per la segmentazione (x86 o altro) e vedremo mai sistemi operativi solidi che lo utilizzano o continueranno a favorire un sistema basato sul paging.
Ora so che questa è una domanda carica ma sono curioso di sapere come la segmentazione sarà gestita con i sistemi operativi di nuova concezione. Ha molto senso favorire il paging che nessuno considererà un approccio più "segmentato"? Se sì, perché?
E quando dico segmentazione 'shun' sto implicando che Linux lo usi solo per quanto è necessario. Solo 4 segmenti per segmenti di codice / dati utente e kernel. Leggendo la documentazione Intel ho avuto la sensazione che la segmentazione sia stata progettata pensando a soluzioni più solide. Poi di nuovo mi è stato detto in molte occasioni quanto può essere complicato x86.
Ho trovato questo aneddoto interessante dopo essere stato collegato all'annuncio originale di Linux Torvald per Linux. Ha detto questo alcuni post più tardi:
Simply, I'd say that porting is impossible. It's mostly in C, but most people wouldn't call what I write C. It uses every conceivable feature of the 386 I could find, as it was also a project to teach me about the 386. As already mentioned, it uses a MMU, for both paging (not to disk yet) and segmentation. It's the segmentation that makes it REALLY 386 dependent (every task has a 64Mb segment for code & data - max 64 tasks in 4Gb. Anybody who needs more than 64Mb/task - tough cookies).
Suppongo che la mia stessa sperimentazione con x86 mi abbia portato a fare questa domanda. Linus non ha avuto StackOverflow, quindi l'ha appena implementato per provarlo.