Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Informatica: Algoritmi, Linguaggi di Programmazione e Sistemi Operativi, Sintesi del corso di Elementi di Informatica

Questo testo introduttivo esplora i concetti fondamentali dell'informatica, dal concetto di esecutore e programma, al linguaggio macchina e l'assemblatore, fino ai linguaggi di programmazione di alto livello e il ruolo del traduttore. Viene inoltre presentato il concetto di macchina astratta, la teoria di Church-Turing e l'ingegneria del software. Il documento inoltre tratta argomenti come la gestione della CPU, della memoria virtuale, delle periferiche e della rete.

Tipologia: Sintesi del corso

2019/2020

Caricato il 04/08/2020

laura-andreoli-1
laura-andreoli-1 🇮🇹

4.5

(18)

13 documenti

1 / 8

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
CAPITOLO 2
IL SOFTWARE
Grazie ad esso il calcolatore è estremamente flessibile.
GLI ALGORITMI
Sequenza di istruzioni per realizzare un trattamento dell’informazione, di risolvere uno specifico problema.
Ogni algoritmo deve avere le seguenti caratteristiche:
- deve avere un esecutore (in ambito informatico è il calcolatore)
- ha tipicamente dei dati di input e output
-deve essere formulato in un linguaggio comprensibile all’esecutore
-deve contenere solo istruzioni elementari (esecuzione di operazioni elementari)
-non deve essere ambiguo
-deve specificare l’ordine di esecuzione delle istruzioni
-deve essere formulato in un numero finito di istruzioni
-deve essere deterministico- eseguendo lo stesso algoritmo sugli stessi dati di input, l’esecutore deve
generare sempre gli stessi output.
Un algoritmo parametrico è un algoritmo che, facendo riferimento ai dati in input, è in grado di risolvere
non un solo problema ma una classe di essi.
Esempio di algoritmo:
Le ricette
Dati di input: acqua, pasta, sale; preparazione..
Dati di output: pasta cotta
I PROGRAMMI , I LINGUAGGI DI PROGRAMMAZIONE E I TRADUTTORI
Un linguaggio di programmazione è un linguaggio formale per scrivere algoritmi.
Un programma è un algoritmo espresso in linguaggio di programmazione.
Un programmatore è una persona che “insegna” algoritmi ai calcolatori scrivendo programmi.
Il linguaggio macchina è caratteristico della CPU →attività noiosa e lunga
Per questo è stato creato il linguaggio assemblatore→ a ogni istruzione del linguaggio macchina associa una
codifica in lingua inglese.( Input file in linguaggio assemblatore, Output file tradotto in linguaggio macchina)
2 importanti differenze
La sequenza di azioni contiene spesso degli
elementi di ambiguità risolti da un esecutore
intelligente es: spesso non si specificano gli
strumenti da utilizzare.
Non tutti i casi possibili vengono specificati es:
è chiaro che se c’è puzza di bruciato conviene
spegnere il forno, anche se la ricetta non lo
specifica.
pf3
pf4
pf5
pf8

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Algoritmi, Linguaggi di Programmazione e Sistemi Operativi e più Sintesi del corso in PDF di Elementi di Informatica solo su Docsity!

CAPITOLO 2

IL SOFTWARE

Grazie ad esso il calcolatore è estremamente flessibile. GLI ALGORITMI Sequenza di istruzioni per realizzare un trattamento dell’informazione, di risolvere uno specifico problema. Ogni algoritmo deve avere le seguenti caratteristiche:

  • deve avere un esecutore (in ambito informatico è il calcolatore)
  • ha tipicamente dei dati di input e output -deve essere formulato in un linguaggio comprensibile all’esecutore -deve contenere solo istruzioni elementari (esecuzione di operazioni elementari) -non deve essere ambiguo -deve specificare l’ordine di esecuzione delle istruzioni -deve essere formulato in un numero finito di istruzioni -deve essere deterministico- eseguendo lo stesso algoritmo sugli stessi dati di input, l’esecutore deve generare sempre gli stessi output. Un algoritmo parametrico è un algoritmo che, facendo riferimento ai dati in input, è in grado di risolvere non un solo problema ma una classe di essi. Esempio di algoritmo: Le ricette Dati di input: acqua, pasta, sale; preparazione.. Dati di output: pasta cotta I PROGRAMMI , I LINGUAGGI DI PROGRAMMAZIONE E I TRADUTTORI Un linguaggio di programmazione è un linguaggio formale per scrivere algoritmi. Un programma è un algoritmo espresso in linguaggio di programmazione. Un programmatore è una persona che “insegna” algoritmi ai calcolatori scrivendo programmi. Il linguaggio macchina è caratteristico della CPU →attività noiosa e lunga Per questo è stato creato il linguaggio assemblatore→ a ogni istruzione del linguaggio macchina associa una codifica in lingua inglese.( Input file in linguaggio assemblatore, Output file tradotto in linguaggio macchina) 2 importanti differenze La sequenza di azioni contiene spesso degli elementi di ambiguità risolti da un esecutore intelligente es: spesso non si specificano gli strumenti da utilizzare. Non tutti i casi possibili vengono specificati es: è chiaro che se c’è puzza di bruciato conviene spegnere il forno, anche se la ricetta non lo specifica.

Vengono realizzati i LINGUAGGI DI PROGRAMMAZIONE DI ALTO LIVELLO, più vicini ad altri linguaggi utilizzati dall’uomo che rendono l’attività piu semplice e produttiva. Naturalmente un programma scritto in linguaggio di programmazione di alto livello deve essere tradotto in linguaggio macchina → attività svolta dal TRADUTTORE. ↓ Due tipi: Compilatore – riceve in input l’intero programma in linguaggio di alto livello ( Programma sorgente) e produce in output la sua traduzione in macchina(progr.oggetto) PIU VANTAGGIOSO solo quando il programmatore vuole distribuire il proprio programma ad altri. Interprete – riceve in input il programma sorgente e ne traduce le singole istruzioni facendole eseguire direttamente. PIU VANTAGGIOSO. La macchina astratta = combinazione di un calcolatore e del relativo traduttore in linguaggio alto livello. La macchina fisica = rappresentata solo dal calcolatore. LA MACCHINA DI TURING MDT Alan Mathison Turing ( 1912-1954) il padre della moderna informatica. MDT = dispositivo\sistema automatico per l’elaborazione dell’informatica semplice ma potente di entità astratta. E’ costituita da: -un alfabeto finito di simboli contenente il simbolo speciale Blank -un nastro di lunghezza infinita diviso in celle, ognina contiene un simbolo dell’alfabeto -una testina in grado di leggere e scrivere le celle e di spostarsi, sempre posizionata sulla cella corrente -un insieme finito di stati (stato iniziale e finale) -un registro di stato che memorizza lo stato corrente -una tabella delle azioni o funzione di transizione Tesi di Church Turing = se una funzione è considerata calcolabile allora esiste una macchina di turing in grado di calcolarla. L’INGEGNERIA DEL SOFTWARE Branca dell’ingegneria che si occupa di sviluppare approcci sistematici e disciplinati allo sviluppo, alla messa in opera e alla manutenzione del software a livello industriale. CICLO DI VITA DEL SOFTWARE = Analisi – scopo produrre un documento di specifica contenente la definizione del problema che il software dovrà risolvere, dei costi, delle caratteristiche. Progettazione – partendo dal doc. specifica tratteggia la struttura del s.w. generando un documento che ne delinea l’architettura. Implementazione o Codifica – realizzazione di programmi Collaudo – sottopone s.w. a dei test per verificare i requisisti dell’analisi. Rilascio o Deployment – installazione del prodotto s.w. presso gli utenti. Manutenzione – attività successive al rilascio.

LA GESTIONE DELLA CPU

Anni 40’ calcolatori erano mono programmati cioè in grado di mantenere una memoria centrale ed eseguire un solo programma per volta, non avevano un sistema operativo. Linguaggio macchina codificato su schede perforate organizzate in lotti detti batch. Anni 50’ viene introdotto il monitor, una prima versione di sistema operativo in grado di automatizzare l’avvio dei programmi. Mediante un apposito linguaggio di comando = Job Control Language, si disponeva di un Job = un programma eseguito dal monitor per organizzare l’esecuzione di un certo numero di programmi. Sistemi batch Anni 60’ i calcolatori divennero sistemi multi programmati in grado di tenere in RAM più programmi contemporaneamente. I videoterminali portarono alla scomparsa delle schede perforate introducendo la possibilità per il calcolatore di interagire con l’utente. Nacquero molte applicazioni classificate in: Applicazioni I\O bound – interattive. Applicazioni CPU bound – non interattive. Si collegarono più terminali allo stesso calcolatore – sitema timesharing \ multitasking in grado di offrire un parallelismo virtuale, cioè di simulare per ciascun utente una CPU a lui dedicata. Viene introdotto il concetto di processo un entità dinamica in contrapposizione al programma che, in quanto insieme di istruzioni in linguaggio macchina è un’entità statica. In ogni istante il processo si trova : Pronto In esecuzione In attesa I processi vengono messi nello stato di esecuzione tramite l’operazione di context swapping. LA GESTIONE DELLA MEMORIA CENTRALE \ RAM L’esecuzione di un programma richiede la creazione di un processo a cui è necessario allocare spazi nella RAM. La multiprogrammazione prevede la coesistenza di più processi. Coesistenza porta alla nascita di conflitti serve un gestore per dirimerli che deve essere in grado di:

  • Controllare con efficienza la RAM
  • Garantire lo spazio necessario per ciascun processo
  • Proteggere lo spazio
  • Gestire spazi comuni tra processi Attività svolte dalla memoria virtuale (anni 60’) per cui ogni programma opera come se avesse l’intera RAM a sua disposizione. Il gestore divide la RAM in pagine e grazie alla Memory Management Unit il suo codice e la sua area dati vengono posizionati nelle pagine libere della RAM. Se l’occupazione prevede un numero di pagine superiore a quelle disponibili provvede lo swapping , con il trasferimento in area swap su memorie di massa

LA GESTIONE DELLE PERIFERICHE

I sistemi operativi hanno inglobato un gestore con lo scopo di consentire a ogni processo di lavorare su periferiche virtuali : -un processo opera come se la periferica sia a sua completa disposizione

  • il processo è device independent ( impiega i comandi di alto livello appropriati al tipo di periferica) grazie ai driver ( trasforma comandi in istruzioni specifiche e si occupa della sincronizzazione e degli indirizzamenti). Fornisce al SO tutti i dettagli per gestire una periferica. Plug and play = capacità del calcolatore di rilevare la presenza di una nuova periferica e di riconoscere il driver appropriato, di installarlo e configurarlo, tutto autonomamente. LA GESTIONE DEI FILE Il file system si occupa delle gestione delle memorie di massa al cui interno sono memorizzati i file. Utilizza una struttura logica gerarchica a supporto dell’utente organizzando i file in basa al loro contenuto. Nel supporto di memoria viene creata una cartella = radice , essa puo contenere a sua volta file e cartelle che a loro volta possono contenere altri file e cartelle dando origine a una struttura ad albero. Ogni file e cartella sono identificati da un nome e un pathname = descrizione del percorso più breve per raggiungerli partendo dalla radice. Molti file system supportano la possibilità di sovrapporre alla struttura ad albero dei riferimenti (collegamenti, link). Per ogni file o cartella il file system memorizza un insieme di propietà :
  • Il formato
  • Le dimensioni
  • La data e l’ora di creazione
  • La data e l’ora dell’ultima modifica
  • Le autorizzazioni E deve consentire varie operazioni : creazione, lettura, modifica, eliminazione, spostamento, backup. LA GESTIONE DELLA RETE I moderni sistemi operativi sono definiti sistemi operativi di rete perche progettati con la connessione del calcolatore in rete. Esistono differenti modalità di interazione tra utenti e calcolatori nell’ambito di una rete :
  • interazione uomo calcolatore locale = no connessione di rete
  • interazione uomo - calcolatore remoto = tramite applicazione in esecuzione su calcolatore locale (client)l’utente interagisce con altra applicazione in esecuzione su calcolatore remoto (server) connesso in rete
  • interazione tra uomini mediata da calcolatori = tramite un client l’utente interagisce tramite uno o più server con un altro utente. L’INTERFACCIA CON L’UTENTE E’ la componente che gestisce l’interazione uomo/macchina. Il sistema operativo deve identificare l’utente = autenticazionedimostrazione di conoscenza (credenziali) dimostrazione di possesso (smart card e simili) dimostrazione di caratteristiche fisiche (dati biometrici es. lettura impronte digitali)