Internet e WWW
Rete: mappa di collegamento tra dispositivi simili. Gli elementi della rete comunicano attraverso il passaggio di flusso da un elemento all’altro della rete, il tutto regolato da norme.
Lan: local area network, rete locale.
Wan: wide area network.
Internet: è la più grande rete telematica mondiale. Funziona attraverso il principio di commutazione. Esistono centrali di commutazione, ovvero particolare computer detti router, questo attraverso dei circuiti che restano riservati per tutto il periodo della comunicazione. I canali di comunicazione sono di tutti contemporaneamente e su di essi possono viaggiare pacchetti di messaggi differenti.
I pacchetti: i messaggi vengono divisi in pacchetti i quali possono viaggiare in ordine alternato e per vie diverse. I pacchetti sono dotati di indirizzo, numero, informazioni che permettono il controllo della correttezza.
Protocollo TCP/IP: regole per la trasmissione su internet.
Categorie: Informatica Tags: browser, internet, web, www
Modelli informatici
Algoritmo: procedura computazionale che prende in input un valore e produce in output un valore o insieme di valori. Effettivamente calcolabile è una funzione numerica che usa un algoritmo. È calcolabile se produce il valore della funzione in un numero finito di passi. Esistono algoritmi approssimati, usati per risolvere problemi non risolubili esattamente. Il tempo di esecuzione di un algoritmo è la somma del tempo di esecuzione di ogni singolo step.
Complessità computazionale: è definita dal tempo di esecuzione di un algoritmo ed è valutato nel caso peggiore, in quanto è un limite superiore per ogni input. Maggiore è il tempo di esecuzione, maggiore è la complessità dell’algoritmo.
Tempo di esecuzione polinomiale: un algoritmo ha complessità polinomiale se il suo tempo di esecuzione è definito dall’ordine O(p(n)).
Tempo di esecuzione esponenziale: la complessità del tempo di esecuzione non può essere limitata, e al crescere di n cresce in modo esponenziale anche la difficoltà.
Intrattabilità: un problema è intrattabile se non esiste un algoritmo che può risolverlo in tempo polinomiale.
Intrattabili e non decidibili: non esiste un algoritmo che risolve un problema del genere.
Intrattabili e decidibili: esiste un algoritmo ma non può essere eseguito in tempo polinomiale anche da una macchina non deterministica.
Classe di problemi P: problemi risolubili in tempo polinomiale.
Classe di problemi NP: problemi risolubili in tempo polinomiale da una macchina non deterministica.
NP- completezza: sono i problemi in NP più complessi. Se si riesce a trovare un algoritmo in grado di risolvere in tempo polinomiale un qualsiasi problema NP-completezza, allora si possono risolvere tutti i problemi NP-C.
Categorie: Informatica Tags: algoritmo, calcolatore, computazionale, modello
Il sistema operativo (SO)
SO: è un insieme di programmi, detto software base che permette agli utenti di utilizzare le risorse offerte dal computer. Può essere in multiprogrammazione ed ha quindi il compito di gestire lo scheduling, la memoria e le risorse.
Spooling: termine riferito in particolare al processo di stampa, dove la CPU sposta l’informazione su una memoria o disco magnetico, che memorizza l’informazione fino al termine del processo.
Scheduling: operazione che il sistema operativo compie, dando precedenza in base alle esigenze a processi che la CPU deve elaborare.
Time-sharing: è gestito dal SO che assegna la CPU a turno ai vari processi in esecuzione(time-silice) in modo da dare l’impressione a tutti gli utenti di avere il computer tutto per loro. È riferito principalmente a computer multiutente.
Kernel: è un modo di esecuzione, tipico del SO, che fornisce un accesso sicuro all’esecuzione dei processi.
Sistema di elaborazione: insieme di tutti i componenti di un computer compreso il SO.
Gestione dei processi
Processo: software in esecuzione. Può essere di due tipo; utente(attivato dall’utente), sistema(nasce da una richiesta di un programma mandato in esecuzione dal SO).Un processo può essere I/O Bound(impiega più tempo per eseguire operazioni di I/O); CPU Bound(impiega più tempo per operazioni di calcolo). Un processo può assumere vari stati:new(appena creato),ready(pronto per essere eseguito),running(in esecuzione),waiting(in attesa),terminated(la sua esecuzione è finita).
PCB (Process Control Block): è la rappresentazione di ogni processo nel SO.
Interrupt: guidano le azioni del SO, sono segnali che gestiscono l’interazione del SO con l’utente o altri processi.
Ready queue: insieme di processi che risiedono in memoria centrale in attesa di essere eseguiti.
Code di dispositivo: insieme di processi che aspettano di utilizzare un certo dispositivo.
LTS: seleziona i processi dal disco e li carica in memoria
STS: seleziona i processi pronti e alloca uno di essi alla CPU.
Context-switch: il passaggio della CPU all’esecuzione di un nuovo processo. La CPU durante questo processo è in overhead.
Overhead: tempo impiegato dal sistema operativo per svolgere operazioni non utili per l’utente.
Sincronizzazione dei processi
Processo indipendente: non può influire o subire l’influsso di altri processi.
Processo cooperante: condivide dati e/o risorse con altri processi. Questo provoca una riduzione di risorse, tempo e di operazioni da eseguire. Per fare in modo che due processi comunicano è necessario un canale(logico e fisico).La comunicazione può essere:diretta(ogni processo conosce il nome dell’altro processo),indiretta(i processi si scambiano messaggi attraverso mailbox),buffered/non-buffered(canale con buffer che contiene una coda di messaggi),sincrona/asincrona(il processo che esegue la send,si blocca fino a che viene eseguita la receive dall’altro processo).
Comunicazione diretta: la comunicazione è gestita dal SO, è definito un unico canale che può essere bidirezionale.
Comunicazione indiretta: viene creata una mailbox, con identificatore unico conosciuto dai processi. I processi devono condividere la mailbox, la quale può essere associata a più processi e può essere bidirezionale.
Comunicazione buffering/non-buffering: i messaggi vengono inviati anche se il canale è occupato. Se il buffer ha capacità limitata ed è pieno il sender aspetterà, altrimenti non ci saranno ritardi nella comunicazione.
Comunicazione sincrona: il processo che esegue il send attende fino a che viene eseguita il receive dall’altro processo.
Comunicazione asincrona: il processo che esegue il send attende per un certo tempo (timeout) prima di proseguire.
CPU Scheduling
Multitaskin: più di un processo si trova nella memoria centrale pronto per essere eseguito.
CPU brust: fase in cui un processo fa uso continuato della CPU.
I/O brust: fase in cui un processo fa uso continuato di dispositivi I/O.
Throughput: numero di processi che completano la loro esecuzione per unità di tempo.
Time-slice: tempo assegnato ad un processo in esecuzione.
Turnaround time: tempo necessario per eseguire l’intero processo.
CPU scheduling: seleziona della ready queue i processi da eseguire.
CPU dispatcher: da il controllo della CPU al processo scelto dallo scheduling effettuando il context-swtch.
Dispatch latency: tempo impiegato dal dispatcher per svolgere il suo compito.
Preemption: azioni dello scheduling che possono interrompere il processo in esecuzione (interrupt).
Politiche di scheduling: algoritmo che si occupa di gestire lo scheduling della CPU. Alcuni polotoche sono: First come first served (FCFS), shortest job first (SJF), con priorità, round-robin, Code multi-livello(con feedback).
First come first served: i processi vengono eseguiti nell’ordine in cui arrivano nella ready queue.
Shortest job first: schedula il processo che ha il CPU brust successivo più breve, nel caso di CPU brust uguale, si utilizza il FCFS.
Con priorità: i processi vengono eseguiti in basse allo loro priorità definita secondo requisiti di memoria, limiti di tempo CPU e I/O brust, ecc..
Starvation: processo con bassa priorità che rischia di non essere mai eseguito. Il problema si risolve facendo aumentare la priorità con l’aumentare dell’attesa (aging). Un altro modo è il CPU slicing, ovvero ogni coda(coda multilivello) riceve una quantità di tempo che distribuisce in percentuale hai vari processi nella coda.
Round Robin: ad ogni processo viene assegnata una quantità di tempo. Una volta esauritasi il processo è interrotto ed entra alla dine della ready queue.
Code Multilivello: la ready queue viene suddivisa in code separate alle quali si assegna una priorità. I processi nella coda con alta priorità vengono eseguiti per primi dalla CPU.
Deadlock: insieme di processi che sono in attesa che si verifichi un evento che può essere causato solo da un altro processo che è in attesa. Questo viene risolto con procedure che lo prevedono(mutua esclusione, possesso e attesa, assenza di preemption, attesa circolare) o lo evitano(il SO deve avere a priori le risorse richieste dal processo) o lo ripristinano(con un algoritmo di detection, ovvero le risorse vengono allocate a processi sicuramente non coinvolti; schemi di recovery, ovvero si possono terminano tutti i processi coinvolti o uno alla volta finche non si risolve il deadlock, oppure interrompere (preemption) processi e risorse ad essi allocati o ritornare allo stato in cui il processo aveva ricevuto la risorsa (rollback)) una volta verificatosi.
Gestione della memoria
Memoria centrale: ha capacità limitate e non può contenere tutti i processi di un sistema di calcolo.
Binding: procedura di associazione che alloca gli indirizzi di memoria elle istruzioni e dati di un processo. Questo può essere fatto in diverse fasi dell’elaborazione. Se viene fatto in tempo di compilazione o caricamento gli indirizzi logici corrispondono con quelli fisici; se viene fatto in tempo di esecuzione gli indirizzi non coincidono.
Indirizzo logico (o virtuale): è generato dalla CPU
Indirizzo fisico: caricato dalla memoria nel memory andress registrer.
Memory-menagment unit (MMU): dispositivo hardware che trasforma gli indirizzi logici in indirizzi fisici.
Overlays: suddivisione di un programma in moduli logicamente distinti. Questo processo è necessario in quanto un processo occupa uno spazio di memoria più grande di quello disponibile. In questo modo i vari moduli vengono caricati in istanti diversi.
Swapping: spostamento temporaneo di un processo dalla memoria centrale alla memoria secondaria (swap out) e successivamente dalla memoria secondaria alla memoria centrale (swap in). Lo swapping richiede costi elevati di gestione e può essere effettuato solo in un ambiente multitask.
Allocazione contigua: la memoria è suddivisa in più partizioni, una dedicata al SO e le altre riservate ai processi dell’utente. Le dimensioni delle partizioni possono essere uguali o variabili. Nell’ultimo caso i processi occupano la memoria in funzione dello spazio necessario.
Frammentazione: si ha quando i processi vengono rimossi dalla memoria ma lo spazio libero non è contiguo. Si ha frammentazione esterna quando lo spazio libero è sufficiente per soddisfare una richiesta, ma non è contiguo(richiede un grosso spreco di energia). Si ha frammentazione interna quando esiste uno spazio libero all’interno di un blocco occupato da un utente.
Compattazione: è un’alternativa alla frammentazione. Questa riordina la memoria in modo da riunire la memoria libera in un unico grande blocco.
Paginazione: consentire che lo spazio degli indirizzi logici di un processo non sia contiguo e allocare memoria fisica ovunque sia disponibile. Si suddivide la memoria fisica in blocchi (frame) e la memoria logica in blocchi (pagine). Ad un processo di n pagine devono corrispondere n frame.
Segmentazione: un processo viene suddiviso in segmenti di dimensioni diverse. È necessario mantenere l’allocazione dinamica della memoria.
Categorie: Informatica Tags: gates, informatica, leopard, operazione, windows, xp
Principi di programmazione
Metodo risolutivo: insieme di attività che permettono di ottenere l’informazione richiesta dai dati in possesso(dati in ingresso).
Algoritmo: è un insieme di regole per risolvere in modo automatico un problema. Questo deve essere: non ambiguo(le regole devono essere interpretabili e i risultati non devono dipendere dall’esecutore);eseguibilità(l’esecutore deve essere in grado di eseguire ogni singola regola);finitezza(l’algoritmo deve essere eseguito in un tempo finito).
Programma: l’insieme di regole che descrivono un algoritmo quando sono espresse in un linguaggio di programmazione. Questo è composto da tre parti: un intestazione(nome del programma);dichiarazione delle variabili(definisce le variabili utilizzate nel programma);istruzioni(rappresentano i passaggi della risoluzione dell’algoritmo per mezzo di un linguaggio di programmazione). Per scegliere i dati da rappresentare in un programma bisogna: selezionare l’informazione d’interesse, scegliere la rappresentazione dell’informazione e la modalità in cui si rappresentano nel linguaggio di programmazione.
Sottoprogramma o subroutine: moduli situati all’interno del programma principale. Si dividono in procedure e funzioni e sono caratterizzati da: nome, dati in ingresso, dati in uscita, funzione.
Grafi di flusso: non è un linguaggio,ma è usato per descrivere gli algoritmi usando simboli convenzionali. Può eseguire operazioni di: trasferimento di informazioni, esecuzione calcoli, assunzione di decisioni, esecuzione di iterazioni.
Categorie: Informatica Tags: asp, basic, c, mysql, php, programmazione, regola, while
Il computer: Hardware and software
Il computer è una macchina composta da hardware e software, programmabile, che elabora informazioni.
Rappresentazione analogica: valori continui, il numero dei valori che può assumere è infinito.
Rappresentazione digitale: valori discreti, può assumere un numero di valori fissi.
Codice: sistema di simboli che permette la rappresentazione dell’informazione.
Simbolo: entità per definire un sistema di rappresentazione.
Stringa: sequenza finita di simboli.
Alfabeto: insieme finito di simboli.
Linguaggio: insieme do sequenze di stringhe definite su un dato alfabeto.
Codifica: processo che definisce le regole di corrispondenza per passare da un alfabeto all’altro.
Cardinalità di un alfabeto: numero di simboli che lo compongono.
Ridondanza: utile per rilevare e correggere errori di trasmissione.
Parola macchina: rappresenta il massimo valore che può essere rappresentato.
Overflow: è l’errore che si ha quando il numero da rappresentare supera il numero di bit della parola macchina.
Complemento a due: A-B = A+(2n-B)
Porte logiche: componenti elettronici molto semplici che costituiscono il calcolatore. Le più famose sono AND – OR – NOT.
Algebra di Boole: si base sul presupposto che i circuiti elettrici possono essere solo in due stati (ON-OFF).
Variabili booleane: può assumere solo i valori 0 oppure 1.
Costanti booleane: può assumere solo i valori 0 oppure 1.
Operatori logici: relazioni tra le variabili e le costanti booleane. Questi si distinguono in “Monadici”(1 variabile) e “Diadici”(2 variabili).
Hardware: struttura fisica di un computer.
Software: insieme di programmi di un computer.
Architettura di VonNeuman:CPU(CU + ALU) – RAM – MEMORIA SECONDARIA – I/O – BUS.
CPU: è divisa in CU(Unità di controllo) e ALU (unità aritmetico logico). La sua capacità dipende dal: numero di transistor, frequenza di clock, MIPS.
CU: esegue le istruzioni dei programmi, comanda il funzionamento degli altri dispositivi della CPU, controlla il flusso delle istruzioni tra CPU e Memoria Centrale.
ALU: effettua le operazioni aritmetiche e logiche.
Linguaggio macchina: set di istruzioni della CPU.
Ciclo macchina: esecuzione di una singola istruzione da parte della CPU e consiste inCaricamento(la CU preleva dalla memoria centrale la prox istruzione)Decodifica(la CU interpreta l’istruzione e trasferisce i dati alla ALU)Esecuzione(l’ALU effettua le operazioni)Memorizzazione(i risultati vengono memorizati nella memoria centrale o in un registro).
Fase di Fetch: Caricamento e Decodifica delle istruzioni.
Fase di execute: esecuzione effettiva dell’istruzione.
RAM: dispositivo dove sono mantenuti i programmi da eseguire ed i dati da elaborare. È ad accesso casuale ed è volatile. Può essere Dinamica(il contenuto viene aggiornato continuamente) e Statica(il contenuto non viene aggiornato durante l’uso).
ROM: memoria di sola lettura, non volatile e il contenuto viene predisposto dalla fabbrica, non modificabile.
Memoria Cache: accelera il funzionamento del computer, I°livellonella CPU 512Kb– II°livelloesterna alla CPU 1MB.
BUS: insieme di collegamenti elettronici che permette la comunicazione tra tutti i componenti fisici.
Unità periferiche: non fanno parte del nucleo del calcolatore.
Polling: gestione della periferica da parte della CPU.
Interrupt: gestione della periferica a cura della periferica.





