fondamenti teorici e programmazione
TRANSCRIPT
![Page 1: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/1.jpg)
FondamentiTeoricieProgrammazione
ModuloAArchitetturadeicalcolatori
Ioanna Miliou,Ph.D.
![Page 2: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/2.jpg)
Architetturadeicalcolatori
Inuncomputerpossiamodis8nguerequa;rounitàfunzionali:• ilprocessore(CPU)• lamemoriaprincipale(memoriacentraleoRAM)• lamemoriasecondaria(memoriadimassaomemoriaperiferica)• idispositividiinput/output
ArchitetturadivonNeumann
![Page 3: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/3.jpg)
Ilprocessore (dettoancheCPU,ovvero,CentralProcessingUnit)èil“cervellodelcalcolatore”chehaunodeiruolipiùimportanti.Coordinaleattivitàdituttelecomponentidelcalcolatore,interpretandoedeseguendoleistruzionidelprogrammacorrenteper:
• iltrasferimentodeidati• lacomunicazioneconleperiferiche• ilcalcoloveroeproprio
Processore
![Page 4: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/4.jpg)
Processore
Ilprocessoreforniscelacapacitàdielaborazionedelleinformazionicontenutenellamemoriaprincipale.• L’elaborazioneavvieneinaccordoasequenzediistruzioni(istruzionimacchina)• Illinguaggioincuisiscrivonoquesteistruzionivienechiamatolinguaggiomacchina• Programma:specificaunivocadiunaseriedioperazionichel’elaboratoredevesvolgere• Ècostituitodaunasequenzaordinatadiistruzionimacchina• Ilruolodelprocessoreèquellodieseguireprogrammiinlinguaggiomacchina
![Page 5: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/5.jpg)
ProcessoreHaleseguenti3componentiprincipali:• unitàlogico-aritmetica(ALU):effettuaicalcoli• unitàdicontrollo:coordinamentoditutteleoperazioni
• registri:celledimemoriaadaccessomoltoveloce,permemorizzareivalorisucuieffettuareilcalcoloegliindirizzi,dellelocazionidimemoriaincuisonomemorizzatiidatieleistruzionidelprogrammainesecuzione
Alfineditrasformareidatiininformazioniutilizzabili,ilprocessoreeseguiràilcicloFetch-Decode-Execute (FDE)continuo.Eseguendoquestociclo,ilprocessorerecuperaidatidallamemoriaprimaria.Quindi,idativerrannodecodificatiedeseguiticomeinformazioniutilizzabili.
![Page 6: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/6.jpg)
Memoriaprincipale
• Forniscelacapacitàdi“memorizzare”leinformazioni.• Èunasequenzadicelledimemoria(detteparole),tuttedellastessadimensione• Ognicellaècostituitadaunasequenzadibit• Ilnumeroh dibitdiunacelladimemoriadipendedall’elaboratore,edèunmultiplodi8:8,16,32,64• Ognicelladimemoriaèidentificatainmodounivocodalsuoindirizzo• Ilnumerok dibitnecessariperl’indirizzodipendedalnumerodicelledimemoria
k bit2k celle
![Page 7: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/7.jpg)
Memoriaprincipale
Caratteristicheprincipali:• Puòesseresialetta chescritta• scritturadistruttiva• letturanondistruttiva
• Altavelocitàdiaccesso• Èvolatile (siperdeilcontenutoquandosispegneilcalcolatore)
Dimensionedellamemoria:misuratainbyte (1byte=8bit)• Kilobyte=210 ~103 byte• Megabyte=220 ~106 byte• Gigabyte=230 ~109 byte• Terabyte=240 ~1012 byte
UnaltronomeperlamemoriaprincipaleèmemoriaRAM(RandomAccessMemory)cheindicacheiltempodiaccessoadunacellaèlostessoindipendentementedallaposizionedellacella
![Page 8: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/8.jpg)
Memoriasecondaria
Caratteristicheprincipali:• Nonèvolatile (nonsiperdeilcontenutoquandosispegneilcalcolatore)• Hacapacitàmaggioredellamemoriacentrale• Iltempodiaccessoèlentorispettoallamemoriacentrale• Ilaccessoèsequenziale enoncasuale
Tipidimemoriasecondaria:• Dischimagnetici(harddisk,floppydisk)• Dischiottici(CD,CD-ROM,DVD,Blu-ray)• Nastrimagnetici(streamingtape)• Flashmemory(chiaviUSB)
Lamemoriasecondaria,chiamataanchememoriadimassaomemoriaperiferica,èun'unitàchesiaggiungeallamemoriaprincipaleperaccrescernelecapacitàdimemorizzazione.
![Page 9: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/9.jpg)
Memoriasecondaria
• Tuttiidatieiprogrammisonomemorizzatidellamemoriasecondaria quandoilcalcolatoreèspento• All’accensioneilprogrammadiavviamento(bootstrap)vienecaricatonellaRAMedeseguito• Questoprovocailcaricamentoel’esecuzionedelKernel delsistemaoperativoesuccessivamentedelleprimitivedisistemaedelleapplicazionidicuisirichiedel’esecuzione• Inogniistantec’èunprogrammainesecuzione,equestoèmemorizzatonellaRAM
![Page 10: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/10.jpg)
Tipididispositiviinput:• Tastiera• Mouse• Scanner• Webcam• Microfono• Macchinafotograficadigitale
Tipididispositivioutput:• Stampante• Monitor• Altoparlanti• Cuffie
Dispositividiinput/output(I/O)• Èl’hardwarecheproducedataechemostraleinformazioni agliutentifinali.• Datacheappenasiproduconodaidispositiviinputvannomandatiallamemoriaprincipale.• Itipidiinformazionichepossonoesserevisualizzatidaidispositividioutputsonovideo,testo,immagine,animazione eaudio.Leinformazionivisualizzatepossonoessereditiposoftcopy ohardcopy.
![Page 11: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/11.jpg)
IlBus(Binary UnitSystem)
• Problema:comesipuòcollegarelevariecomponenti(fisicamenteseparate)diuncalcolatore,adesempio,processoreememoriacentrale?
• Problema:comefailprocessoreatrasmettereallaRAMibitchecodificanol’indirizzodiunaparola,ilcontenutodiunregistro,etc.?
• Problema:comefalaRAMatrasmetterealprocessoreibitchesonocontenutiinunaparoladimemoria?
• Collegareognicomponenteatuttelealtre(costososehomoltecomponentiseparate)• Usareununicocollegamentocondiviso
Busdisistema:insiemedicollegamenti(solitamenteinrame)checonnettetuttiicomponentidiun’architettura
![Page 12: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/12.jpg)
Esempio
• Digiti laparolaSAYAneltuoprogrammadielaborazionetestiusandolatuatastiera (dispositivodiinput).
• IdatiS, A,YeApasserannoallaRAM (memoriaprincipale).Sarannotenutilìtemporaneamente.Aquestopunto,sesispegneilcalcolatore,idatiscompariranno.
• Ilprocessore recupera(fetch)idatidallaRAM.Quindidecodificherà(decode)edeseguirà(execute)idatiperessereinformazioniutilizzabili.
• LeinformazioniverrannoinviateallaRAMedopoverrannovisualizzatesulmonitor ostampateutilizzandolastampante(dispositividioutput)inbasealleproprieesigenze.
• Sesalvileinformazioni,sarannoconservatepermanentementeneltuoharddisk(memoriasecondaria).Quindi,leinformazioninonscomparirannonemmenosespegniilcalcolatore.
![Page 13: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/13.jpg)
SistemaOperativo• Ilprogrammaèsempreestremamentecomplicato,perfortunaperòmolteoperazionisonoricorrenti:• Letturaememorizzazionedelprogrammainmemoria:trasferimentodallamemoriasecondariaallaRAM
• gestionedellamemoriasecondaria(filesystem)• gestionedeidispositividiI/Operlastampaeletturadeidati• gestionedellacomunicazioneconaltridispositivi• esecuzionedeiprogrammi(scheduling deiprocessi,multitasking)
• Pertuttequesteoperazioniesistonodellefunzioni lacuidescrizione(programma)èdefinitaunavoltapertuttenellamacchina,nelleprimitivedelsistemaoperativochevengonoinvocatetuttelevoltecheservono
• I modernisistemioperativisonodotatidiun’interfacciagraficacheagevolal’interazioneconl’utente,cheprevedonol’usodifinestre,barreemenudicomandidivariotipo
![Page 14: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/14.jpg)
ProgrammaIlcalcolatoredevecapirequellocheglivienedettoedevesaperfareciòcheglivienechiesto• Problema
• Interagireconlamacchinamedianteunlinguaggiopiùvicinoagliumani
• Soluzione• Linguaggidialtolivello• Traduttori/Compilatori/Interpreti
• Ilprogrammatore sioccupadi• Progettareunalgoritmoefficaceperlarisoluzionediunproblemadato• Tradurrequestoalgoritmoinistruzionieseguibilidauncomputermedianteunlinguaggiodiprogrammazione
![Page 15: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/15.jpg)
LinguaggiodiprogrammazioneUnlinguaggiodiprogrammazioneèunlinguaggioartificialepercomunicareconlemacchine• Linguaggidialtolivello(viciniall’utente)
• Vgenerazione:linguaggididescrizionedeiproblemiorientatiallarisoluzioneautomatica
• IVgenerazione:linguaggiperspecificiambitiapplicativi(ades.MATLAB)
• IIIgenerazione:linguaggiimperativieproceduralidiusogenerale
• Linguaggidibassolivello(viciniall’hardware)• IIgenerazione:linguaggiassemblativi(usodicodici
mnemoniciperleistruzioni)• Igenerazione:linguaggimacchina(sequenzedibit)
![Page 16: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/16.jpg)
LinguaggioMacchina
• Glicalcolatoricomprendonoinmanieradirettasoloistruzioniinbinario• Illinguaggiomacchinaèdirettamenteeseguibiledalcalcolatore-Senzanessunatraduzione• Eseguitoinmanieramoltoefficiente• Difficiledaprogrammarepergliumani• Nonportabile(impossibilitàdieseguirlo sumacchineconarchitetturediverse)• Soggettoaderrori• Difficiledamodificare
![Page 17: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/17.jpg)
LinguaggidiProgrammazionediAltoLivello
• UsanoparoleEnglish-like (Esempi:if,for,while,...),notazionematematicaepunteggiaturaperscrivereprogrammi• Sonopiùviciniailinguaggiumani• Ilprogrammatorepuòastrarredaidettaglilegatiall’architetturaedesprimereiproprialgoritmiinmodosemplice• Ilprogrammaprimadiessereeseguitodeveesseretradotto inlinguaggiomacchina
Traduttore• Latraduzionevieneeffettuatadauncompilatore,uninterprete,ounacombinazionedientrambi
![Page 18: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/18.jpg)
TraduttoreUnprogrammacheconverte ilcodicediprogrammiscrittiinundatolinguaggiodiprogrammazione(sorgenti) nellacorrispondenterappresentazioneinlinguaggiomacchina(eseguibili)
TipidiTraduttore• Compilatore• Interprete
![Page 19: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/19.jpg)
Compilatore• Traduttoreperlinguaggidialtolivello• Sioccupaditradurre unprogrammascrittoinunlinguaggiodialtolivellonelcorrispondenteprogrammascrittoinlinguaggiomacchina• Crea(compila)uninsiemediistruzioniinlinguaggiomacchinaperciascunaistruzionescrittainunlinguaggiodialtolivello• Accettainingressol’interoprogramma(istruzionichelocompongono)eproduceinuscitalarappresentazionedell’interoprogrammainlinguaggiomacchina
![Page 20: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/20.jpg)
Interprete
• Traduttoreperlinguaggidialtolivello• Traduceedeseguedirettamente ciascunaistruzionedelprogrammasorgente• Prendeun’istruzionediunprogrammascrittoinunlinguaggiodialtolivelloelatraducenellerelativeistruzioniinlinguaggiomacchina• Esegueimmediatamentelerisultantiistruzioniinlinguaggiomacchina
![Page 21: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/21.jpg)
Compilatorevs.Interprete
• Compilazione• Pro:applicazionipiùveloci• Contro:maggiorlavoronelprocessodimessaapuntoemanutenzione
• Interpretazione• Pro:consentetempidisviluppopiùcontenuti• Contro:produceprogrammimenoefficienti
![Page 22: Fondamenti Teorici e Programmazione](https://reader030.vdocumenti.com/reader030/viewer/2022012409/616a507b11a7b741a35125b3/html5/thumbnails/22.jpg)
Javascript
• Javascript èunodei linguaggidiprogrammazioneadaltolivello• Èun linguaggiodiscripting orientatoaglioggetti eaglieventi• Comunementeutilizzatonella programmazioneWeb latoclient perlacreazione,in sitiweb e applicazioniweb,dieffettidinamici interattivitramite funzionidi scriptinvocateda eventi innescatialorovoltainvarimodidall'utentesulla paginaweb inuso• Èun linguaggiointerpretato:ilcodicenonviene compilato,mainterpretato(inJavaScript latoclient,l'interpreteèinclusonelbrowserchesistautilizzando)