1 / 65

Le componenti di un calcolatore

Le componenti di un calcolatore. CPU Intel x86, AMD Memoria volatile RAM Memorie di massa Hard disk, dispositivi USB, PC Card Rete Wired e wireless LAN Bluetooth Altri dispositivi Porte di comunicazione (seriale, parallela, USB, firewire, ecc.). Il linguaggio della CPU. 31. 22. 21.

Download Presentation

Le componenti di un calcolatore

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le componenti di un calcolatore • CPU • Intel x86, AMD • Memoria volatile • RAM • Memorie di massa • Hard disk, dispositivi USB, PC Card • Rete • Wired e wireless LAN • Bluetooth • Altri dispositivi • Porte di comunicazione (seriale, parallela, USB, firewire, ecc.)

  2. Il linguaggio della CPU 31 22 21 12 11 0 PDE (10 bit) PTE (10 bit) OFFSET (12 bit) 20 bits 12 bits 20 bits 12 bits 4GB 1023 1023 PAGE 4KB 0 0 Page Directory Page Table FA 00 08 CF AA 21 88 ………. CR#3 0 ix86 RAM

  3. Il linguaggio della CPU • Codici operativi e dati • Indirizzi di memoria, porte di comunicazione, ecc. • Istruzioni direttamente eseguibili dal processore • Molto difficili da ricordare…  • Molta potenza… nessun controllo!! • Estrema possibilità di fare errori nella scrittura • Nessuno strumento di verifica del codice • Nessun approccio “logico” alla scrittura del codice • Solo istruzioni di basso livello

  4. Il sistema operativo • Windows, Unix/Linux, VMS, OS/400, ecc. • Inizialmente • Un insieme di servizi per consentire alle applicazioni di non dover “reinventare tutte le volte la classica ruota” • Una serie di controlli per evitare che le applicazioni possano “danneggiarsi” tra loro • Oggi • Tutto quello appena detto più.. • Una interfaccia grafica sulle risorse del sistema • Un punto di controllo e configurazione del nostro PC

  5. Come funziona Windows? • Parliamo ovviamente di Windows NT/2000/XP!!  • Un kernelche fornisce tutti i sistemi di base • Gestione dei processi in esecuzione • Gestione della memoria • Controllo su tutti i dispositivi attraverso drivers • Un insieme di interfacce di programmazione (API) per accedere ai servizi del kernel • Librerie di funzioni: USER, GDI, KERNEL, ecc. • Diffici da utilizzare direttamente • Una shell, o interfaccia grafica, per permettere l’interazione con l’utente

  6. Le caratteristiche fondamentali • Windows è un sistema multi-threading • Programmi e operazioni diverse possono essere eseguite in parallelo (se abbiamo più CPU..) • Windows è un sistema basato sul concetto di memoria virtuale • Ogni programma ha a disposizione 4Gb di memoria “fittizia” • Il sistema operativo si occupa di assegnare lo spazio nella memoria fisica e nel file di paginazione ai vari programmi • I programmi non possono “danneggiare” il kernel • I programmi sono “isolati” e non possono danneggiarsi tra loro

  7. Come si programma Windows? • Dipende dal tipo di applicazione che vogliamo realizzare • Basata su finestre grafiche • Web • Un servizio di sistema • Scrivendo un programma in un linguaggio di programmazione che viene trasformato in “codice macchina” • Compilato • Interpretato • Il programma interagisce con il sistema operativo attraverso le API • Per disegnare una finestra • Per scrivere sulla stampante, ecc. • Un esempio di applicazione Windows

  8. L’introduzione delle macchine virtuali • Inizialmente i programmi Windows erano scritti in linguaggio C, poi C++ • Molta potenza per il programmatore • Poco controllo sull’accesso ai servizi di sistema • Molto difficile da utilizzare in modo corretto • Ogni linguaggio aveva le sue caratteristiche • I suoi tipi di dati • Le sue librerie di funzioni • Il suo modo di gestire la memoria, gli errori, ecc.

  9. L’introduzione delle macchine virtuali • C’era la necessità di trovare qualcosa che funzionasse da “astrazione” dal sistema operativo per permettere al programmatore di concentrarsi su un “modello virtuale” di sistema • Concetto apparso inizialmente in ambito accademico • Java è probabilmente l’implementazione più famosa di questo concetto • Il .NET Framework di Microsoft è la soluzione creata per tutta la famiglia Windows

  10. Applicazione Codice e strutture dati Applicazioni monolitiche

  11. IDL Marshaling L’era di COM / CORBA C++ / Java / VB COM e CORBA consentono di integrare dei componenti.Ogni componente deve però fornire dei “punti di contatto” e gli oggetti non possono interagire direttamente

  12. .NET: oltre l’era di COM Con “.NET Framework Common Language Runtime”, i componenti sono costruiti su uno strato comune.Gli oggetti interagiscono direttamente.

  13. Perché .NET • Difficile effettuare sviluppo omogeneo • Molto tempo viene dedicato a far comunicare i vari “strati” • Serve un salto qualitativo per semplificare lo scenario • Ma non c’era COM ?

  14. VB C++ C# J# … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Base Class Library Common Language Runtime Architettura .NET Framework

  15. Cosa è .NET • È un ambiente di esecuzione (runtime environment) • È una serie di librerie e di strumenti per lo sviluppo di applicazioni • Per client Windows • Per il Web • Per la realizzazione di Web Services • Semplifica lo sviluppo e il deployment • Aumenta l’affidabilità del codice • È completamente indipendente da COM • È fortemente integrato con COM • Unifica il modello di programmazione

  16. Ambiente di esecuzione • Concetti chiave: • MSIL: Microsoft Intermediate Language • CLR: Common Language Runtime • CTS: Common Type System • CLS: Common Language Specification

  17. Codice MSIL Sorgenti Compilatore.NET CodiceMSIL (Assembly) .EXE/.DLL Codicenativo Output Compilatore JIT

  18. Codice MSIL Sorgenti Compilatore.NET CodiceMSIL (Assembly) .EXE/.DLL Codice + metadati Codicenativo Output Compilatore JIT

  19. Codice MSIL Ambiente di esecuzione .NET Runtime Sorgenti Compilatore.NET CodiceMSIL (Assembly) .EXE/.DLL Codicenativo Output Compilatore JIT

  20. Common Language Runtime • IL CLR offre vari servizi alle applicazioni Managed code (MSIL) Common Language Runtime (CLR) Funzionalità specifiche di CLR (es. Garbage Collection) Funzionalità esistenti (es. I/O su file) mediate da CLR Sistema operativo (Win32, …)

  21. Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Garbage Collector Class Loader Common Language Runtime

  22. Runtime Host • Esecuzione di un’applicazione .NET Processo Win32 (app.exe) MSCOREE.DLL MYCOMCLASS.DLL Managed World KERNEL.DLL MYNETCLASS.DLL Marshaling MSCORLIB.DLL

  23. Runtime Host • MSCOREE.DLL • “Ultima” DLL COM rimasta... • _CorDllMain: Entry-point del loader per caricare ed eseguire il codice IL • MSCORLIB.DLL • Implementa CTS (Common Type System) • Contiene BCL (Base Class Library) • Non si vede con DEPENDS.EXE, usare ADEPENDS.EXE • Diversi tipi processi host • Shell exe, ASP.NET, Internet Explorer, Servizi NT

  24. Sviluppo semplificato • Ambiente object-oriented • Qualsiasi entità è un oggetto • Classi ed ereditarietà pienamente supportati • Anche tra linguaggi diversi ! • Riduzione errori comuni di programmazione • Linguaggi fortemente tipizzati • Errori non gestiti • Meno memory leak: Garbage Collector

  25. Indipendenza dalla piattaforma • .NET è un’implementazione di CLI • Common Language Infrastructure • CLI è uno standard ECMA, definito con C# • ECMA-334, ECMA-335 • Esistono già altre implementazioni di CLI: • SSCLI (Microsoft, per Windows, FreeBSD e Macintosh) • Mono (per Linux) • DotGNU • Intel OCL (Open CLI Library) • …

  26. Distribuzione semplificata delle applicazioni • Assembly • Unità minima per la distribuzione, il versioning e la security • Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il “Manifest” • Può essere composto da uno o più file • Il manifest può risiedere in un file EXE/DLL separato, oppure in un EXE/DLL che contiene codice dell’assembly

  27. Modulo(file PE) Codice IL Metadati Manifest Assembly Assembly a modulo singolo

  28. Sicurezza e affidabilità del codice • Separazione spazi di memoria in un processo con AppDomain • Controllo del codice e sicurezza dei tipi • Sono impediti cast non sicuri, variabili non inizializzate, accessi ad array oltre i limiti di allocazione • Garbage Collector per tutti gli oggetti .NET • Gestione delle eccezioni • Miglioramento della diagnostica di errore • Integrata con Windows SEH

  29. Type safety • Isolamento della memoria • Consente l’esecuzione sicura di più applicazioni nello stesso processo • Type safety (sicurezza dei tipi) • Assicura isolamento della memoria • Assicura operazioni corrette rispettoal sistema di sicurezza • Non è richiesta dal Runtime • Verification • Assicura type safety

  30. Type safety • Si eliminano: • Cast non sicuri • Variabili non inizializzate • Indici di array fuori limite (out-of-bounds) • PEVERIFY.EXE • Tool linea di comando per verificare requisiti di type safety di un assembly

  31. Application Domain • Unità di elaborazione in .NET • Un processo può avere più AppDomain • Si può scaricare un AppDomain, non un assembly • Relazione thread – AppDomain • Runtime host creano AppDomain • ASP.NET, Internet Explorer, Shell, … • Gestione diretta degli AppDomain

  32. Garbage Collector • Gli oggetti vengono distrutti automaticamente quando non sono più referenziati • A differenza di COM, non ci si basa sul Reference Counting • Maggiore velocità di allocazione • Consentiti i riferimenti circolari • Perdita della distruzione deterministica • Algoritmo Mark-and-Compact

  33. NextObjPtr Root set Oggetti “vivi” Oggetti non raggiungibili Spazio libero Garbage Collector - fase 1: Mark

  34. Spazio recuperato NextObjPtr Root set Oggetti “vivi” Spazio libero Garbage Collector - fase 2: Compact

  35. Piattaforma multi-linguaggio • Libertà di scelta del linguaggio • Tutte le funzionalità di .NET Framework sono disponibili a tutti i linguaggi .NET • I componenti di un’applicazione possono essere scritti con diversi linguaggi • Impatto sui tool • Tool disponibili per tutti i linguaggi:Debugger, Profiler, Analisi “Code coverage”, ecc.

  36. CTS: Common Type System • Sistema di tipi comune • Alla base di tutti i linguaggi .NET • Progettato per linguaggi object-oriented, procedurali e funzionali • Esaminate caratteristiche di 20 linguaggi • Tutte le funzionalità disponibili con IL • Ogni linguaggio utilizza alcune caratteristiche • Common Language Specification (CLS) • Sottoinsieme di CTS • Regole di compatibilità tra linguaggi

  37. CTS: Common Type System • Alla base di tutto ci sono i tipi (le classi) • Fortemente tipizzato (compile-time) • Object-oriented • Campi, metodi, tipi nidificati, proprietà, ... • Overload di funzioni (compile-time) • Dispatch metodi virtuali risolto a runtime • Ereditarietà singola di implementazione • Ereditarietà multipla di interfacce

  38. Common Type System • Qualsiasi applicazione .NET è realizzata definendo un insieme di tipi + utilizzo (istanziazione) di questi ultimi insieme a quelli predefiniti da MS (Base Class Library) • Due categorie di tipi: • Tipi reference (riferimento) • Allocati su heap gestito • Tipi value (valore) • Allocati su stack o in oggetti gestiti (reference) • Tutti i tipi value possono essere visti come tipi reference • Boxing

  39. Estendibilità tipi value • I value type comprendono: • Tipi primitivi (built-in) • Tipi definiti dall’utente • Enum • Strutture • I tipi value definiti dall’utente hanno le stesse capacità dei tipi primitivi

  40. public struct Size { public int height; public int weight; } public class CSize { public int height; public int weight; } void Main() { Size v; // v istanza di Size v.height = 100; // ok CSize r; // r è un reference r.height = 100; // illegale, r non assegnato r = new CSize(); // r fa riferimento a un CSize r.height = 100; // ok, r inizializzata } Stack Heap v.height v.width height width r Class CSize Tipi value e reference in memoria

  41. Tipi nativi

  42. Boxing • I tipi value si possono sottoporre a “boxing” per supportare le funzionalità tipiche degli oggetti • Un tipo value “boxed” è un clone indipendente • Un tipo value “boxed” può tornaread essere value (unboxing) • System.Object è il tipo universale

  43. Stack int i = 123; object o = i; int k = (int)o; i Heap 123 int i = 123; o int 123 object o = i; Boxing k 123 int j = (int)o; Unboxing Boxing

  44. Gestione degli errori • Uniforme per tutte le classi • Gestione strutturata delle eccezioni • Concetto implementato nel CTS • Disponibile in tutti i linguaggi con sintassi diverse • Concetti universali: • Lanciare un’eccezione • Catturare un’eccezione • Codice di uscita da un blocco controllato (finally) • Non ha costi elevati (codice/prestazioni)

  45. a() b() Try c() d() Catch e As Exception f() End Try g() Sub c r() s() t() End Sub Sub s Dim a As MyClass a = null a.z() a.w() a.x() End Sub Gestione strutturata delle eccezioni

  46. Principali servizi del CLR • Garbage collector • Gestione del ciclo di vita degli oggetti • Problema della distruzione deterministica • Reflection • Analisi dei metadati di un assembly • Generazione di un assembly dinamico • Remoting • Chiamata di componenti remoti (.NET) • Interoperabilità (COM, Platform Invoke)

  47. Elaborazione sincrona e asincrona Elaborazionesincrona a() b() c() d() e() f() g() h() Tempo Elaborazioneasincrona a() fork c() e() g() join h() Thread 1 b() d() f() Thread 2

  48. Elaborazione sincrona e asincrona • Programmazione asincrona possibile da tutti i linguaggi • Chiamate asincrone • Thread • Thread pool • Componenti remoti • A volte è “involontaria”... • Nuovo problema: componenti thread-safe • Anche per gli sviluppatori VB!!

  49. Dove sono gli assembly • Assembly privati • Directory applicazione (e sub-directory) • Assembly condivisi • Global Assembly Cache (GAC) • c:\windows\assembly • Assembly scaricati da URL • Download cache • c:\windows\assembly\download GACUTIL.EXE • Tool per esaminare GAC e download cache

  50. Deployment degli assembly • XCOPY • Applicazioni ASP.NET • .CAB • Applicazioni Windows Forms - Code Download • .MSI (Windows Installer) • Applicazioni Windows Forms • Installazione in GAC di assembly condivisi • Configurazione shortcut

More Related