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


Concetto Base: Algoritmi e Software in Informatica, Appunti di Elementi di Informatica

Una panoramica introduttiva sul concetto di algoritmo e il ruolo del software in relazione ai computer. Esplora la distinzione tra software di sistema e applicativo, il ruolo dei driver, il kernel e l'interfaccia utente. Inoltre, tratta il concetto di gestione della memoria e la compressione dei file.

Tipologia: Appunti

2019/2020

Caricato il 11/05/2020

elisa-rosso-2
elisa-rosso-2 🇮🇹

4.5

(54)

35 documenti

1 / 7

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Software
Algoritmi e programmi
Il software è quella parte immateriale del computer che permette al calcolatore di svolgere un
determinato compito.
Per comprenderne il significato, bisogna individuarne 3 componenti:
● un software deve svolgere un compito, ossia risolvere un problema: un problema deve specificare
la tipologia dei dati in ingresso (input) e dei dati in uscita (output);
● un algoritmo è una procedura automatica che risolve un determinato problema: specifica la
sequenza di istruzioni da compiere sui dati in input per ottenere come output la soluzione corretta
del problema;
● gli algoritmi sono la base dell’informatica, che si occupa di creare procedure automatiche
per risolvere problemi in maniera affidabile, e preferibilmente rapida ed efficiente.
● un programma, o software, è la trascrizione (o implementazione) di un algoritmo in un linguaggio
di programmazione, ossia un linguaggio che permette di esprimere delle istruzioni che un computer
è in grado di eseguire;
● il compito del programmatore è scrivere questi programmi usando uno dei moltissimi
linguaggi di programmazione esistenti.
Il concetto di algoritmo non è per forza legato ai computer : uno dei più antichi è quello di Euclide.
Software e computer
Un utente non accede direttamente all’hardware di un computer, ma passa attraverso il software,
ossia i programmi salvati sulla memoria secondaria. Questi sono formati da istruzioni che, eseguite
attraverso l’hardware del computer, permettono di svolgere un determinato compito.
Il software è diviso in due tipologie:
● Software di sistema (il sistema operativo e le sue componenti);
● Software applicativo (i programmi installati dall’utente).
Gli utenti interagiscono con il computer attraverso applicativi (o applicazioni, o software
applicativi) che a loro volta comunicano con il software di sistema, che si occupa della gestione
dell’hardware.
● anche quando si pensa di interagire col sistema operativo, in buona parta dei casi si sta
utilizzando un applicativo, messo a disposizione dagli sviluppatori del sistema operativo.
Software di sistema
Il software di sistema si presenta come intermediario tra i programmi applicativi e l’hardware,
fornendo ai primi una rappresentazione astratta dell’hardware.
● In questo modo i programmi applicativi possono essere scritti riferendosi alla rappresentazione
astratta, e non devono essere riscritti per poter interagire con ogni possibile hardware differente!
● Dato che ogni sistema operativo è differente, ognuno mette a disposizione dei comandi diversi per
interagire con l’hardware: per questo motivo, un applicativo creato per funzionare su un certo
sistema operativo non funziona se viene fatto girare su di un altro!
Il software di sistema è composto da:
● Driver;
● Sistema operativo, a sua volta composto da: ● Kernel; ● Interfaccia utente (grafica o da linea di
comando).
Software di sistema: driver
Un driver è un software che permette al sistema operativo di utilizzare un dispositivo hardware,
dialogandoci attraverso un'interfaccia standard che astrae dall'implementazione dell'hardware e che
ne considera solo il funzionamento logico:
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Concetto Base: Algoritmi e Software in Informatica e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Software Algoritmi e programmi Il software è quella parte immateriale del computer che permette al calcolatore di svolgere un determinato compito. Per comprenderne il significato, bisogna individuarne 3 componenti: ● un software deve svolgere un compito, ossia risolvere un problema: un problema deve specificare la tipologia dei dati in ingresso (input) e dei dati in uscita (output); ● un algoritmo è una procedura automatica che risolve un determinato problema: specifica la sequenza di istruzioni da compiere sui dati in input per ottenere come output la soluzione corretta del problema; ● gli algoritmi sono la base dell’informatica, che si occupa di creare procedure automatiche per risolvere problemi in maniera affidabile, e preferibilmente rapida ed efficiente. ● un programma, o software, è la trascrizione (o implementazione) di un algoritmo in un linguaggio di programmazione, ossia un linguaggio che permette di esprimere delle istruzioni che un computer è in grado di eseguire; ● il compito del programmatore è scrivere questi programmi usando uno dei moltissimi linguaggi di programmazione esistenti. Il concetto di algoritmo non è per forza legato ai computer : uno dei più antichi è quello di Euclide. Software e computer Un utente non accede direttamente all’hardware di un computer, ma passa attraverso il software, ossia i programmi salvati sulla memoria secondaria. Questi sono formati da istruzioni che, eseguite attraverso l’hardware del computer, permettono di svolgere un determinato compito. Il software è diviso in due tipologie: ● Software di sistema (il sistema operativo e le sue componenti); ● Software applicativo (i programmi installati dall’utente). Gli utenti interagiscono con il computer attraverso applicativi (o applicazioni, o software applicativi) che a loro volta comunicano con il software di sistema, che si occupa della gestione dell’hardware. ● anche quando si pensa di interagire col sistema operativo, in buona parta dei casi si sta utilizzando un applicativo, messo a disposizione dagli sviluppatori del sistema operativo. Software di sistema Il software di sistema si presenta come intermediario tra i programmi applicativi e l’hardware, fornendo ai primi una rappresentazione astratta dell’hardware. ● In questo modo i programmi applicativi possono essere scritti riferendosi alla rappresentazione astratta, e non devono essere riscritti per poter interagire con ogni possibile hardware differente! ● Dato che ogni sistema operativo è differente, ognuno mette a disposizione dei comandi diversi per interagire con l’hardware: per questo motivo, un applicativo creato per funzionare su un certo sistema operativo non funziona se viene fatto girare su di un altro! Il software di sistema è composto da: ● Driver; ● Sistema operativo, a sua volta composto da: ● Kernel; ● Interfaccia utente (grafica o da linea di comando). Software di sistema: driver Un driver è un software che permette al sistema operativo di utilizzare un dispositivo hardware, dialogandoci attraverso un'interfaccia standard che astrae dall'implementazione dell'hardware e che ne considera solo il funzionamento logico:

● un driver è una specie di “libretto di istruzioni” dell’hardware, scritto in un linguaggio che può essere compreso dal sistema operativo; ● in questo modo hardware diverso costruito da produttori diversi può essere utilizzato in modo intercambiabile, basta avere i driver corretti! ● un driver è specifico sia dal punto di vista dell'hardware che pilota (ossia ogni dispositivo ha un driver dedicato), sia dal punto di vista del sistema operativo per cui è scritto (quindi un driver scritto per un sistema operativo, ad esempio per Windows, non funziona se utilizzato su un altro, per esempio su MacOS). Solitamente è creato dal produttore dell’hardware. Per far funzionare un componente hardware (ad esempio una scheda video) sul computer, bisogna utilizzare i driver corretti del componente per il sistema operativo che si sta utilizzando. Se lo si vuole cambiare, basta sostituire fisicamente il componente, e caricare i nuovi driver specifici per il nuovo componente. ● I sistemi operativi moderni hanno un archivio di driver, quindi scaricano automaticamente i driver adatti all’hardware montato sul computer. Il sistema operativo Il sistema operativo è il software fondamentale presente su un computer: si occupa di gestire l’hardware, i programmi applicativi e la loro interazione con gli utenti. Ne esistono tanti, di diversi produttori; alcuni sono specifici per un certo tipo di dispositivi (ad esempio per smartphone). Ogni Sistema operativo è composto da: ● Kernel; ● Interfaccia utente (grafica o da linea di comando). Il kernel Il kernel costituisce il nucleo (o nocciolo) di un sistema operativo: è quella parte del sistema operativo che si occupa di fornire ai processi (i programmi in esecuzione sul processore) un accesso sicuro e controllato all'hardware. Le funzioni principali del kernel sono:

  • avvio del computer;
  • gestione del processore e dei processi (i programmi in esecuzione);
  • gestione della memoria principale;
  • gestione della memoria virtuale;
  • gestione della memoria secondaria;
  • gestione dei dispositivi (periferiche) di input/output. Avvio del computer : All’accensione del computer, viene automaticamente mandato in esecuzione il sistema operativo: questa fase prende il nome di boot, o bootstrap.
  • Il termine bootstrap indica che il computer esegue da solo un determinato processo poter operare (eseguire altri processi) ed iniziare a funzionare.
  • Con il termine reboot si intende il riavvio del computer, ossia il suo spegnimento seguito automaticamente dalla sua riaccensione. Una volta che il sistema operativo è attivo, questo manda in esecuzione altri programmi applicativi: alcuni utili ai suoi compiti, altri che sono stati selezionati dall’utente.
  • Maggiore è il numero di programmi che saranno automaticamente eseguiti all’avvio, maggiore sarà il tempo impiegato dal computer per avviarsi!
  • Se il computer impiega troppo tempo ad accendersi (dopo che è apparso il logo del sistema operativo), per velocizzare l’accensione è utile eliminare i programmi non fondamentali dall’avvio automatico. Gestione dei processi : Ormai tutti i computer sono multitasking, ossia possono eseguire più programmi contemporaneamente: il kernel deve gestire questa funzionalità. Dato che la CPU è unica , i processi non sono eseguiti tutti contemporaneamente, ma a turno. Il passaggio da un processo all’altro sul processore è chiamato context switch, ossia "cambio di

nome, inserire o modificare informazioni in un file, leggerne il contenuto, visualizzarne le caratteristiche; ● proteggere i propri file in un sistema multi-utente, per impedire ad altri utenti di leggerli, scriverli o cancellarli; ● avere la possibilità di organizzare un insieme di file in sottoinsiemi secondo le loro caratteristiche, per avere una visione ordinata e strutturata delle informazioni sul disco. Fisicamente, i file sono memorizzati nei blocchi che compongono la memoria secondaria, ma logicamente sono organizzati in una struttura ad albero che ne consente l’organizzazione e suddivisione logica (e non rispecchia per forza la loro collocazione fisica sulla memoria secondaria). Directory (cartella) Il numero di file che devono essere memorizzati su un disco può essere molto elevato: si ha quindi la necessità di mantenere i file in una forma ordinata. Un unico spazio (contenitore) di file è scomodo, perché non è possibile avere due file con lo stesso nome nello stesso contenitore. La soluzione è quella di raggruppare i file in sottoinsiemi, memorizzati all’interno di contenitori dette cartelle (directory), creando una struttura ad albero. Il file system deve permettere di poter compiere operazioni sulle cartelle, ossia: creazione, rimozione, rinomina, visualizzazione del contenuto, copia o spostamento di file tra cartelle. Pathname Nel caso di un’organizzazione gerarchica a più livelli, il solo nome del file (o della directory) non è più sufficiente ad identificarlo univocamente, perché file con lo stesso nome possono essere presenti in cartelle diverse. Ci sono due modi per individuare un file o directory in modo univoco: ● specificare l’intera sequenza di directory che lo contengono, a partire dalla radice dell’albero (pathname assoluto); ● specificare l’intera sequenza di directory che lo contengono, a partire dalla posizione corrente (pathname relativo); Compressione dei file Comprimere file e cartelle consiste nell’utilizzare appositi algoritmi (implementati da programmi) per ridurre lo spazio che le informazioni occupano (senza intaccare il contenuto):

  • eliminando dati ridondanti;
  • cancellando spazi inutilizzati;
  • memorizzando le informazioni in maniera più sintetica. La procedura di compressione crea un nuovo file, chiamato archivio, che contiene una copia di tutti i file e cartelle originali. L’efficacia della compressione dipende dall’algoritmo utilizzato e dai file e cartelle da comprimere : ● in alcuni casi la compressione permette di ridurre notevolmente la dimensione del file, in altri casi (ad esempio immagini in formato compresso, come jpeg) la differenza di dimensione col file originale sarà minima. File compressi non possono essere letti da soli, ma necessitano di un programma che li decomprima, riportandoli alla forma originale. I formati di file compressi più utilizzati sono: zip, 7z, rar, tar, gz. Gestione dei disposititvi IN/OUT Il kernel deve inizializzare tutte le periferiche collegate al computer, e gestirne la comunicazione. Queste periferiche si possono classificare come: Periferiche di INPUT Periferiche di OUTPUT Interfaccia utente L’interfaccia utente è quella parte del sistema operativo che permette all’utente di interagire con il computer. Si tratta di un tramite tra utenti e kernel, e permette agli utenti di:

● navigare nel file system per modificare file e cartelle; ● eseguire (lanciare) i programmi applicativi installati sul computer. L’interfaccia utente può essere di due tipi: testuale o grafica. Interfaccia testuale In un’interfaccia testuale, l’utente si ritrova davanti ad uno schermo nero. L’unico modo per interagire col computer è attraverso la tastiera, impartendo alla macchina comandi testuali. Era la modalità standard fino alla fine degli anni ‘80; successivamente tutti i sistemi operativi si sono dotati di interfaccia grafica (ma permettono ancora di usare un’interfaccia testuale, che rimane utile per alcune operazioni). Interfaccia grafica Nel caso di interfaccia grafica, o GUI (Graphical User Interface), l’utente impartisce buona parte degli ordini al computer attraverso l’uso del mouse. Gli applicativi installati dovranno mostrare a schermo una serie di pulsanti e menu utilizzabili mediante il puntatore del mouse, limitando l’uso della tastiera al solo inserimento del testo. A sua volta, il sistema operativo dovrà offrire degli applicativi per gestire l’interazione con l’utente. Il clic del mouse su un’icona o pulsante viene tradotto dall’applicazione in una opportuna sequenza di istruzioni, che saranno trasmesse al kernel ed il computer eseguirà (se possibile) per soddisfare la richiesta dell’utente. Funzioni dell'interfaccia utente L’interfaccia utente (sia grafica che testuale) deve permettere di: ● Gestire il sistema operativo: ● installare nuovi programmi, e disinstallare (rimuovere) i programmi installati; ● configurare il sistema. ● Gestire l’interazione tra utente e computer, permettendo all’utente di: ● mandare in esecuzione (lanciare) un programma (ossia cercarlo sulla memoria secondaria, copiarlo sulla memoria principale ed eseguirlo sulla CPU); ● tramite un programma (od un comando), creare nuovi documenti o modificare documenti esistenti; ● manipolare il file system: eliminare documenti, riorganizzare la disposizione dei documenti, rinominare documenti esistenti, … ; ● accedere alle periferiche. Tutte queste operazioni devono poter essere svolte in maniera semplice e rapida da parte dell’utente: ● i diversi sistemi operativi si differenziano nei modi in cui consentono agli utenti di interfacciarsi al computer, e nel tipo di algoritmi e strutture dati che utilizzano “dietro le quinte” per svolgere questi compiti. Software applicativo I Software applicativi sono programmi opzionali, installati sul computer dall’utente o dal sistema operativo per svolgere funzioni specifiche, come: ● elaboratori di testo (word); fogli elettronici (excel); browser (chrome, firefox); visualizzatori file pdf (acrobat reader) e immagini; videogiochi, ... Un applicativo per poter funzionare deve essere compatibile col sistema operativo sul quale viene installato. Gli applicativi (ma in generale il software) possono essere di due tipi: ● con copyright o software proprietario: è coperto da diritti d'autore, pertanto una volta acquistato non è possibile (dal punto di vista legale) copiarlo, modificarlo, rivenderlo. Si divide in tre sotto- categorie:

  • commerciale: il più comune, occorre acquistarlo;

● È utile per aumentare l’efficienza, perché un componente hardware costruito ad hoc sarà (tendenzialmente) più rapido del software che esegue lo stesso compito. Esempio: le schede di espansione. Questa idea è molto utilizzata nell’accezione di software come algoritmo: si crea un chip (microprocessore) che traduce in hardware un singolo algoritmo, in modo da rendere molto veloce lo svolgimento di quel compito. Da hardware a software Tramite software è possibile replicare il funzionamento di componenti hardware. È utile per: ● studiare il comportamento di un nuovo componente hardware che si sta progettando; ● testare il software da rilasciare su una macchina senza doverla necessariamente possedere (ad esempio, sviluppo app per smartphone); ● utilizzare software rilasciato su altri dispositivi o sistemi operativi. Questi concetti hanno portato allo sviluppo di: ● Emulatori; ● Macchine virtuali (Virtual Machine, VM); ● Container (macchine virtuali leggere). Emulazione Un emulatore è un software che replica il funzionamento di un sistema, ossia il suo hardware, su un altro sistema differente. Un emulatore riproduce attraverso software la circuiteria elettronica (l’hardware) di un altra macchina, e pertanto permette di eseguire il software del sistema emulato. ● Visto che riproduce solamente l’hardware, un emulatore è inutile se non si possiede anche il software del sistema emulato! ● Per poter funzionare in maniera efficace, la macchina emulata deve essere meno potente della macchina su cui viene eseguito l’emulatore! Da non confondere con simulatore, un software che replica il comportamento di un sistema. Un simulatore riscrive completamente il codice del programma da simulare, che in origine gira su una macchina, per farlo eseguire su una macchina differente, ma in modo che appaia come nella macchina originaria. Macchina virtuale Una macchina virtuale (virtual machine, VM) è un emulatore particolare che crea un ambiente virtuale che riproduce l’hardware di un computer, su cui è possibile installare un sistema operativo e degli applicativi. ● I due programmi più noti per la gestione di VM sono Vmware Workstation e Virtualbox. In ambito commerciale, ora si utilizzano molto delle versioni “leggere” di macchine virtuali, chiamate container, che emulano solo alcune componenti di un computer. ● Ogni container si comporta come se fosse un computer a sé stante: se un applicativo eseguito in un container ha dei problemi, non influisce sugli altri container. ● Il gestore di container più noto è Docker.