Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319

    Una domanda teorica sul kernel!

    Tra qualche giorno ho un esame all'uni su linux (laboratorio di sistemi operativi)... e ora ero a riguardare i lucidi delle lezioni... Riguardo ai tipi possibili di kernel di un sistema operativo è scritto che ce ne sono due:

    "Monolitica;
    Client-Server (a nucleo minimo, o micro-kernel)."

    e poi è scritto che linux ha una struttura monolitica !

    "Un sistema monolitico non ha una struttura ben definita. Comprende virtualmente tutte le funzionalità di un sistema operativo in un unico, grosso blocco di codice che viene eseguito come un singolo processo con un singolo indirizzo. Tutte le componenti funzionali del nucleo hanno accesso a tutti i dati e le procedure interne."

    Ma è corretto???? Il kernel di linux non ha una struttura modulare? Quindi pensavo l'opposto di monolitico!!?!?
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  2. #2

  3. #3
    è corretto,il kernel linux è un kernel monolitico (causa di un flame storico tra torvalds e tanenbaum (suo docente di sistemi operativi e creatore di minix,con struttura a microkernel).
    la definizione lì è eccessivamente semplificata.

  4. #4
    beh si tratta di definizioni decisamente teoriche e non c'è molto accordo sui termini

    Linux e Windows sono monolitici e come alcuni amano dire "ibridi"....in sostanza è un classico kernel dove tutto il codice riguardante il kernel usa uno spazio di indirizzamente unico e gira a ring 0.....anche se è possibile caricare e scaricare i moduli, si tratta comunque di moduli che verranno linkati dinamicamente nel codice e quindi le chiamate ai moduli avvengono nella maniera classica

    diverso è il discorso dei veri microkernel, dove solo l'executive gira a ring 0, gli altri componenti del kernel girano a ring 3, sono isolati dall'executive e espongono i loro servizi tramite IPC

    storicamente il dilemma e la baruffa che ne seguì nacquero a causa di Mach che si autoproclamava microkernel, quando poi integra anche i driver all'interno della struttura del kernel.....allo stato attuale nè Linux nè Windows nè MacOS sono microkernel, ma si fregiano di tale definizione perchè "fa fico"

    per capire com'è fatto un vero microkernel puoi dare un'occhiata alla documentazione di QNX http://www.qnx.com/developers/docs/m...rch/about.html

    un altro OS microkernel molto noto era BeOS, oggi sostituito da Haiku, mentre il microkernel per eccellenza è L4

  5. #5
    che significa "ring 0" "ring 3" ?

    che e' l' "executive" ?

  6. #6
    l'Executive è il blocco più basso del kernel, che si occupa dell'inizializzazione dell'hardware e dei servizi fondamentali per il kernel vero e proprio

    i Ring sono i livelli di privilegio che un processore fornisce....negli x86 i Ring vanno da 0 a 3, ma di fatto solo 0 e 3 sono usati, a causa della virtualizzazione, poi, si è inserito un Ring -1 altrimenti era impossibile per i VMM controllare l'operato degli OS guest

    a Ring 0 si possono usare tutte le istruzioni dell'ISA, a Ring 3 vengono bloccate tutte le istruzioni che permettono un accesso diretto ai sistemi di I/O, modifica dell'IDT e del GDT, disabilitazione degli interrupt, modifica del registro di stato e quello di controllo e altri operazioni delicate

    di fatto è questo il meccanismo che permette al sistema di non bloccarsi ogni qualvolta un programma va in crash

  7. #7
    come sai tutte queste cose ?

  8. #8
    Originariamente inviato da sacarde
    come sai tutte queste cose ?
    beh è il mio mestiere

  9. #9
    che ne dici di suggerirci qualche documento o libro ?

  10. #10
    Originariamente inviato da sacarde
    che ne dici di suggerirci qualche documento o libro ?
    beh un classico è Modern Operating Systems di Tanenbaum, poi c'è Operating System Concepts di Silberschatz ma francamente lo trovo molto pesante

    per come la vedo io, per chi non ha conoscenze ingegneristiche, è meglio mettere mano a qualche tutorial....ne trovi parecchi su osdever.net e osdev.org

    inoltre una buona conoscenza delle principali architetture tra cui x86, MIPS, Power, Sparc e ARM in modo da avere ben chiare le differenze tra le varie famiglie di micro, cosa che credo nessun OS possa permettersi di non considerare

    infine ho trovato molta gente preparata sul newsgroup alt.os.development, ci sono 4-5 russi che la sanno lunga

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.