Newsgroup: it.comp.hardware.motherboard
Titolo: Cpu...chipset e sistemi operativi

salve a tutti del Ng...quello che mi premerebbe sapere č quanto segue:
come interagisce un processore con un sistema operativo.......????
Quali sono le parti in causa??
Perkč un processore č piů indicato per un sistema operativo piuttosto
che per un altro???
Qualcuno di voi č in grado di delucidarmi ....in parole se non
semplici...quanto piů possibile comprensibili??
Altrimenti..esiste in rete qualcosa di non complicatissimo ...tutorial
eccetera ...che aiutino uno poco esperto come me a capire piů
approfondiatmente il funzionamento dell'insieme macchina-sistema
opreativo-software apllicativi ????

che per un altro???
Perche' _quel_ OS e' ottimizzato di piu' per quella CPU...
Se ti interessa ti posso mandare (Se li trovo ancora :-) documenti
del corso di Sistemi Operativi (Se li trovo perche' sono passati
piu' due anni...)
Ovviamente in email :-) qui siamo decisamente OT.
Simone

 semplici...quanto più possibile comprensibili??
Ci provo, semplificando molto.
Il processore è composto da diverse aree al suo interno. La maggior parte
sono banchi di memoria di diverso tipo per la sosta o lo "stoccaggio" di
informazioni in attesa di essere o già processate. L'unità di calcolo vera e
propria è un numero abbastanza esiguo di transistor che processa blocchi di
dati di una lunghezza precisa (8, 16, 32 o 64 bit).
La cosa più importante del processo, però è il modo in cui questi dati
vengono "accodati" prima di passare per il calcolo, in modo da ridurre al
massimo i tempi morti o i calcoli inutili. Di questa ottimizzazione si
occupa il compilatore della cpu, che conosce tutti i segreti del processore
e i modi migliori per comporre i set di dati sfruttando al meglio le aree
interne di memoria (o almeno dovrebbe).
A questo punto entra in gioco il SO. Se il suo kernel (la parte che si
occupa principalmente del processore) è scritto praticamente come il
compilatore sarà superottimizzato, velocissimo, ma avrà l'handicap di
riuscire a funzionare al meglio solo su un processore e stentatamente su una
classe di prodotti (perchè dividono l'architettura di base). Le alternative
sono riscrivere una versione di SO per ogni classe di processori (come
accade per gli Unix) o costruirne uno in grado di funzionare decentemente
bene su tutte le piattaforme (come i Windows).
Nel primo caso la bontà dell'ottimizzazione deriva strettamente dalla
qualità del compilatore della casa produttrice del chip e dalla quantità di
informazioni messe a disposizione degli sviluppatori indipendenti. Nel
secondo la software house deve compiere necessariamente delle scelte
(dettate da fattori di natura economica legati principalmente alla
diffusione successiva del prodotto sul mercato), privilegiando alcune
soluzioni e penalizzandone di conseguenza altre.
Lo stesso discorso si fa per il resto della struttura hw. I produttori di
chipset e di schede, basandosi sulle informazioni fornite dal compilatore di
fabbrica e
dalle sue press release costruiscono sistemi più o meno ottimizzati e più o
meno ben ingegnerizzati, secondo le loro capacità e secondo la qualità delle
info, e forniscono anche i driver (parti del kernel del SO) per farli
funzionare al meglio. Anche qui la qualità e l'integrazione dei driver
dipendono dalle informazioni che chi sviluppa il SO fornisce.
Sopra tutto questo stanno le applicazioni, che chiedono al SO di tradurre le
loro funzioni per il processore e il resto dei componenti. Anche qui
l'integrazione è dipendente dalla conoscenza che gli sviluppatori riescono
ad avere del SO.
Spero di essere stato il più semplice e chiaro possibile. Mi scuso con
quanti storceranno il naso per le semplificazioni a volte eccessive.
Se ci sono altri dubbi..........
Ciao        8-)


ti ringrazio....ho da studiare altra roba ...
ma a tempo perso mi interesserebbe molto erudirmi a rigurado...
ciao

> che per un altro???

Quindi se ho ben capito....è cosa importantissima 
il nucleo di un sistema operativo ...(kernel), tale nucleo 
per ottimizzare il rapporto processore/sistema operativo 
secondo quanto detto dovrebbe essere scritto allo stesso modo
del compilatore della cpu utilizzata.....
Per esempio se ho un kernel scritto a 16 bit ....e l'architettura del
processore utilizzato prevede un compilatore della cpu a 32 bit
cosa accadrebbe??
Intuitivamente ....solo intuitivamente potrei dedurre che il sitema
processore /sistema op non è sfruttato al meglio ...
P.S.
Scusa la mia garnde ignoranza....per "compilatore della cpu" 
intendi una sorta di firmware implementato in qualche area
..probabilmente rom del processore...quando questi viene programmato?
Scusa la mia pedulanza....
Ti saluto e ti ringrazio nuovamente !!

..probabilmente rom del processore...quando questi viene programmato?
Ah, ecco :-)
No, il compilatore e' un software anch'esso (quindi piu' o meno
ottimizzato anch'esso, ma questo e' un altro discorso) che si
occupa, in varie fasi (ci ho appena fatto un esame :-) di tradurre
il codice sorgente di un programma (listato) in un codice eseguibile.
Solo nelle ultime fasi della compilazione entra in gioco l'ottimizzazione
del codice stesso.
Simone



si certo....sapevo cosa era un compilatore......
la stessa cosa di uno che ti compila un file di c....
e te lo rende .exe......ok ok..ci siamo...ti ringrazio...anche se 
non capisco bene che intendi per compilattore della cpu....
appunto...il compilatore rende eseguibile un listato scritto in una
qualsivoglia forma di linguaggio ad alto livello...o anche basso...
ma che vuol dire compilatore della cpu non credo dui averlo proprio
capito...
cmq ..ti ringrazio molto uguale !!
Ciao

 capito...
Prende l'eseguibile .exe o qualsiasi altra istruzione e la "riformatta"
correttamente per farla passare al meglio in tutte le aree del processore.
Teoricamente, come ho già detto, spezzetta l'istruzione e la indirizza nelle
appropriate aree del processore, al fine di massimizzare la sua velocità ed
efficienza.
Per dirla alla tua maniera prende un .exe generico e lo trasforma in un
.Pentium.exe oppure in un .PPC.exe.
Ciao        8-)



molto chiaro ora....
ti ringrazio.....e scusa per la banalità delle mie richieste...
ma non ne so niente di questa roba...vorrei recepire il più
possibile....ciao !!

.Pentium.exe oppure in un .PPC.exe.
Scusa... ma esiste un qualcosa del genere??
L'ottimizzazione del codice si fa della fase back end
di compilazione, prima ancora delle generazione
del codice target (front end) o di un bytecode.
Simone

 del codice target (front end) o di un bytecode.
Mi dispiace, ma questo per la mia formazione č arabo.
Ritenta in parole molto piů povere.
Ciao        8-)

Ritenta in parole molto piů povere.
Ok, ci provo :-) In soldoni : il compilatore prende l'input
(testo ascii) e ne fa:
- Analisi Lessicale
- Analisi Grammaticale
- Albero di sintassi astratta
- Analisi di semantica statica
- Generazione di codice intermedio (bytecode)
- Ottimizzazione di questo
- Generazione del codice target (eventualmente
  qui puo' uscire, dopo i link del caso, l'eseguibile)
Il tutto in genere in una passata, perche' meno costoso.
Le prime 6 fasi sono dette di front-end, l'ultima di back end.
Come vedi non ottimizzo un eseguibile, ma un bytecode
generato da un albero di semantica statica.
Quindi e' in questa fase che chi di dovere ottimizza il codice
a seconda dell'architettura e/o della CPU ospite (lasciamo
perdere i casi di compilazione incrociata...).
Tutto questo per dirti che una volta che ho l'eseguibile
(.com, .exe, elf, a.out, win32 che sia) non posso piu' farci niente...
Se l'argomento ti interessa ci sentiamo in email.
Io personalmente dopo averci dato un esame, ne ho le
palle pieeneee! :-))
Ciao!
Simone

 (.com, .exe, elf, a.out, win32 che sia) non posso piu' farci niente...
Questo lo sapevo, ma ho troppo semplificato nella spiegazione. Chiedo scusa
a gibbo, che prenda nota della correzione.
Ciao        8-)



prendo nota...ma per quello che ne capisco....
vi ringrazio cmq....