informatica da stampare.pdf
Document Details
Uploaded by Deleted User
2023
Tags
Full Transcript
INFORMATICA A.A 2023-2024 PROF. ANTONIO MOSCHITTA TECNICO DI LABORATORIO BIOMEDICO Dipartimento di medicina e chirurgia OBIETTIVI Introduzione alla scienza dell’informazione; Struttura generale di un elaboratore; Sistemi informati...
INFORMATICA A.A 2023-2024 PROF. ANTONIO MOSCHITTA TECNICO DI LABORATORIO BIOMEDICO Dipartimento di medicina e chirurgia OBIETTIVI Introduzione alla scienza dell’informazione; Struttura generale di un elaboratore; Sistemi informativi, basi dati, e informatica medica; Reti, internet, e Web; Sicurezza informatica; I personal computer; Automazione di ufficio; Software per l’automazione di laboratorio 1 1 DIAPOSITIVA INTRODUZIONE E CONCETTI GENERALI Informatica, IT e ICT / TIC L’informatica in ambito biomedico Cenni storici bioinformatica Evoluzione dei computer Tipologia e classificazione dei computer Digitalizzazione dei dati COSA SIGNIFICA IL TERMINE «INFORMAZIONE»? «nozione, idea, rappresentazione, notizia» Knowledge or facts learned, especially about a certain subject or event. Sinonimo di conoscenza Atto dell’informarsi / informare «Nel linguaggio giur., informazione (o avviso) di garanzia, atto con il quale il P. M. dà avviso agli interessati (indagati e persone offese dal reato) dell’esistenza di un procedimento penale, in modo da consentire loro l’esercizio del diritto di difesa;» «Nel linguaggio scient., in senso ampio, il contenuto di novità e d’imprevedibilità di un messaggio intercorrente fra sistemi in relazione; anche, ciascuno dei segnali (costituenti un messaggio) che può essere inviato, secondo un determinato codice, da un dispositivo (trasmettitore) a un altro (ricevitore) ove tra essi sia stabilita una conveniente via di trasmissione;» «A numerical measure of the uncertainty of an experimental outcome» «Computers Processed, stored, or transmitted data» COSA È LA SCIENZA DELL’ INFORMAZIONE? “Information science is that discipline that investigates the properties and behavior of information, the forces governing the flow of information, and the means of processing information for optimum accessibility and usability. It is concerned with the body of knowledge relating to the origination, collection, organization, storage, retrieval, interpretation, transmission, and utilization of information.” Cit.Borko, H. (1968). Information science: What is it? American Documentation, 19, 3. Focus su: proprietà, comportamento, flusso, elaborazione, organizzazione, memorizzazione, recupero, interpretazione, trasmissione, e utilizzo dell’informazione. “… information science brings together and uses the theories, principles, techniques and technologies of a variety of disciplines toward the solution of information problems. Among the disciplines brought together in this amalgam called information science are computer sciences, cognitive science, psychology, mathematics, logic, information theory, electronics, communications, linguistics, economics, classification science, systems science, library science and management science. They are brought to bear in solving the problems with information — its generation, organization, representation, processing, distribution, communication and use.” Williams, M. E. (1987/1988). Defining information science and the role of ASIS. Bulletin of the American Society for Information Science, 14(2), 17-19. 2 Focus sulle discipline coinvolte “Information science is the science and practice dealing with the effective collection, storage, retrieval, and use of information. It is concerned with recordable information and knowledge, and the technologies and related services that facilitate their management and use. More specifically, information science is a field of professional practice and scientific inquiry addressing the effective communication of information and information objects, particularly knowledge records, among humans in the context of social, organizational, and individual need for and use of information. The domain of information science is the transmission of the universe of human knowledge in recorded form, centering on manipulation (representation, organization, and retrieval) of information, rather than knowing information.” Saracevic, T. (2009). Information science. In M. J. Bates (Ed.), Encyclopedia of library and information sciences (3rd ed.) (pp. 2570-2585). New York: Taylor and Francis. Focus su: attività umane information science, discipline that deals with the processes of storing and transferring information. It brings together concepts and methods from disciplines such as library science, computer science and engineering, linguistics, and psychology in order to develop techniques and devices to aid in the handling—that is, in the collection, organization, storage, retrieval, interpretation, and use—of information. The transfer of information through time requires the existence of some storage medium, which is designated a document—hence the term documentation. Historically, “documentation” emerged as a distinct discipline in the early 20th century, paralleling the rise of empirical research, which was to provide its main source of subjects. The discipline grew in response to the growth of the periodical and the journal as the prevalent media for scientific reports. Whereas books required control through cataloging and classification, periodicals required indexes and abstracts that would bring together for the researcher primary information originally published in divergent sources. Fonte: Enciclopedia Britannica ICT/TIC Il termine Tecnologie per l'Informazione e la Comunicazione (TIC) indica, nel senso più generale, l’area di attività tecnologiche legate agli strumenti che consentono di comunicare o diffondere informazioni. In Inglese: Information and Communication Technologies (ICT) “Diverse set of technological tools and resources used to transmit, store, create, share or exchange information. These technological tools and resources include computers, the Internet (websites, blogs and emails), live broadcasting technologies (radio, television and webcasting), recorded broadcasting technologies (podcasting, audio and video players and storage devices) and telephony (fixed or mobile, satellite, visio/video-conferencing, etc.).” “ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.” “Although there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and 3 organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.” “Includes all categories of ubiquitous technology used for the gathering, storing, transmitting, retrieving, or processing of information (e.g., microelectronics, printed circuit boards, computing systems, software, signal processors, mobile telephony, satellite communications, and networks).” “Encompasses the capture, storage, retrieval, processing, display, representation, presentation, organization, management, security, transfer, and interchange of data and information.” “encompasses all technologies for the capture, storage, retrieval, processing, display, representation, organization, management, security, transfer, and interchange of data and information.” INFORMATICA “Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’i. si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione. Il termine i. deriva dal fr. informatique (composto di INFORMATion e automatIQUE, «informazione automatica») e fu coniato da P. Dreyfus nel 1962. L’i. è indipendente dal calcolatore che ne è solo uno strumento, ma è chiaro che lo sviluppo dell’i. è stato ed è tuttora strettamente legato all’evoluzione del calcolatore; è proprio per questo stretto legame tra i. e calcolatore che l’i., pur avendo radici storiche antiche, si è sviluppata come disciplina autonoma solo a partire dagli anni 1960, sulla spinta del progresso dei sistemi di elaborazione e della formalizzazione del concetto di procedura di calcolo, che possiamo datare al 1936, allorché A.M. Turing presentò un modello di calcolo, oggi noto come macchina di Turing. L'informatica è la scienza che si occupa del trattamento dell'informazione mediante procedure automatizzate, avendo in particolare per oggetto lo studio dei fondamenti teorici dell'informazione, della sua computazione a livello logico e delle tecniche pratiche per la sua implementazione e applicazione in sistemi elettronici automatizzati detti quindi sistemi informatici; come tale è una disciplina fortemente connessa con la logica matematica, l'automatica, l'elettronica e anche l'elettromeccanica. NB: la traduzione in inglese di Informatica è “Computer Science”. INFORMATICA IN AMBITO BIOMEDICO L’informatica medica è una branca dell’informatica che ne utilizza le tecnologie e le metodologie nel campo applicativo della medicina. Le applicazioni investono in particolare [WiKi]: - I sistemi informativi sanitari (Es: cartella elettronica); - Sistemi terminologici e classificazioni; - Elaborazione/analisi di biosegnali e bioimmagini; - Sistemi basati su protocolli Utilizzo Web per la sanità pubblica; - Telemedicina Obiettivo: gestione dei flussi informativi prodotti in ambito sanitario Medical Informatics, Health Informatics… Informatica biomedica 4 INFORMATICA BIOMEDICA “Biomedical and health informatics (BMHI) is the field concerned with the optimal use of information, often aided by technology, to improve individual health, healthcare, public health, and biomedical research → Informatics applied in a more focused domain is {X} informatics, e.g., nursing, dental, pathology, primary care, etc. → Can be classified by “level” of domain but also has some overarching areas, e.g., imaging and research”. L’informatica biomedica può essere vista come una branca dell’informatica medica focalizzata sull’utilizzo di vari tipi di dati biologici su vari livelli di scala (cellulare/tessuto/paziente/popolazione). È una disciplina in costante sviluppo, e si ritiene che le competenze informatiche avranno un peso crescente nel bagaglio professionale degli operatori medico/sanitari. Ulteriori considerazioni sulla definizione di «informatica biomedica» e sull’evoluzione storica della disciplina sono reperibili in [13-15]. CENNI STORICI L’idea di raccogliere dati in forma organizzata per supportare attività biomedicali risale agli anni ’20 del secolo scorso. -1959: Ledley & Lusted Obiettivo: comprendere e modellare I ragionamenti del medico mediante Logica simbolica, che rappresenta test, diagnosi, risultati ottenuti pazienti (“patient findings”); Probabilità e verosimiglianza dei risultati (diagnosi) sulla base di concetti, rappresentati da simboli; Teoria del valore: quantificare la complessità dei valori che entrano nel processo decisionale del medico. -Conduce ai primi tentativi nella Medicina di costruire sistemi decisionali basati su calcolatore -1961: Warner, modello matematico per diagnosticare malattie cardiache congenite Diagnosi con la massima probabilità condizionata a un insieme di sintomi osservati Primo esempio di Intelligenza Artificiale, rappresentata da un algoritmo che opera su una “knowledge base” 5 -Si evolve nei sistemi esperti, programmi che imitano le competenze diagnostiche umane (anni ’70-80’), anche utilizzando «scoring algorithm». Negli anni ‘90 e dopo il 2000 il focus si modifica nel senso di creare sistemi di supporto alle decisioni piuttosto che sistemi autonomi. Affiancati da tecniche AI emergenti e dai primi sistemi EHR (Electronic Health Record). Successivamente vengono sviluppati la versione elettronica della National Library of Medicine (NLM, esiste in effetti dal 1836) e sistemi Information Retrieval (IR) [Basi dati bibliografiche…recupero di «full text of scientific literature»]. Prima: Index Medicus, dal 1879, guida mensile agli articoli pubblicati sui principali periodici (edito fino al 2004, poi sostituito da MEDLINE, il database di NLM, accessibile gratuitamente tramite «Entrez» e «PubMed»). MEDLINE introduce il «Web». Il Web «esplode» dagli anni ‘90, con la «bolla dot com», la banda larga, il WiFi, e i modelli di business FANG (Facebook Apple Amazon Netflix Google). Altro progetto di rilievo: sequenziamento del genoma umano, completato nel periodo 1988-2003, poi ripreso e tutt’ora in corso. Pro e contro sui sistemi EHR Consentono maggiore integrità dei dati nel tempo, la possibilità di recuperarli e di effettuare analisi incrociate e diagnosi sofisticate Problemi di privacy e di protezione dei dati (vedi anche slide seguente) Dal 2008: Learning Health Systems Trasparenza dei dati e delle informazioni Premiare risultarti e valori, non il volume di lavoro Capacità di identificare e correggere gli errori (essenziale per evitare danni al paziente) EHR abbinati a gli strumenti CDS (Clinical Decision Support), che segnalano situazioni di potenziale rischio su cui intervenire con terapie tempestive. Una analisi critica è reperibile in , in cui si parla di fattori di rischio come gli Adverse Drug Events (ADEs) Dal 2019: «second era of AI», stimolata dal machine learning.Alcuni problemi emersi (backlash): - Interazione tra EHR e medici clinici (EHR possono rallentare il lavoro, enfatizzano aspetti non clinici della terapia, possono indurre burnout nei «clinici»); - Interoperabilità tra sistemi diversi; - Privacy e sicurezza EVOLUZIONE DEI COMPUTER -1939: primo computer totalmente elettronico Atanasoff Berry Computer (ABC); -Mainframe elettronici: Z3 (1941), ENIAC (1944); -1948: Small Scale Experimental Machine (SSEM), primo computer digitale a programma memorizzato, prima macchina con architettura di Von Neumann 6 NB: dal 1950 compaiono I transistor (prima: valvole termoioniche) e le unità a nastro. -1951: UNIVAC I (UNIVersal Automatic Computer I), primo computer commerciale; -Computer da tavolo: dal 1965 PDP-8 della DEC (Digital Equipment Corporation); -Microcomputer (anche fai da te) - Personal computer (1975-1976); Home computer (Apple 1977): tutta l’elettronica e la tastiera in un unico chassis Alcuni computer degli anni 70: Olivetti P6040 (primo basato su microprocessore 8080 e dotato di floppy disk da 2.5 pollici, programmabile in Mini BASIC) e Olivetti P6060 (aprile 1975); Tandy Radio Shack TRS-80 (agosto 1977) (il primo home computer a prezzo =1 di programmare direttamente l’interazione con l’hardware. L’approccio a strati ha come conseguenza che chi programma le funzionalità di uno strato sta in effetti programmando una macchina virtuale, interagendo con le funzionalità degli strati sottostanti. L’approccio a strati presenta tuttavia alcuni svantaggi: - È più lento di un approccio monolitico (ogni messaggio diretto all’hardware deve attraversare i layer intermedi); - Nel progettare gli strati di un SO, occorre valutare attentamente i requisiti funzionali di ciascuno strato (ciò che serve ad uno strato deve essere fornito da uno degli strati sottostanti); - Non sempre è possibile ripartire una funzione tra più strati; - Come comportamento predefinito non si può avere comunicazione tra strati non adiacenti (eccezione: Direct X, OpenGL). 15 Layer 1 – Hardware: Questo strato gestisce direttamente l’hardware (tastiere, mouse, stampante…), ed è quello con il massimo livello di priorità, interagendo direttamente con il core del sistema. I driver delle periferiche agiscono a questo livello Layer 2 - CPU scheduling: Le CPU moderne hanno capacità di calcolo sufficiente a gestire più processi simultaneamente (unico vincolo è dato dal principio di causalità). Questo strato controlla quanti e quali processi vengono gestiti dalla CPU in un dato momento. NB: Far gestire un processo alla CPU significa inviarle le relative istruzioni per elaborarle con il ciclo fetch-decode-execute Layer 3 - Gestione della memoria: Questo strato definisce la gestione delle informazioni (istruzioni e dati), decidendo cosa allocare nella RAM, cioè cosa copiare dalla memoria secondaria (disco rigido) alla memoria principale. NB: i programmi in genere constano di vari moduli, che non necessita tenere nella memoria principale simultaneamente In tal senso si parla anche di memoria virtuale Layer 4 - Gestione dei processi (Process Management/Scheduling): Un sistema operativo moderno è multitasking, cioè, è in grado di gestire più compiti concomitanti. I processi associati a ciascun compito vengono eseguiti con un meccanismo di turnazione, in modo che all’utente appaiano eseguiti simultaneamente. La gestione dei processi richiede quindi di tenere traccia dei processi da eseguire, organizzandoli in una coda di attesa, assegnando delle priorità e assegnando alla CPU quelli che di volta in volta hanno priorità maggiore. Alcuni algoritmi per il Process Scheduling: FCFS (First Come First Served), SJF (Shortest Job First), Priority Scheduling, Round- Robin Scheduling, etc. Layer 5 - I/O buffer: Le periferiche sono dispositivi essenziali, ma molto più lenti della CPU. Se la CPU bloccasse le proprie attività per attendere il trasferimento dei dati alla velocità cui li immette l’utente, si introdurrebbe un collo di bottiglia che penalizzerebbe le prestazioni dell’intero sistema di calcolo. Es: utilizzando una tastiera l’utente inserisce 5 caratteri ASCII (5 byte) in un secondo, uno ogni 0.2s. La CPU opera ad una frequenza di clock di 1 GHz, ovvero può eseguire un miliardo di operazioni al secondo. Utilizzando un buffer, cioè un’area di memoria che opera come una chiusa, i dati vengono traferiti dalla periferica a tale area alla velocità di tale periferica, ma poi vengono trasferiti dal buffer alla CPU alla velocità con cui quest’ultima li può accettare (10 GB/s). I buffer sono utili anche perché in una macchina multitasking i canali di comunicazione possono essere «sequestrati» in modo non prevedibile da processi a priorità superiore. Es: acquisizione dati, scrittura di dischi ottici. Layer 6 - Programmi Utente: Questo strato, anche noto come application layer, è quello che gestisce l’esecuzione dei programmi utente come MS Word, Chrome, MS Paint, videogiochi, programmi per la riproduzione di contenuti multimediali, etc. NB: nei sistemi operativi come Windows e Linux esistono due modalità di esecuzione distinte, chiamate rispettivamente user mode e kernel mode. Lo user mode è utilizzato per l’esecuzione di applicativi utente, e in tale modalità non è permesso accedere direttamente alle risorse di sistema (l’accesso avviene mediante chiamate a funzioni del sistema operativo in grado di manipolare tali risorse). Il kernel è il nucleo del programma che realizza il sistema operativo, accede direttamente all’hardware e lo amministra (es: scheduling), e gestisce 16 l’accesso dei programmi utente alle risorse hardware agendo come intermediario. Il passaggio da user mode a kernel mode avviene commutando la modalità di funzionamento della CPU (le limitazioni sono in effetti sulla possibilità di chiamare determinate funzioni e di accedere a certe porzioni della memoria). NB: nei sistemi operativi Windows (Direct x, Direct 3D, DXGI ) e Linux (OpenGL) il passaggio da user mode a kernel mode può gestito in modo da permettere di «saltare» alcuni strati del sistema operativo, per questioni di velocità COMPILATORI E INTERPRETI La CPU accetta in ingresso istruzioni in codice macchina, che sono rappresentate da numeri (ogni volta che viene letta una istruzione, viene letto un numero da una cella di memoria o un insieme di numeri da un gruppo di celle di memoria). Ogni CPU è progettata per supportare un insieme di istruzioni e di modalità di uitilizzo delle stesse. Si parla allora di architettura dall’insieme di istruzioni (Instruction Set Architecture, ISA). Queste istruzioni supportano operazioni a basso livello, ovvero operazioni aritmetico logiche che vengono lette o scritte da/verso celle della memoria principale. La realizzazione di un programma scritto direttamente in codice macchina ISA è una attività molto onerosa, anche per processori semplici (microcontrollori) Soluzione: introdurre dei livelli di astrazione Linguaggio Assembly Sostituisce i codici macchina ISA con degli OpCode, ovvero dei simboli mnemonici che corrispondono alle istruzioni macchina o Es: ISA X86, 0X90 -> NOP Il linguaggio Assembly supporta anche istruzioni e costrutti più complessi della singola istruzione ISA (es: cicli), che si TRADUCONO in blocchi di istruzioni macchina. Il linguaggio Assembly semplifica la programmazione di dispositivi semplici, ma non riduce la complessità della programmazione di comportamenti «vicini all’utente». o Es: come programmare la stampa a schermo di una frase? Necessario (elenco parziale…): o Rappresentare la frase con dei numeri; o Inviare questi numeri alla scheda video; o Istruire la scheda video a colorare i pixel dello schermo in modo da farli vedere. Questi compiti possono essere codificati da programmi «ad alto livello», che nascondono al programmatore il compito di programmare direttamente l’hardware. o Es: un listato in linguaggio C 17 La descrizione del linguaggio include: Una serie di parole chiave Regole sintattiche sull’utilizzo delle parole chiave Regole sull’utilizzo di «variabili» Regole sui tipi di dati supportati Regole su come chiamare dei sottoprogrammi Il codice mostrato non richiede di conoscere dettagliatamente l’hardware! Utilizza funzioni e librerie (= insiemi di funzioni già scritte da altri) per scrivere codice modulare ed evitare di «reinventare la ruota». Principio generalizzato dal concetto di riutilizzo del codice. Per eseguire un programma scritto in un linguaggio ad alto livello le istruzioni del codice sorgente devono essere convertite da un programma apposito in istruzioni macchina (ISA) che poi vengono eseguite dalla CPU. La conversione del sorgente scritto in un linguaggio ad alto livello in istruzioni ISA avviene principalmente in due modalità, dette rispettivamente interpretazione e compilazione: Il sorgente viene eseguito da un programma detto «interprete», che in linea di principio esegue il codice sorgente leggendone un comando alla volta e traducendo via via ogni istruzione in istruzioni macchina. Il sorgente viene tradotto una volta per tutte in un insieme di istruzioni macchina da un programma detto «compilatore». INTERPRETI Esistono varianti del concetto di interpretazione basate sul concetto di macchina virtuale, cioè un programma che simula un computer indipendente dall’hardware sottostante. Il codice sorgente viene tradotto nelle istruzioni macchina di tale computer virtuale, che poi le esegue interfacciandosi con la macchina reale (just in time compilation). Es: linguaggio Java (bytecode) , linguaggio C# (Common Intermediate Language, CIL), linguaggio Python Esistono varianti del concetto di interpretazione basate sul concetto di macchina virtuale, cioè un programma che simula un computer indipendente dall’hardware sottostante. Il codice sorgente viene tradotto nelle istruzioni macchina di tale computer virtuale, che poi le esegue interfacciandosi con la macchina reale. Es: linguaggio Java (bytecode), linguaggio C# (Common Intermediate Language, CIL), linguaggio Python. Esistono varianti del concetto di interpretazione basate sul concetto di macchina virtuale, cioè un programma che simula un computer indipendente dall’hardware sottostante. Il codice sorgente viene tradotto nelle istruzioni macchina di tale computer virtuale, che poi le esegue interfacciandosi con la macchina reale. Es: linguaggio Java (bytecode), linguaggio C# (Common Intermediate Language, CIL), linguaggio Python 18 COMPILATORI Il compilatore è un programma che traduce le istruzioni del linguaggio ad alto livello in istruzioni ISA. La prima fase della compilazione è una traduzione del codice sorgente in un codice oggetto, che tuttavia non è ancora eseguibile direttamente in quanto va reso in grado di interagire con l’hardware. A tale scopo esistono sottoprogrammi sia funzionalità esposte dal sistema operativo (livello utente o livello kernel) cui il codice oggetto deve essere collegato. Il codice oggetto contiene effettivamente sia istruzioni macchina sia informazioni utili per l’aggancio. Questa ulteriore operazione, detta linking, produce un programma eseguibile, cioè una sequenza di istruzioni macchina completa che può «girare» (cioè, essere eseguita) in modo autonomo su un calcolatore. Nei sistemi Windows i file eseguibile hanno in genere l’estensione.exe. Es: linguaggio Pascal [17- 18],C, C++ , Fortran «Una libreria è un insieme di funzioni o strutture dati predefinite e predisposte per essere collegate ad un programma software attraverso un opportuno collegamento». Il collegamento può essere - - Statico: la libreria viene integrata nell’eseguibile, che risulta auto-contenuto e più veloce, ma di dimensioni maggiori); - Dinamico: la libreria viene caricata (copiata in memoria) dal sistema operativo quando effettivamente serve. Le librerie dinamiche sono chiamate DLL (Dynamic Link Library) in ambiente Windows, e SO (Shared Object) in ambiente Unix. Pregi e difetti sono complementari a quelli dell’approccio statico. FILE SYSTEM Il termine file (in inglese raccoglitore/schedario) indica un costrutto cui è assegnato un nome che raccoglie informazioni in formato digitale, in genere memorizzato su un opportuno supporto (Es: file dati, file eseguibile…). Il termine File System indica un meccanismo e un insieme di convenzioni che regolano il modo in cui i dati sono posizionati e organizzati in un supporto informatico per l’archiviazione dei dati (dischi rigidi/ottici/a stato solido, unità a nastro…in parte anche RAM) o su dispositivi remoti mediante protocolli di rete. Una delle funzioni del File System è di definire un sistema di permessi di lettura/scrittura ai processi eseguiti dal calcolatore. Es: DOS/Windows: FAT, NTFS, exFAT, ResFS… Linux: XFS, JFS, Ext2,Ext3,Ext4, F2FS, BTRFS… Mac OSX: HFS Sun Microsystems: NFS 19 Lo spazio fisico dell’unità di memoria viene partizionato in blocchi di dimensione fissa e assegnata (es: 512 byte), chiamati settori che vengono assegnati a gruppi in modo tale da allocare i file. In figura un esempio di allocazione del File System FAT (File Allocation Table) del sistema operativo DOS. Lo spazio fisico dell’unità di memoria viene partizionato in blocchi di dimensione fissa e assegnata (es: 512 byte), chiamati settori che vengono assegnati a gruppi tali da allocare i file, quest’ultimi sono poi organizzati in una struttura gerarchica, anche a più livelli (in modo più o meno trasparente all’utente alcuni file descrivono tale struttura). Le proprietà definite dalla descrizione di un File System includono in genere: convenzioni sui nomi di file; attributi dei file; controllo/i di accesso La gestione del File System include anche la connessione con periferiche e memorie di massa rimovibili. Il File System può essere «navigato» aprendo una finestra di comandi testuale (Text User Interface, TUI), e utilizzando una serie di comandi accettati dal Sistema Operativo. In Window 10, tale finestra può essere aperta con il comando cmd. I comandi, ereditati in gran parte da quelli eseguiti dal Sistema Operativo DOS, possono essere richiamati con il comando HELP (NB: DOS non è case sensitive). I sistemi operativi moderni offrono in genere una interfaccia grafica utente (Graphic User Interface, GUI). Sono quindi disponibili programmi dotati di una GUI che facilitano la navigazione del File system. Esempio di TUI Esempio di GUI 20 GUI L’interfaccia grafica utente, inventata originariamente nel 1975 dalla Xerox, consiste di 4 elementi, collettivamente denominati WIMP (Window, Icon, Menu, Pointing device). Un approccio alternativo è quello di introdurre il concetto di desktop, intendendo che quanto mostrato a schermo è organizzato come una scrivania, con diversi documenti ed elementi disposti opportunamente. La Apple di Steve Jobs commercializza per prima un SO GUI con il modello Macintosh, seguita poco da Bill Gates con la commercializzazione di Windows 1.0 Software applicativo SOFTWARE APPLICATIVO Il software applicativo (anche noto come productivity software o end user software) è un programma, o un insieme di programmi, che permette ad un utente di eseguire un determinato compito. Un browser, o un software di videoscrittura o per la riproduzione di contenuti multimediali sono esempi di software applicativo. I software applicativi moderni presentano tipicamenteuna interfaccia grafica utente (GUI). Un software applicativo è utilizzabile solo se nel calcolatore è già presente un Sistema Operativo, e non può funzionare su un Sistema Operativo diverso da quello per cui è stato sviluppato Esempi: Automazione di ufficio; Applicativi di uso generale, es: word processor, browser, spreadsheet… Applicativi aziendali Esigenze specifiche, es. gestione inventario in un magazzino Utilities & Tools Ottimizzano le risorse di un computer (es: rimozione di file inutili) o ne aumentano la sicurezza (es: antivirus, firewall…) -Software di sviluppo Utilizzati per creare nuovi software (Es: Visual C), pagine web (Es: Dreamwaver), contenuti multimediali (Es: Photoshop) Videogames WINDOWS, CENNI STORICI Windows 1.0 nasce nel 1985 (500000 copie, accoglienza tiepida, lento) Windows 2.0 permette la sovrapposizione tra finestre, la minimizzazione, e la massimizzazione Windows 3.0 e 3.1 (primi giochi: Hearts, Campo minato, e solitario!) o Introduce File Manager, Program Manager, e Print Manager o Windows 3.1 associato a Windows NT 3.5 e 3.51 Windows 95 o Primo sistema operativo a 32 bit, molto veloce, retrocompatibile con DOS e Windows 3.1 Windows 98 o Integrato con Internet Explorer (controversie…) o Supporta USB, DVD, FAT32… o Muovere il mouse su un oggetto fa comparire una breve descrizione (Help tip) 21 Windows 2000 o Permette di vedere le preview delle immagini attraverso delle miniature (thumbnail) o Stabilità migliorata o Seguito da Windows Millennium Edition (Windows ME) lo stesso anno, che introduce un nuovo mediaplayer con skin modificabili, e la funzione «ripristino di sistema» Windows XP o Abbandona il Kernel core di windows 95, gestione della memoria migliorata o Grafica rinnovata o Aggiorna Media Player, Internet Explorer, Help & Support, Microsoft Assistant, e MSN Messenger Windows Vista. o Nuova veste grafica «aero», criticata per lentezza, vulnerabilità (sicurezza), tempi di avvio elevati, ed elevati requisiti di sistema Windows 7 o Veste grafica «aero» migliorata, risolve problemi evidenziati nella versione precedente Windows 8 o Tentativo (fallito) di costruire una interfaccia orientata ai touch screen, rimuove pulsante «start» o Windows 8.1 (2013) restituisce il pulsante start Windows 10 o Ritornano start button, interfaccia a menù verticali, desktop virtuali o Introduce Microsoft Edge, Cortana, Continuum… WINDOWS Il sistema operativo Windows è tutt’ora organizzato secondo il concetto di desktop, introducendo anche la possibilità di utilizzare desktop virtuali. Nelle ultime versioni supporta anche il concetto di desktop remoto. File system: NTFS (New Technology File System), in uso dal 1993 (Windows NT). In via di adattamento alle esigenze dell’utente comune il file system ReFS (Resilient File System, Windows Server 2012), più affidabile (utilizza codici di correzione degli errori), progettato per utilizzare drive virtuali. Gestione delle risorse In Windows 10 questa utility è nota come Esplora Risorse. È l’applicazione GUI che permette di navigare il File System di Windows 10. Introduce una funzione «accesso rapido», che fornisce un accesso ai file utilizzati di recente Windows, Help. Molti elementi della GUI dispongono di aiuto contestuale, disponibile mediante «mouse hovering» o premendo il tasto destro del mouse. Molti programmi dispongono di una voce «Help» o «Guida» nei propri menu, che 22 possono anche puntare a risorse web, accessibile spesso mediante il tasto F1 In Windows 10 è inoltre disponibile una app Get Help, nella versione Italiana Richiesta Supporto, accessibile dal menù attivato dallo Start Button, che fornisce informazioni e suggerimenti per risolvere problemi. Task Manager (in Italiano Gestione Attività) Utility tool avviabile premendo «CTRL+SHIFT+ESC», oppure digitando «Gestione Attività» o «Task Manager» nella barra di ricerca, oppure dal menù GINA (Graphics Identification and Autentication) che si apre premendo «CTRL+Alt+Canc», oppure premendo il pulsante «Start» e scorrendo il menù Sistema Windows. Permette di tenere traccia dei processi attivi, e delle risorse che stanno assorbendo. Permette inoltre di terminare processi indesiderati, di lanciare nuovi processi, di esaminare le proprietà di programmi e processi, e di definirne il livello di priorità. Permette inoltre di analizzare i «Servizi di Sistema», ottenendo le informazioni fornite da un’altra app specifica CONTROLLO DEL PROGRAMMA Teorema di Böhm-Jacopini (1966): qualunque algoritmo può essere implementato in forma di programma (diagramma di flusso, pseudocodice o codice sorgente) utilizzando tre costrutti - Sequenza: istruzioni eseguite una dopo l’altra nell’ordine in cui sono state posizionate dal programmatore - Selezione: scelta tra due o più alternative, spesso realizzata appoggiandosi ad una variabile booleana. - Iterazione: esecuzione ripetuta di un compito. Il compito è rappresentato da un gruppo di istruzioni, che viene eseguito ripetutamente fino alla commutazione di una variabile di stato. Tutti i linguaggi di programmazione supportano i tre costrutti con opportune istruzioni di codice. CONTROLLO DEL PROGRAMMA: SEQUENZA Istruzioni eseguite una dopo l’altra 23 CONTROLLO DEL PROGRAMMA: SELEZIONE Selezione tra due o più alternative sulla base di una condizione di controllo CONTROLLO DEL PROGRAMMA: ITERAZIONE - Costrutti principali: for, while, do-while - Ciclo while più utile se non è noto a priori il numero di iterazioni; - Ciclo do-while più utile se si vuole garantire che l’iterazione sia eseguita almeno una volta - Ciclo for più utile se è noto il numero di iterazioni. Es: prodotto tra due numeri interi positivi - Ciclo while più utile se è noto il numero di iterazioni. Es: divisione con resto tra due numeri interi positivi. - Ciclo do-while più utile se si vuole che il compito iterabile sia eseguito almeno una volta. Costrutti principali: for, while, do while NB: è possibile riformulare un ciclo for in un ciclo while e viceversa! 5 DIAPOSITIVA ARGOMENTI Sistemi Informativi; Tipi di dati; Strutture di controllo del programma (cenni); Basi di dati; Informatica medica (ICD, DRG) Sistemi Informativi Con il termine Sistema Informativo si intende l’insieme degli strumenti, delle risorse (anche umane), e delle procedure che consentono di gestire le informazioni utilizzate, prodotte, e trasformate da un’organizzazione. Il Sistema Informativo è fortemente integrato con il Sistema Organizzativo. Il termine Sistema Organizzativo designa l’insieme di risorse e regole per l’utilizzo coordinato delle risorse medesime, che una organizzazione utilizza per i propri scopi. 24 ARCHITETTURA DI UN SISTEMA INFORMATIVO Risorsa: tutto ciò, sia materiale sia immateriale, con cui l’organizzazione opera per perseguire i propri obiettivi. Le risorse possono essere sia interne sia esterne. Esempi di risorse: clienti, mercato, fornitori, finanze, persone, infrastrutture, servizi, beni, norme, organigrammi, piani… Alla risorsa può essere associato un ciclo di vita (pianificazione, acquisizione, gestione, manutenzione) Processo: l’insieme delle attività (decisioni e azioni) con cui l’organizzazione gestisce una risorsa o un insieme di risorse. Un processo trasforma per definizione un ingresso in una uscita. I sistemi informativi possono essere classificati e suddivisi: Dal punto di vista della funzione (Es: funzione logistica, funzione finanziaria) Dal punto di vista della attività, in genere con riferimento alla piramide aziendale (attività strategiche, tattiche, operative) Dal punto di vista dei processi o Es: Customer Relationship Management, CRM; o Es: Enterprise Resource Planning, ERP Es: sistemi informativo contabile gestisce i seguenti documenti… o gli inventari; o le scritture elementari; o le contabilità sezionali; o la contabilità generale; o la contabilità gestionale; o il budget. 25 …e ha tra i suoi obiettivi (che si traducono in processi!) il: o rilevare i rapporti con i terzi; o far fronte a quanto stabilito dalla legge in materia di scritture obbligatorie; o valutare i risultati conseguiti con la gestione, esaminata negli aspetti reddituali finanziari e patrimoniali; o consentire il controllo della gestione; o fornire informazione su cui poggiano le loro decisioni a tutti coloro (stakeholder) che sono coinvolti direttamente o indirettamente nell'impresa. Il termine Sistema Informatico designa l’insieme di tecnologie (TIC/ICT…) utilizzate per elaborare, far fluire, e memorizzare (archiviare) informazioni in una organizzazione. È quindi utilizzato tanto dal Sistema Informativo che dal Sistema Organizzativo. Il Sistema Informatico è soggetto a mutamenti, che inseguono l’evoluzione sia dell’organizzazione sia della tecnologia. ELEMENTI DEL SISTEMA INFORMATICO Il Sistema Informatico include una serie di elementi (introdotti in parte nelle lezioni precedenti) Interfaccia utente Applicazioni Ambiente software (Estende il Sistema Operativo permettendo l’esecuzione di software scritti per operare in quell’ambiente, fornendo un «application manager» e una «application programming interface» API) Basi di dati Software di base (Sistema Operativo…) Hardware centralizzato e distribuito (Es: cloud storage) Sistemi di comunicazione e di rete TIPI DI DATI E OPERAZIONI I dati all’interno di un calcolatore sono rappresentati come numeri interi binari. Tuttavia, gli ambienti di sviluppo e i linguaggi supportati permettono al programmatore (e quindi all’utente finale) di gestire tipologie di dati più eterogenee. Con il termine tipo di dati si indica l’insieme di valori che una variabile può assumere. In alcuni linguaggi di programmazione (C) vige la tipizzazione statica, cioè il tipo di dato associato ad una variabile deve essere dichiarato e non può essere cambiato. In altri (Python, Lisp, Visual Basic) permettono la tipizzazione dinamica, e altri ancora supportano sia la tipizzazione statica sia quella dinamica (C++,Java). Possiamo inoltre distinguere tra tipi di dati primitivi (o atomici) e derivati. I primi sono tipi predefiniti non scomponibili, i secondi sono ottenuti aggregando i tipi atomici secondo le regole del linguaggio adottato. Una ulteriore distinzione è tra tipi predefiniti e tipi definiti dall’utente. I primi sono tipi di dato primitivi o aggregati direttamente supportati dal linguaggio, i secondi sono creati dal programmatore, che ne fornisce descrizione nel codice sorgente. 26 Tipi di dato predefiniti e operazioni: Tipi primitivi Booleani Numeri o Interi o Numeri razionali in virgola fissa o mobile (fixed point/floating point) Caratteri (atomico) e stringhe (aggregato) Puntatori Tipi Booleani Utilizzati per rappresentare le condizioni logiche di vero o falso. La parola chiave che definisce questo tipo nei linguaggi è spesso «bool». In alcuni linguaggi i valori sono indicati dalle parole chiave «true»/«false», in altri da «0»/«1» (zero logico/uno logico) o da «0»/«diverso da 0». Le operazioni eseguite su dati booleani sono la negazione (operatore NOT) e operazioni logiche binarie (AND, OR,EXOR/XOR,NAND,NOR), definite mediante una «tabella della verità”. Tipi interi senza segno Sono utilizzati per rappresentare numeri interi mediante la notazione posizionale. Internamente la rappresentazione è binaria. La posizione della cifra binaria ne determina il peso. Es: (1011)2=12 3+0 × 2 2+1 2 1+1 2 0=8+2+1=(11)10 La conversione della rappresentazione in base 10 di un numero nella rappresentazione in una base b avviene mediante un algoritmo che prevede divisioni successive del numero per la base di destinazione, iterata finché il quoziente non si annulla. I resti delle divisioni restituiscono le cifre del numero rappresentate nella base di destinazione, dalla cifra meno significativa a quella più significativa. Es: conversione di (18)10 in rappresentazione binaria 18/2= 9 resto 0 9/2 = 4 resto 1 4/2 = 2 resto 0 2/2 = 1 resto 0 1/2 = 0 resto 1 Si ha quindi (18)10 = (10010)2 Tipi con segno La rappresentazione dei numeri con segno prevede che una delle cifre binarie (bit, da BInary Digit) sia utilizzata per esprimere il segno del numero intero. La soluzione più intuitiva (un bit definisce il segno degli altri) è leggermente inefficiente, perché utilizza due configurazioni di bit per 27 rappresentare lo zero. Es: con la notazione basata sul bit di segno, un numero a 8 bit può rappresentare valori da -127 a 127. La rappresentazione più utilizzata (qui non approfondita) è quella «in complemento a due», che utilizza una sola configurazione di bit per lo zero Es: con la notazione in complemento a due, un numero a 8 bit può rappresentare valori da -128 a 127 Numeri razionali, che possono essere rappresentati in notazione a virgola fissa o a virgola mobile. La notazione a virgola fissa è posizionale, in cui si introduce un «punto radice» (radix point), la cui posizione separa la parte intera del numero dalla parte frazionaria. o Es: (3.14)10, base 10, punto decimale o Es: (1.01)2 , base 2, punto binario. o (1.01)2 = 12 0+0 2 -1+1 2 -2=1+0 1/2+1 1/4 =1+0.25=(1.25)10 La notazione a virgola mobile prevede di rappresentare un numero come prodotto tra il segno (1), espresso come (-1)s , in cui s =[0,1] una base b elevata ad un esponente a, e l’insieme c delle cifre significative del numero rappresentato in tale base (recentemente denominato significand, a volte impropriamente chiamata mantissa, che è invece la parte frazionaria del logaritmo in base 10 del numero,) cioè nella forma (-1)s c b a o Es: -0.56 105 , cioè s=1, c=0.56, b=10, a=5 In notazione binaria, questo vuol dire che un bit è utilizzato per il segno, n1 bit per la parte frazionaria, e n2 bit per l’esponente o Es: un numero è rappresentato in virgola mobile a 16 bit, di cui 1 bit per il segno, 8 bit per l’esponente, e 7 bit per il significand, normalizzato in modo tale da rappresentare valori tra 1 e 2. I numeri rappresentati possono variare nei campi (-2 128 , -2 -128] e [+2-128, +2128) o Es: float da 32 bit, di cui 1 di segno, 8 di esponente, e 23 di «mantissa» 28 Tipi di dato predefiniti e operazioni: caratteri e stringhe Un carattere può essere rappresentato da un numero intero senza segno, mediante una tabella di corrispondenze. Un esempio è l’insieme ASCII (American Standard Code for Information Interchange), originariamente comprendente 128 simboli (7 bit), poi esteso a 256 (8 bit) o Es: nel linguaggio C un carattere ASCII è rappresentato dal tipo char, che designa un numero intero senza segno a 8 bit. Include simboli alfanumerici (lettere maiuscole/minuscole, cifre, operatori matematici e segni di interpunzione), caratteri di servizio, simboli grafici. Successivamente affiancato dalla codifica Unicode, inizialmente a 16 bit, poi estesa a sua volta. La codifica Unicode permette di rappresentare i set di simboli grafici associati a tutte le lingue vive e morte note. Una stringa è un tipo di dato aggregato, e consiste in una sequenza di caratteri o Es: nel linguaggio C una stringa è una sequenza di char, rappresentata dalla sequenza di simboli alfanumerici delimitata dai doppi apici "Salve, mondo!" Tipi di dato predefiniti e operazioni: puntatori Un puntatore definisce l’indirizzo di una variabile, cioè l’indirizzo della cella di memoria in cui la variabile memorizza i dati. L’operatore con cui si accede all’indirizzo «puntato» è detto operatore di dereferenziazione. Ha vari utilizzi, tra cui la costruzione di strutture dati complesse la cui dimensione e i cui elementi possono variare nel tempo. Tipi di dato derivati Array: insieme di elementi dello stesso tipo (primitivo o derivato) o Es: x=[1.2, 3.14, 1.7, 137]; % Pseudocodice Matlab o Es: int a={1 2 3}; // Pseudocodice C Un array può essere multidimensionale, se di dimensione 2 è una matrice. Record (detto anche tupla o struttura): insieme di elementi non necessariamente dello stesso tipo. Il record è l’elemento più utilizzato per descrivere dati relativi a persone. Esempi di dati derivati: codici ICD, schede di dimissione ospedaliera 29 30 SCHEDA DI DIMISSIONE OSPEDALIERA L’acronimo “SDO” sta per Scheda di Dimissione Ospedaliera. La SDO è lo strumento ordinario per la raccolta delle informazioni relative ad ogni paziente dimesso da tutti gli istituiti di ricovero pubblici e privati, in tutto il territorio nazionale. La SDO contiene una serie di informazioni desunte dalla cartella clinica del paziente, sia di tipo anagrafico (ad esempio sesso, data e luogo di nascita, comune di residenza), sia clinico (ad esempio diagnosi, procedure diagnostiche, informazioni sul ricovero e la dimissione), nonché informazioni relative alla struttura dove è stato effettuato il ricovero ospedaliero. Ciascuna struttura di ricovero provvede alla compilazione delle SDO a partire dalle cartelle cliniche dei pazienti dimessi. Successivamente, con cadenza trimestrale, ciascuna struttura provvede ad inviare i dati alla Regione, la quale, dopo aver effettuato i dovuti controlli, invia i dati al Ministero della Salute con cadenza semestrale. 31 DRG: è un sistema che permette di classificare tutti i pazienti dimessi da un ospedale (ricoverati in regime ordinario o day hospital) in gruppi omogenei per assorbimento di risorse impegnate (isorisorse). Tale aspetto permette di quantificare economicamente tale assorbimento di risorse e quindi di remunerare ciascun episodio di ricovero. Una delle finalità del sistema è quella di controllare e contenere la spesa sanitaria. Il DRG viene attribuito ad ogni paziente dimesso da una struttura ospedaliera tramite un software chiamato DRG-grouper mediante l'utilizzo di poche variabili specifiche del paziente: età, sesso, tipo di dimissione, diagnosi principale, diagnosi secondarie, procedure/interventi chirurgici. Tali variabili sono utilizzate dal software "DRG- grouper" a seguito della compilazione, da parte del medico responsabile della dimissione, della (SDO) dalla struttura ospedaliera e inserita in un tracciato informatizzato. Il sistema dei DRG si basa fondamentalmente su un sistema di diagnosi (ed eventuali procedure associate), omogenee per assorbimento di risorse. Essi sono contraddistinti da un numero a tre cifre un totale di 538 DRG. Il sistema DRG prevede un ulteriore livello di aggregazione detto MDC, che sta per Major 32 Diagnostic Category (Categoria Diagnostica Maggiore). Questo livello di aggregazione si basa su criteri anatomici (relativi all’apparato affetto dalla patologia) e eziologici (relativi alla causa della patologia); esiste inoltre il raggruppamento pre-MDC, che comprende casistica ad alto assorbimento di risorse (ad esempio trapianti e tracheostomie). In generale la MDC viene attribuita in base al codice di diagnosi principale. ALGORITMI In informatica il termine algoritmo indica un procedimento che risolve un problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo si dice computabile. 1. I passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità); 2. I passi costituenti devono essere interpretabili in modo univoco dall'esecutore, sia esso umano o artificiale (non ambiguità); 33 3. L'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza); 4. L'esecuzione deve avere termine dopo un tempo finito (terminazione); 5. L'esecuzione deve portare ad un risultato univoco (effettività); 6. ad ogni passo, il successivo deve essere uno ed uno solo, ben determinato (determinismo). CONTROLLO DEL POGRAMMA Teorema di Böhm-Jacopini (1966): qualunque algoritmo può essere implementato in forma di programma (diagramma di flusso, pseudocodice o codice sorgente) utilizzando tre costrutti o Sequenza: istruzioni eseguite una dopo l’altra nell’ordine in cui sono state posizionate dal programmatore o Selezione: scelta tra due o più alternative, spesso realizzata appoggiandosi ad una variabile booleana. o Iterazione: esecuzione ripetuta di un compito. Il compito è rappresentato da un gruppo di istruzioni, che viene eseguito ripetutamente fino alla commutazione di una variabile di stato Tutti i linguaggi di programmazione supportano i tre costrutti con opportune istruzioni di codice 34 35 36 37 Nota: Base DATI, ERP, LIMS sono in un altro documento già stampato. 6 DIAPOSITIVA ARGOMENTI Reti di calcolatori, componenti, protocolli Servizi della rete Internet e World Wide Web Strumenti e metodi di ricerca Sicurezza RETI DI CALCOLATORI Una rete di calcolatori è una infrastruttura (hardware e software) che consente la comunicazione tra un insieme di dispositivi. L’infrastruttura hardware consente il collegamento fisico tra calcolatori, e può consistere sia di collegamenti via cavo (coassiale, doppino, fibra ottica…) sia di collegamenti wireless, basati in genere su onde radio (Es: WiFi e Bluetooth). L’infrastruttura software supporta la connettività a livello di sistema operativo. La trasmissione dati avviene con l’approccio a commutazione di pacchetto. Il preambolo viene utilizzato dal ricevitore per rendersi conto che è in arrivo un pacchetto e sincronizzarsi, in modo da ricevere le parti seguenti. L’intestazione descrive il tipo di pacchetto, e, se richiesto il mittente e il/i destinatario/i. Il payload è il contenuto informativo utile che si vuole effettivamente trasmettere dal mittente al destinatario. La coda contiene informazioni ausiliarie, come i codici per la correzione di errori in ricezione (Es: bit di parità) TOPOLOGIA DI UNA RETE Topologia: τόπος, tópos, "luogo", e λόγος, lógos, "studio", ha il significato letterale di "studio dei luoghi". È una branca della matematica che studia le proprietà delle figure e in particolare dei grafi. Le topologie di una rete determinano i percorsi seguiti dai pacchetti per viaggiare dal mittente al destinatario. 38 MODELLO ISO/OSI Il modello descrittivo ISO-OSI presenta 7 livelli, che realizzano una astrazione funzionale. Supporta incapsulamento e tunneling, semplifica la progettazione delle interconnessioni tra sistemi. Livello applicazione: il programma con cui interagisce l’utente (chat, posta elettronica, console di controllo di una linea di produzione). Livello presentazione: utilizzato per definire il formato dei dati generati dal livello superiore. Livello sessione: gestisce la connessione tra due dispositivi (instaurazione, mantenimento, disconnessione) Trasporto: utilizzando protocolli standard (TCP o UDP) viene definito un canale logico tra i dispositivi connessi Rete: definisce politiche di instradamento dei messaggi (IP, ICMP…). Livello scambio dati (data link): definisce l’indirizzamento dell’hardware (traduzione di indirizzi logici in indirizzi fisici) e le politiche di accesso al mezzo (per evitare collisioni). Livello fisico: definisce le specifiche dell’hardware e dei segnali utilizzati per trasmettere l’informazione sul canale fisico Es: formato dei pacchetti (frame) Ethernet ed Ethernet 2 L’incapsulamento è l’inclusione di un pacchetto in un altro pacchetto. Il tunneling è l’incapsulamento sistematico di un pacchetto in un pacchetto utilizzato da un altro protocollo. Permette la creazione di canali logici. 39 Es: incapsulamento di un pacchetto SpiNNaker in un pacchetto Ethernet Il modello descrittivo ISO-OSI presenta 7 livelli, che realizzano una astrazione funzionale. Supporta incapsulamento e tunneling, semplifica la progettazione delle interconnessioni tra sistemi. MODELLO TCP/IP Alternativa: modello TCP/IP MONITORAGGIO/CONTROLLO DI PROCESSO E MODELLO ISO/OSI STACK PROTOCOLLARE ISO-OSI Il protocollo IP è un protocollo di livello 3 (rete), che ha lo scopo di supportare l’instradamento (routing) dei pacchetti, basato sugli indirizzi dei nodi (è un istradamento di tipo logico). Esiste nelle versioni IPv4 (più utilizzata) e IPv6. Nella versione IPv4 l’indirizzo IP è un indirizzo a 32 bit=4 byte. 40 È il protocollo che permette l’interconnessione di più reti, e quindi permette il funzionamento di Internet. È un protocollo non connesso, cioè non è prevista l’instaurazione di una connessione dedicata e non prevede l’invio di messaggi di conferma. Il protocollo TCP (Transmission Control Protocol) è un protocollo di livello 4 (trasporto), che ha lo scopo di supportare una connessione instaurata al livello ISO/OSI superiore (sessione). È un protocollo connesso, che prevede l’invio di messaggi di acknowledgement. Un protocollo alternativo è l’UDP (User Datagram Protocol), che non è connesso e presenta una maggiore efficienza dati 41 42 43 STRUMENTI E MODI DI RICERCA Alcune caratteristiche di una pagina web che aumentano il ranking nella SERP Google (al momento il motore di ricerca più popolare): - la densità della parola chiave, ovvero la frequenza con cui compare in una pagina web; - la velocità di caricamento di un sito; - l’utilizzo di immagini (es: fotografie) pertinenti; - la qualità dei contenuti; - web design pensato per ottimizzare i siti per i dispositivi mobili, aka «Mobile First». 44 Il miglioramento dell’indicizzazione è una attività nota come SEO (Search Engine Optimization) SICUREZZA Minaccia informatica, definizioni Meccanismi di ingresso/propagazione e sintomi Meccanismi di prevenzione Come gestire un sistema compromesso Il termine «Minaccia Informatica» descrive un insieme di programmi dannosi per i sistemi informatici. In genere un codice eseguibile autoriproducente, che si diffonde nel sistema penetrato Il codice eseguibile può: o Visualizzare messaggi/immagini, modificare/danneggiare file o Innescare una escalation di privilegi, che concede accesso al sistema a un soggetto esterno o Propagarsi CHI GENERA LE MINACCE INFORMATICHE? - Hacker: è un “anarchico”, una persona per la quale entrare in un sistema informatico superandone le protezione è una sfida; - Cracker: simile all’hacker, il suo scopo è volutamente carpire informazioni o arrecare danno. 45 46 MECCANISMI DI DIFESA Antivirus/antimalware/antiadware Firewall (es: disabilitare porte relative a servizi non utilizzati) 47 COSA FARE SE UN SISTEMA È STATO COMPROMESSO Disconnettere da internet Verificare i programmi installati, rimuovere quelli indesiderati, riavviare Scansione con antivirus Reinstallazione dell’intero sistema con formattazione del disco fisso (ad alto o a basso livello) Polizia Postale 48