segmentation fault vs errore di pagina

  1. Mi chiedevo quali sono le differenze e le relazioni tra
    errore di segmentazione e di errore di pagina?
  2. Non segmentation fault appartenere solo a memoria segmentata modello?

    Errore di pagina non solo appartengono alla memoria di paging modello?

    Se entrambi sono sì, poiché la maggior parte dei sistemi informatici come Linux x86 e l’utilizzo di memoria di paging modello, invece di memoria segmentata, modello, perché GCC compiler C, a volte, report segmentation fault errore?

Grazie e saluti!

InformationsquelleAutor Tim | 2011-08-05

 

2 Replies
  1. 29

    Queste due cose sono molto dissimili, in realtà. Un segmentation fault significa che un programma ha cercato di accesso non valido o illegale indirizzo di memoria: per esempio, 0 o un valore maggiore rispetto a qualsiasi puntatore valido. Un errore di pagina è quando un puntatore tenta di accedere a una pagina di spazio di indirizzi che attualmente non è mappato in memoria fisica, in modo che la MMU deve afferrare fuori del disco prima di poter essere utilizzato. Il primo è condizione di illegalità ed il programma sarà generalmente interrotta; quest’ultimo è perfettamente normale e il programma non si sa nemmeno su di esso.

    “Segmentazione” non è correlato alla vecchia “memoria segmentata modello” usati dai primi processori x86; è un precedente uso che si riferisce solo a una parte o segmento di memoria.

    • Grazie! (1) che Cosa sono lì relazione con segmentato modello di memoria e di memoria di paging modello? (2) cosa significa “segmentazione” in segmentation fault dire? Significa segmento in memoria segmentata modello? Se sì, perché può ancora succedere di paging modello di memoria oltre che di memoria segmentata modello?
    • Vedere la mia modifica per le risposte.
    • La maggior parte degli errori di pagina non vengono notati dal programma, ma Wikipedia dice che “non valido” pagina di errore (en.wikipedia.org/wiki/Page_fault#Invalid) potrebbe causare un errore di segmentazione (a seconda di quale sistema operativo stai usando).
  2. 9

    Un errore di segmentazione si verificano quando la memoria non è consentito di essere accessibile (non esiste, o è vietato). Più frequentemente si verificano quando si risolvere un variabile null o eseguire la fine di una matrice. Pagina guasti si verificano quando la memoria è mappata ma non caricato è possibile accedere. Non sono errori, e il segnale per il sistema operativo che dovrebbe caricare la pagina in memoria.

    • Grazie! (1) che Cosa sono lì relazione con segmentato modello di memoria e di memoria di paging modello? (2) cosa significa “segmentazione” in segmentation fault dire? Significa segmento in memoria segmentata modello? Se sì, perché può ancora succedere di paging modello di memoria oltre che di memoria segmentata modello?
    • Un altra causa di errore di segmentazione: la scrittura di un VALIDO indirizzo di memoria che risiede in una pagina di memoria con pagina protezioni impostato su sola lettura o di lettura/exec solo. Per esempio, la scrittura di un indirizzo .testo (codice) sezione causare un SIGSEGV (ma leggendo quello stesso indirizzo saranno al sicuro)

Lascia un commento