Oppure

Loading
10/10/16 11:22
TheDarkJuster
Come sapete i PC che utilizzano Windows sono macchine di von Neumann.

Questo significa che deve essere possibile eseguire codice dalla memoria principale....

Su Windows immagino ciò si raggiunga creando una pagina di memoria virtuale e assegnandole la possibilità di eseguire codice.

Per eseguirlo basterà assegnare a un puntatore a funzione l'indirizzo di partenza della pagina e fare func() ?

O queste cose sono bloccate dal s.o. e quindi logicamente declassare la macchina come Harvard?
aaa
10/10/16 11:47
Mi sa che stai facendo confusione ...

Quello che hai scritto, compresa la deduzione, è senza senso.

Lascia stare Windows o il SO in generale ed esamina solo l'hardware. Le macchine con CPU x86 / x64 utilizzano la stessa memoria per codice e dati, quindi la loro architettura è di tipo "von Neumann". Stop.
10/10/16 12:00
TheDarkJuster
Ok, questo lo capisco.

La mia domanda su bassa su un concetto un pò più articolato: in un s.o. multitasking non collaborativo ogni processo ha (quasi) il completo controllo sulla macchina, quindi pensiamo alla macchina virtuale che il s.o. crea per i processi.... In base alle sue caratteristiche.... Se fosse una macchina reale sarebbe una macchina di von Neumann?
aaa
10/10/16 12:20
Ripeto ... il sistema operativo non c'entra nulla !

L'architettura è e resta di von Neumann.

Quello che fa il sistema operativo (e non da solo ma in collaborazione con caratteristiche hardware precise delle CPU) è di mettere in atto sistemi di protezione di accesso alla memoria, che non spostano di una virgola il fatto che l'architettura sia di von Neumann.

Con i corretti permessi (pensa al kernel) la memoria può essere gestita come vuoi. Con una architettura Harvard NON potresti farlo perché i segnali di controllo delle due memorie non sono gestibili dal SO.
Ultima modifica effettuata da 10/10/16 12:23