Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 10
  • Nozioni di base sui sistemi operativi corso di lezioni guida allo studio. Corso di lezione sui sistemi operativi

Nozioni di base sui sistemi operativi corso di lezioni guida allo studio. Corso di lezione sui sistemi operativi

Sistema operativo (SO) È un programma che consente un uso razionale dell'hardware del computer in modo intuitivo. Una lezione introduttiva introduce l'argomento di questo corso. Per prima cosa, proveremo a rispondere alla domanda su cosa sia OS... Segue un'analisi dell'evoluzione OS e una storia sull'emergere dei principali concetti e componenti del moderno OS... Infine verrà presentata una classifica OS dal punto di vista delle caratteristiche architettoniche e dell'utilizzo delle risorse informatiche.

Cos'è un sistema operativo

Struttura sistema informatico

In cosa consiste un sistema informatico? Innanzitutto, da quella che nei paesi di lingua inglese viene solitamente chiamata la parola hardware, o supporto tecnico: processore, memoria, monitor, dispositivi a disco e così via, collegati da una dorsale chiamata bus. Alcune informazioni sull'architettura del computer sono disponibili nell'Appendice 1 di questa lezione.

In secondo luogo, il sistema informatico è costituito da software. Tutto il software è solitamente diviso in due parti: applicazione e sistema. Il software applicativo, di regola, include una varietà di programmi bancari e altri programmi aziendali, giochi, elaboratori di testi, ecc. Il software di sistema è generalmente inteso come programmi che facilitano il funzionamento e lo sviluppo programmi applicativi... Va detto che la suddivisione in applicativi e software di sistema è alquanto arbitraria e dipende da chi effettua tale suddivisione. Quindi, un utente normale, inesperto nella programmazione, può leggere Microsoft Word un programma di sistema, ma, dal punto di vista del programmatore, è un'applicazione. Un compilatore C è un programma di sistema per un normale programmatore e un programma applicativo per uno di sistema. Nonostante questo bordo sfocato, questa situazione può essere visualizzata come una sequenza di livelli (vedi Fig. 1.1), evidenziando i più parte comune software di sistema - sistema operativo:

Riso. 1.1. Strati software del sistema informatico

Cos'è il sistema operativo?

La maggior parte degli utenti ha esperienza operativa sistemi operativi, ma tuttavia trovano difficile dare a questo concetto una definizione precisa. Diamo un rapido sguardo ai principali punti di vista.

Sistema operativo come macchina virtuale

Durante lo sviluppo OS l'astrazione è ampiamente utilizzata, che è un importante metodo di semplificazione e consente di concentrarsi sull'interazione di componenti di sistema di alto livello, ignorando i dettagli della loro implementazione. In questo senso OSè l'interfaccia tra l'utente e il computer.

L'architettura della maggior parte dei computer a livello di istruzioni macchina è molto scomoda per l'utilizzo da parte dei programmi applicativi. Ad esempio, lavorare con un disco richiede la conoscenza della struttura interna del suo componente elettronico - un controller per l'immissione di comandi per ruotare il disco, cercare e formattare tracce, leggere e scrivere settori, ecc. terminologia - per affrontare lo sviluppo di driver di dispositivo ), ma dovrebbe avere una semplice astrazione di alto livello, ad esempio, che rappresenta lo spazio delle informazioni di un disco come un insieme di file. Il file può essere aperto per la lettura o la scrittura, utilizzato per recuperare o ripristinare le informazioni e quindi chiuso. Questo è concettualmente più facile che preoccuparsi dei dettagli di come si muovono le testine del disco o di come funziona il motore. Allo stesso modo, con l'aiuto di astrazioni semplici e chiare, tutti i dettagli inutili dell'organizzazione sono nascosti al programmatore. interrompe, funzionamento del timer, gestione della memoria, ecc. Inoltre, sui moderni sistemi informatici, è possibile creare l'illusione di una dimensione illimitata di RAM e il numero processori... fa tutto? sistema operativo... In questo modo, sistema operativo presentato all'utente macchina virtuale che è più facile da gestire che direttamente con l'hardware del computer.

Il sistema operativo come gestore delle risorse

Sistema operativoè progettato per controllare tutte le parti di un'architettura di computer altamente complessa. Immagina, ad esempio, cosa succede se più programmi in esecuzione sullo stesso computer tentano di inviare un output a una stampante contemporaneamente. Avremmo stampato un miscuglio di righe e pagine vari programmi.Sistema operativo previene questo tipo di caos memorizzando le informazioni di stampa su disco e mettendo in coda la stampa. Per i computer multiutente, la necessità di gestire e proteggere le risorse è ancora più evidente. Quindi, sistema operativo , come gestore delle risorse, effettua una distribuzione ordinata e controllata processori, memoria e altre risorse tra diversi programmi.

Il sistema operativo come protettore di utenti e programmi

Se il sistema informatico lo consente lavoro congiunto diversi utenti, allora si pone il problema di organizzare le proprie attività in sicurezza. È necessario garantire la sicurezza delle informazioni sul disco in modo che nessuno possa eliminare o danneggiare i file di altre persone. Non è possibile consentire ai programmi di un utente di interferire arbitrariamente con il lavoro dei programmi di altri utenti. È necessario sopprimere i tentativi di utilizzo non autorizzato del sistema informatico. Tutta questa attività viene svolta sistema operativo come organizzatore del lavoro sicuro degli utenti e dei loro programmi. Da questo punto di vista sistema operativo sembra essere il sistema di sicurezza dello stato, a cui sono affidate funzioni di polizia e di controspionaggio.

Il sistema operativo come kernel costantemente funzionante

Infine, puoi dare la seguente definizione: sistema operativo È un programma che viene eseguito costantemente su un computer e interagisce con tutti i programmi applicativi. Sembrerebbe che questa sia una definizione assolutamente corretta, ma, come vedremo più avanti, in molti moderni sistemi operativi solo una parte funziona costantemente sul computer sistema operativo, che è comunemente chiamato il suo nucleo.

Come possiamo vedere, ci sono molti punti di vista su cosa sia sistema operativo... È impossibile dargli una definizione rigorosa adeguata. È più facile per noi dire non ciò che è sistema operativo, e a cosa serve e cosa fa. Per chiarire questo problema, si consideri la storia dello sviluppo dei sistemi informatici.

Una breve storia dell'evoluzione dei sistemi informatici

Prenderemo in considerazione la storia dello sviluppo dell'informatica e non sistemi operativi perché hardware e software si sono evoluti insieme, influenzandosi a vicenda. L'emergere di nuovi capacità tecniche ha portato a una svolta nella creazione di programmi convenienti, efficaci e sicuri e nuove idee nell'area software hanno stimolato la ricerca di nuove soluzioni tecniche. Sono questi criteri - convenienza, efficienza e sicurezza - che hanno svolto il ruolo di fattori di selezione naturale nell'evoluzione dei sistemi informatici.

Il primo periodo (1945-1955). Macchine lampada. Nessun sistema operativo

Inizieremo il nostro studio dello sviluppo dei sistemi informatici con l'emergere dei sistemi informatici elettronici (omettendo la storia dei dispositivi meccanici ed elettromeccanici).

I primi passi nello sviluppo dei computer elettronici furono fatti alla fine della seconda guerra mondiale. A metà degli anni '40, furono creati e apparvero i primi dispositivi per il calcolo dei tubi principio del programma memorizzato nella memoria della macchina (John Von Neumann, giugno 1945). A quel tempo, un unico gruppo di persone partecipava alla progettazione, al funzionamento e alla programmazione del computer. Era più un lavoro di ricerca scientifica nel campo dell'informatica, piuttosto che l'uso regolare dei computer come strumento per risolvere eventuali problemi pratici provenienti da altre aree applicate. La programmazione è stata effettuata esclusivamente su linguaggio macchina... Di sistemi operativi non c'era dubbio, tutti i compiti dell'organizzazione processo di calcolo sono stati risolti manualmente da ciascun programmatore dal pannello di controllo. Un solo utente potrebbe essere alla console. Il programma veniva caricato nella memoria della macchina, nella migliore delle ipotesi da un mazzo di schede perforate, e di solito utilizzando un pannello di interruttori.

Il sistema informatico ha eseguito solo un'operazione alla volta (input-output o calcoli effettivi). Il debug dei programmi è stato effettuato dal pannello di controllo studiando lo stato della memoria e dei registri della macchina. Alla fine di questo periodo compare il primo software di sistema: nel 1951-1952. esistono prototipi dei primi compilatori da linguaggi simbolici (Fortran, ecc.), e nel 1954 Nat Rochester sviluppa un Assembler per l'IBM-701.

Una parte significativa del tempo è stata dedicata alla preparazione del lancio del programma e i programmi stessi sono stati eseguiti rigorosamente in sequenza. Questa modalità di funzionamento è chiamata elaborazione sequenziale. In generale, il primo periodo è caratterizzato da un'estrema costo alto sistemi informatici, il loro numero ridotto e la bassa efficienza di utilizzo.

Il secondo periodo (1955 - primi anni '60). Computer basati su transistor. Sistemi operativi batch

Dalla metà degli anni '50 iniziò il periodo successivo nell'evoluzione della tecnologia informatica, associato all'emergere di una nuova base tecnica: gli elementi a semiconduttore. Applicazione transistor invece di elettronica spesso bruciata lampade ha portato ad un aumento dell'affidabilità dei computer. Le macchine possono ora funzionare ininterrottamente per un tempo sufficiente a svolgere compiti di importanza pratica. Si riduce il consumo di elettricità dei computer e si migliorano i sistemi di raffreddamento. I computer si sono ridotti di dimensioni. Il costo di funzionamento e manutenzione delle apparecchiature informatiche è diminuito. Inizia l'uso dei computer da parte delle imprese commerciali. Allo stesso tempo, c'è un rapido sviluppo dei linguaggi algoritmici (LISP, COBOL, ALGOL-60, PL-1, ecc.). Appaiono i primi veri compilatori, editor di link, librerie di routine matematiche e di utilità. Il processo di programmazione è semplificato. Non è necessario caricare le stesse persone con l'intero processo di sviluppo e utilizzo dei computer. Fu durante questo periodo che il personale fu diviso in programmatori e operatori, specialisti operativi e sviluppatori di computer.

Il processo stesso di esecuzione dei programmi sta cambiando. Ora l'utente porta il programma con i dati di input sotto forma di un mazzo di schede perforate e indica le risorse necessarie. Questo mazzo prende il nome dell'attività. L'operatore carica l'attività nella memoria della macchina e la avvia per l'esecuzione. L'output risultante viene stampato sulla stampante e l'utente lo riceve indietro dopo un tempo (piuttosto lungo).

La modifica delle risorse richieste provoca una pausa esecuzione del programma, di conseguenza processore spesso inattivo. Per migliorare l'efficienza dell'uso del computer, i lavori con risorse simili iniziano a essere raccolti insieme, creando una serie di lavori.

Appaiono i primi sistemi di elaborazione batch che automatizzano semplicemente il lancio di un programma da un pacchetto dopo l'altro e quindi aumentano il fattore di carico processore... Quando si implementa sistemi di elaborazione batchè stato sviluppato un linguaggio di controllo delle attività formalizzato, con l'aiuto del quale il programmatore ha detto al sistema e all'operatore quale lavoro vuole fare sul computer. Sistemi di elaborazione batch divenne il prototipo del moderno sistemi operativi, sono stati i primi programmi di sistema progettati per controllare il processo di elaborazione.

Terzo periodo (primi anni '60 - 1980). Computer a circuito integrato. I primi sistemi operativi multitasking

Il prossimo periodo importante nello sviluppo dei computer risale ai primi anni '60 - 1980. A quel tempo, nella base tecnica, c'era una transizione dai singoli elementi a semiconduttore del tipo transistor a circuiti integrati... La tecnologia informatica sta diventando più affidabile ed economica. La complessità e il numero di compiti risolti dai computer è in crescita. Produttività incrementata processori.

La bassa velocità dei dispositivi meccanici di input-output (un lettore di carte veloce può gestire 1200 carte al minuto, stampanti stampate fino a 600 righe al minuto) ostacola l'aumento dell'efficienza nell'utilizzo del tempo del processore. Invece di leggere direttamente una serie di attività dalle schede perforate nella memoria, iniziano a utilizzare la sua registrazione preliminare, prima su nastro magnetico e poi su disco. Quando i dati sono richiesti durante l'esecuzione di un lavoro, vengono letti dal disco. Allo stesso modo, l'output viene prima copiato nel buffer di sistema e scritto su nastro o disco e viene stampato solo al termine del lavoro. Inizialmente, le effettive operazioni di I/O venivano eseguite off-line, cioè utilizzando altri, più semplici, separatamente computer in piedi... Successivamente, iniziano ad essere eseguiti sullo stesso computer che esegue i calcoli, cioè in modalità on-line. Questa tecnica è chiamata spooling (abbreviazione di Simultaneous Peripheral Operation On Line) o scambio e scambio di dati. L'introduzione della tecnica di pompaggio in sistemi batch ha permesso di combinare reali operazioni di I/O di un task con l'esecuzione di un altro task, ma ha richiesto lo sviluppo dell'apparato interrompe per la notifica processore circa la fine di queste operazioni.

I nastri magnetici erano dispositivi ad accesso sequenziale, ovvero le informazioni venivano lette da essi nell'ordine in cui erano scritte. L'aspetto di un disco magnetico, per il quale l'ordine di lettura delle informazioni non è importante, ovvero il dispositivo accesso diretto, ha portato all'ulteriore sviluppo dei sistemi informatici. Quando si elabora un batch di lavori su nastro magnetico, l'ordine in cui sono stati avviati i lavori è stato determinato dall'ordine in cui sono stati inseriti. Durante l'elaborazione di un batch di attività su un disco magnetico, è diventato possibile selezionare l'attività successiva da eseguire. Sistemi batch avviare le attività di programmazione: a seconda della disponibilità delle risorse richieste, dell'urgenza dei calcoli, ecc. questa o quell'attività è selezionata per l'account.

Migliorare ulteriormente l'efficienza d'uso processoreè stato ottenuto attraverso la multiprogrammazione. L'idea alla base della multiprogrammazione è la seguente: mentre un programma esegue un'operazione di I/O, processore non resta inattivo, come avveniva in modalità a programma singolo, ma esegue un altro programma. quando Operazione I/O finisce, processore ritorna all'esecuzione del primo programma. Questa idea ricorda il comportamento dell'insegnante e degli studenti durante un esame. Mentre uno studente (programma) medita la risposta alla domanda (operazione I/O), l'insegnante ( processore) ascolta la risposta di un altro studente (calcoli). Naturalmente, questa situazione richiede diversi studenti nella stanza. Allo stesso modo, la multiprogrammazione richiede più programmi in memoria contemporaneamente. In questo caso, ogni programma viene caricato nella propria parte della RAM, chiamata sezione, e non dovrebbe influenzare l'esecuzione di un altro programma. (Gli studenti siedono a tavoli separati e non si chiedono a vicenda.)

L'avvento della multiprogrammazione richiede una vera rivoluzione nella progettazione del sistema informatico. Il supporto hardware gioca qui un ruolo speciale (molte innovazioni hardware sono apparse nella precedente fase di evoluzione), le cui caratteristiche più significative sono elencate di seguito.

    Attuazione di meccanismi di protezione. I programmi non dovrebbero avere un accesso autonomo all'allocazione delle risorse, che si traduce in comandi privilegiati e non privilegiati. I comandi privilegiati, come i comandi I/O, possono essere eseguiti solo sistema operativo... Si dice che operi in modalità privilegiata. Trasferimento del controllo dal programma applicativo a OS accompagnata da un controllato cambio di regime. Inoltre, è una protezione della memoria per isolare i programmi utente concorrenti l'uno dall'altro e OS- da programmi utente.

    Disponibilità interrompe... Esterno interruzioni notificare OS che si è verificato un evento asincrono, ad esempio un'operazione di I/O completata. Interno interruzioni(ormai si usa chiamarli situazioni eccezionali) si verificano quando l'esecuzione del programma ha portato a una situazione che richiede un intervento OS come la divisione per zero o il tentativo di violazione della sicurezza.

    Sviluppo del parallelismo in architettura. Accesso diretto alla memoria e organizzazione dei canali I/O consentiti liberando la centrale processore dalle operazioni di routine.

Non meno importante nell'organizzazione della multiprogrammazione è il ruolo sistema operativo... È responsabile delle seguenti operazioni.

    Organizzazione dell'interfaccia tra il programma applicativo e OS con aiuto chiamate di sistema.

    Accodamento e allocazione dei lavori in memoria processore uno dei compiti richiesti pianificazione uso processore.

    Il passaggio da un lavoro all'altro richiede di preservare il contenuto dei registri e delle strutture dati necessarie per completare il lavoro, in altre parole, il contesto per garantire che il calcolo continui correttamente.

    Poiché la memoria è una risorsa limitata, sono necessarie strategie di gestione della memoria, ovvero è necessario snellire i processi di allocazione, sostituzione e recupero delle informazioni dalla memoria.

    Organizzazione dell'archiviazione di informazioni su supporti esterni sotto forma di file e garanzia dell'accesso a un file specifico solo a determinate categorie di utenti.

    Poiché i programmi potrebbero dover effettuare uno scambio autorizzato di dati, è necessario fornire loro mezzi di comunicazione.

    Per un corretto scambio di dati è necessario consentire situazioni di conflitto derivanti quando si lavora con varie risorse e prevedono il coordinamento dei programmi delle loro azioni, ad es. fornire al sistema funzionalità di sincronizzazione.

I sistemi di multiprogrammazione hanno fornito l'opportunità di saperne di più uso efficace risorse di sistema (ad esempio, processore, memoria, periferiche), ma rimasero a lungo lotto... L'utente non poteva interagire direttamente con il compito e doveva prevedere tutte le possibili situazioni con l'ausilio delle schede di controllo. Il debug dei programmi richiedeva ancora molto tempo e richiedeva l'esame di stampe multipagina di memoria e registri o l'utilizzo della stampa di debug.

L'avvento dei display a raggi catodici e il ripensamento dell'uso delle tastiere hanno evidenziato una soluzione a questo problema. I sistemi di condivisione del tempo sono diventati un'estensione logica dei sistemi di multiprogrammazione, o sistemi di condivisione del tempo 1) ... In loro processore passa da un'attività all'altra non solo durante le operazioni di I/O, ma semplicemente dopo un certo periodo di tempo. Queste opzioni si verificano così frequentemente che gli utenti possono interagire con i loro programmi mentre sono in esecuzione, ovvero in modo interattivo. Di conseguenza, diventa possibile per più utenti lavorare contemporaneamente su un sistema informatico. Ogni utente deve avere almeno un programma in memoria per questo. Al fine di ridurre le restrizioni sul numero di utenti che lavorano, è stata introdotta l'idea del ritrovamento completo programma eseguibile nella RAM. La parte principale del programma è su disco e il frammento che deve essere eseguito al momento può essere caricato nella RAM e quello non necessario può essere scaricato nuovamente su disco. Questo viene implementato utilizzando il meccanismo della memoria virtuale. Il vantaggio principale di un tale meccanismo è la creazione dell'illusione di una memoria ad accesso casuale illimitata del computer.

V sistemi di multiproprietà l'utente è stato in grado di eseguire il debug in modo efficiente del programma in modalità interattiva e di scrivere informazioni su disco senza utilizzare schede perforate, ma direttamente dalla tastiera. L'emergere di file in linea ha portato alla necessità di sviluppare file system avanzati.

Parallelamente all'evoluzione interna dei sistemi informatici, ha avuto luogo anche la loro evoluzione esterna. Fino all'inizio di questo periodo, i sistemi informatici erano, di regola, incompatibili. Ognuno aveva il suo sistema operativo, il proprio sistema di comando, ecc. Di conseguenza, un programma che funzionava correttamente su un tipo di macchina doveva essere completamente riscritto e rieseguito il debug per essere eseguito su un tipo diverso di macchina. All'inizio del terzo periodo, l'idea di creare famiglie di macchine software compatibili operanti sotto il controllo delle stesse sistema operativo... La prima famiglia di software computer compatibili costruita su circuiti integrati, divenne la serie di macchine IBM / 360. Sviluppata nei primi anni '60, questa famiglia ha notevolmente superato le macchine di seconda generazione in termini di prezzo/prestazioni. Questa è stata seguita da una linea di computer PDP incompatibile con la linea IBM, e il PDP-11 è diventato il miglior modello al suo interno.

La forza di "una famiglia" era anche la sua debolezza. Le ampie possibilità di questo concetto (la presenza di tutti i modelli: dai mini-computer alle macchine giganti; abbondanza di varie periferiche; diversi ambienti; diversi utenti) hanno dato origine a un complesso e farraginoso sistema operativo... Milioni di righe di Assembler, scritte da migliaia di programmatori, contenevano molti errori, che causavano un flusso continuo di pubblicazioni su di loro e tentativi di risolverli. Solo in sistema operativo OS/360 conteneva oltre 1000 bug noti. Ancora l'idea di standardizzazione sistemi operativiè stato ampiamente introdotto nella mente degli utenti ed è stato successivamente sviluppato attivamente.

Il quarto periodo (dal 1980 ad oggi). Computer personale. Sistemi classici, in rete e distribuiti

Il prossimo periodo nell'evoluzione dei sistemi informatici è associato all'emergere di grandi circuiti integrati(BIS). In questi anni si è registrato un forte aumento del grado di integrazione e una diminuzione del costo dei microcircuiti. Il computer, che non differisce nell'architettura dal PDP-11, è diventato disponibile per un individuo, e non per un dipartimento di un'impresa o di un'università, in termini di prezzo e facilità d'uso. L'era dei personal computer è arrivata. Inizialmente, i personal computer erano destinati all'utilizzo da parte di un utente in modalità a programma singolo, il che comportava il degrado dell'architettura di questi computer e la loro sistemi operativi(in particolare, è scomparsa la necessità di proteggere i file e la memoria, le attività di pianificazione, ecc.).

I computer iniziarono ad essere utilizzati non solo da specialisti, il che richiedeva lo sviluppo di software "amichevoli".

Tuttavia, la crescente complessità e varietà dei compiti risolti sui personal computer, la necessità di migliorare l'affidabilità del loro lavoro ha portato al rilancio di quasi tutte le caratteristiche caratteristiche dell'architettura dei grandi sistemi informatici.

A metà degli anni '80, le reti di computer iniziarono a svilupparsi rapidamente, comprese quelle personali, funzionanti Rete o sistemi operativi distribuiti.

V sistemi operativi di rete gli utenti possono accedere alle risorse di un altro computer di rete, solo loro dovrebbero essere consapevoli della loro presenza ed essere in grado di farlo. Ogni macchina sulla rete esegue il proprio locale sistema operativo diverso da sistema operativo un computer autonomo con fondi aggiuntivi ( supporto software per dispositivi di interfaccia di rete e accesso a risorse remote), ma queste aggiunte non cambiano la struttura sistema operativo.

Sistema distribuito al contrario, sembra un normale sistema autonomo. L'utente non sa e non deve sapere dove sono archiviati i suoi file - su una macchina locale o remota - e dove vengono eseguiti i suoi programmi. Potrebbe non sapere affatto se il suo computer è connesso alla rete. Struttura interna sistema operativo distribuito presenta differenze significative rispetto ai sistemi autonomi.

Ulteriore autonomia OS chiameremo classico sistemi operativi.

Dopo aver passato in rassegna le fasi di sviluppo dei sistemi informatici, possiamo distinguere sei funzioni principali che venivano svolte dai classici OS nel processo di evoluzione:

    Pianificazione delle attività e utilizzo processore.

    Fornire programmi con mezzi di comunicazione e sincronizzazione.

    Gestione della memoria.

    Gestione del file system.

    Controllo I/O.

    Sicurezza

Ciascuna delle funzioni di cui sopra è solitamente implementata come un sottosistema, che è componente strutturale OS... In ciascuna sistema operativo queste funzioni, ovviamente, sono state implementate a modo loro, in misura diversa. Non sono stati originariamente concepiti come parti costitutive. sistemi operativi, ma è apparso nel processo di sviluppo, poiché i sistemi informatici sono diventati più convenienti, efficienti e sicuri. L'evoluzione dei sistemi informatici umani ha seguito questa strada, ma nessuno ha ancora dimostrato che questa sia l'unica via possibile per il loro sviluppo. OS esistono perché su questo momento la loro esistenza è un modo intelligente di utilizzare i sistemi informatici. Considerazione principi generali e algoritmi per l'implementazione delle loro funzioni e costituisce il contenuto della maggior parte del nostro corso, in cui verranno descritti in sequenza i sottosistemi elencati.

Concetti di base, concetti del sistema operativo

Nel processo di evoluzione sono emersi diversi concetti importanti che sono diventati parte integrante della teoria e della pratica. OS... I concetti discussi in questa sezione verranno incontrati e spiegati durante il corso. Una breve descrizione è data qui.

Chiamate di sistema

A qualsiasi sistema operativoè supportato un meccanismo che consente ai programmi utente di accedere ai servizi del kernel OS... V sistemi operativi il più famoso computer sovietico BESM-6, i corrispondenti mezzi di "comunicazione" con il kernel erano chiamati extracodici, in sistemi operativi IBM le chiamava macro di sistema, ecc. V OS Unix chiama tali strumenti chiamate di sistema.

Chiamate di sistema (chiamate di sistema) è l'interfaccia tra sistema operativo e un programma utente. Creano, eliminano e utilizzano vari oggetti, i principali dei quali sono processi e file. Il programma utente richiede il servizio da sistema operativo implementando chiamata di sistema... Esistono librerie di procedure che caricano i registri della macchina con determinati parametri ed eseguono interrompereprocessore, dopo di che il controllo viene trasferito al gestore di questo chiamata incluso nel kernel sistema operativo... Lo scopo di tali librerie è quello di rendere chiamata di sistema simile al solito chiamata subroutine.

La differenza principale è che per chiamata di sistema l'attività va in modalità privilegiata o kernel. Così chiamate di sistema a volte chiamato anche software interruzioni, a differenza dell'hardware interrompe, a cui più spesso si fa riferimento semplicemente interruzioni.

Il codice del kernel viene eseguito in questa modalità. sistema operativo e viene eseguito nello spazio degli indirizzi e nel contesto dell'attività che lo ha chiamato. Quindi il kernel sistema operativo ha pieno accesso alla memoria del programma utente, e quando chiamata di sistemaè sufficiente trasferire con parametri gli indirizzi di una o più aree di memoria chiamata e indirizzi di una o più aree di memoria per i risultati chiamata.

Più chiamata di sistema dei sistemi operativi eseguita dal team del software interruzioni(INT). Software interrompereÈ un evento sincrono che può essere ripetuto durante l'esecuzione dello stesso codice di programma.

interrompe

Interrompere (hardware interrupt) è un evento generato da un esterno (rispetto a processore) dispositivo. Attraverso l'hardware interrompe l'apparecchiatura informa la centrale processore indica che si è verificato un evento che richiede una risposta immediata (ad esempio, l'utente ha premuto un tasto), oppure segnala il completamento di un'operazione di I/O asincrona (ad esempio, la lettura dei dati dal disco alla memoria principale è terminata). Tipo importante hardware interrompeinterruzioni timer che vengono generati periodicamente ad un intervallo di tempo fisso. interrompe timer utilizzato sistema operativo quando si pianificano i processi. Ogni tipo di hardware interrompe Esso ha proprio numero, identificando in modo univoco la fonte interruzioni... Hardware interrompere- questo è un evento asincrono, cioè si verifica indipendentemente dal codice che viene eseguito processore Attualmente. Hardware di elaborazione interruzioni non deve considerare quale processo è in corso.

Situazioni eccezionali

Situazione eccezionale (eccezione) - un evento che si verifica a seguito di un tentativo di esecuzione programma di squadra, che per qualche motivo non può essere completato. Esempi di tali comandi includono il tentativo di accedere a una risorsa senza privilegi sufficienti o l'accesso a una pagina di memoria mancante. Situazioni eccezionali Piace chiamate di sistema sono eventi sincroni che si verificano nel contesto dell'attività corrente. Situazioni eccezionali può essere diviso in riparabile e irreparabile. Recuperabili includono tali situazioni eccezionali, come la mancanza delle informazioni necessarie nella RAM. Dopo aver eliminato la causa, correggibile situazione eccezionale il programma può continuare a funzionare. Evento nel corso del lavoro sistema operativo correggibile situazioni eccezionali considerato normale. Incorreggibile situazioni eccezionali il più delle volte si verificano a causa di errori nei programmi (ad esempio, divisione per zero). Di solito in questi casi sistema operativo reagisce terminando il programma che ha chiamato situazione eccezionale.

I file sono progettati per memorizzare informazioni su media esterni, cioè si accetta che le informazioni registrate, ad esempio, su un disco, debbano essere all'interno di un file. Di solito, un file è inteso come una parte denominata di uno spazio su un supporto di memorizzazione.

Lo scopo principale del file system è nascondere le funzionalità di I/O e fornire al programmatore un semplice modello astratto di file indipendenti dal dispositivo. C'è anche un'ampia categoria per leggere, creare, eliminare, scrivere, aprire e chiudere file. chiamate di sistema(creare, eliminare, aprire, chiudere, leggere, ecc.). Gli utenti hanno familiarità con i concetti relativi all'organizzazione del file system come directory, directory corrente, directory principale, percorso. Per manipolare questi oggetti in sistema operativo ci sono chiamate di sistema... File system OS descritto nelle lezioni 11-12.

Processi, thread

Concetto di processo in OS uno dei più fondamentali. I processi sono discussi in dettaglio nelle lezioni 2-7. Descrive anche i thread o processi leggeri.

Caratteristiche dell'architettura del sistema operativo

Finora abbiamo parlato di guardare OS dall'esterno, su quello che stanno facendo OS... Il nostro ulteriore corso sarà dedicato a come lo fanno. Ma non abbiamo ancora detto nulla su cosa siano dall'interno, quali approcci esistono alla loro costruzione.

Nucleo monolitico

Infatti, sistema operativoÈ un programma ordinario, quindi sarebbe logico organizzarlo allo stesso modo della maggior parte dei programmi, cioè essere composto da procedure e funzioni. In questo caso, i componenti sistema operativo non sono moduli indipendenti, ma parti costitutive uno grande programma... Una tale struttura sistema operativo chiamato nucleo monolitico(nucleo monolitico). Nucleo monoliticoè un insieme di procedure, ognuna delle quali può chiamare ciascuna. Tutte le procedure funzionano in modalità privilegiata. In questo modo, nucleo monolitico - questo è un tale schema sistema operativo, in cui tutti i suoi componenti sono parti costitutive di un programma, usa strutture generali dati e interagiscono tra loro tramite chiamate dirette di procedura. Per monolitico sistema operativo il kernel è lo stesso dell'intero sistema.

In molti sistemi operativi Con nucleo monolitico l'assemblaggio del kernel, cioè la sua compilazione, viene effettuato separatamente per ogni computer su cui è installato sistema operativo... In questo caso, puoi selezionare un elenco di protocolli hardware e software, il cui supporto sarà incluso nel kernel. Poiché il kernel è un singolo programma, la ricompilazione è l'unico modo aggiungere nuovi componenti o escludere quelli non utilizzati. Va notato che la presenza di componenti superflui nel kernel è altamente indesiderabile, poiché il kernel si trova sempre completamente nella RAM. Inoltre, l'eliminazione dei componenti non necessari migliora l'affidabilità. sistema operativo generalmente.

Nucleo monoliticomodo più antico organizzazione sistemi operativi... Un esempio di sistemi con nucleo monoliticoè la maggior parte dei sistemi Unix.

Anche nei sistemi monolitici si può distinguere qualche struttura. Come in un blocco di cemento, si possono distinguere inclusioni di ghiaia, e in nucleo monolitico intervallati da procedure di servizio corrispondenti a chiamate di sistema... Le procedure di servizio vengono eseguite in modalità privilegiata, mentre i programmi utente vengono eseguiti in modalità non privilegiata. Per passare da un livello di privilegio a un altro, a volte è possibile utilizzare un programma di servizio principale per determinare quale chiamata di sistemaè stato fatto, la correttezza dei dati di input per questo chiamata e trasferire il controllo alla relativa procedura di servizio con il passaggio alla modalità di funzionamento privilegiata. A volte si distingue anche un insieme di utilità software che aiutano a eseguire le procedure di servizio.

Sistemi a strati

Proseguendo nella strutturazione, è possibile suddividere l'intero sistema informatico in un numero di livelli più piccoli con connessioni ben definite tra loro, in modo che gli oggetti di livello N possano chiamare solo oggetti di livello N-1. Il livello più basso in tali sistemi è solitamente l'hardware e il livello più alto è l'interfaccia utente. Più basso è il livello, maggiori sono i comandi e le azioni privilegiati che il modulo a questo livello può eseguire. Per la prima volta questo approccio è stato applicato durante la creazione del sistema THE (Technishe Hogeschool Eindhoven) Dijkstra e dei suoi studenti nel 1968. Questo sistema aveva i seguenti livelli:

Riso. 1.2. Sistema a strati THE

I sistemi di sbuffo sono ben implementati. Quando si utilizzano le operazioni del livello inferiore, non è necessario sapere come vengono implementate, è sufficiente capire cosa fanno. I sistemi a sbuffo sono ben testati. Il debug inizia dal livello inferiore e viene eseguito a livelli. Quando si verifica un errore, possiamo essere sicuri che si trovi nel livello testato. I sistemi a soffio possono essere facilmente modificati. Se necessario, puoi sostituire solo uno strato senza toccare il resto. Ma i sistemi a strati sono difficili da progettare: è difficile determinare correttamente l'ordine degli strati e cosa appartiene a quale strato. I sistemi a soffio sono meno efficienti dei sistemi monolitici. Quindi, ad esempio, per eseguire operazioni di I/O, il programma utente dovrà attraversare in sequenza tutti i livelli dall'alto verso il basso.

Macchine virtuali

All'inizio della lezione, abbiamo parlato di guardare sistema operativo come va? macchina virtuale quando l'utente non ha bisogno di conoscere i dettagli della struttura interna del computer. Funziona sui file, non testine magnetiche e motore; funziona con un'enorme RAM reale virtuale, non limitata; non gli importa molto se è l'unico utente della macchina o meno. Consideriamo un approccio leggermente diverso. Permettere sistema operativo attrezzi macchina virtuale per ogni utente, ma non semplificandogli la vita, ma, al contrario, complicandola. ogni tale macchina virtuale appare all'utente come bare metal - una copia di tutto l'hardware nel sistema informatico, incluso processore, comandi privilegiati e non, dispositivi I/O, interruzioni eccetera. Ed è rimasto solo con questo ferro. Quando si cerca di fare riferimento a tale hardware virtuale a livello di comandi privilegiati si verifica effettivamente chiamata di sistema vero sistema operativo, che esegue tutte le azioni necessarie. Questo approccio consente a ciascun utente di caricare il proprio sistema operativo sul macchina virtuale e fa quello che il tuo cuore desidera con esso.

Riso. 1.3. Variante macchina virtuale

Il primo sistema reale di questo tipo era il CP/CMS, o VM/370 come viene ora chiamato, per la famiglia di macchine IBM/370.

Lo svantaggio di tale sistemi operativiè una diminuzione dell'efficienza macchine virtuali rispetto a un vero computer e tendono ad essere molto ingombranti. Il vantaggio risiede nell'utilizzo su un sistema informatico di programmi scritti per differenti sistemi operativi.

Architettura del microkernel

L'attuale trend di sviluppo sistemi operativi consiste nel trasferire una parte significativa del codice di sistema al livello utente e nel contempo minimizzare il kernel. Si tratta di un approccio alla creazione di un kernel chiamato architettura del microkernel (architettura microkernel) sistema operativo quando la maggior parte dei suoi componenti sono programmi indipendenti. In questo caso, l'interazione tra di loro fornisce modulo speciale un kernel chiamato microkernel. Il microkernel opera in modalità privilegiata e prevede l'interazione tra i programmi, la programmazione dell'utilizzo processore, lavorazione primaria interrompe, operazioni di I/O e gestione della memoria di base.

Riso. 1.4. Architettura del microkernel del sistema operativo

Il resto dei componenti del sistema interagiscono tra loro trasmettendo messaggi attraverso il microkernel.

Vantaggio principale architettura del microkernel- alto grado di modularità del kernel sistema operativo... Questo rende molto più facile aggiungere nuovi componenti. Nel micronucleo sistema operativoè possibile, senza interrompere il suo funzionamento, caricare e scaricare nuovi driver, file system, ecc. Il processo di debug dei componenti del kernel è notevolmente semplificato, poiché una nuova versione i driver possono essere caricati senza riavviare l'intero sistema operativo... Componenti del kernel sistema operativo non differiscono sostanzialmente dai programmi utente, quindi puoi utilizzare i soliti strumenti per eseguirne il debug. Architettura del microkernel migliora l'affidabilità del sistema perché un bug a livello di programma non privilegiato è meno pericoloso di un arresto anomalo a livello di modalità kernel.

Allo stesso tempo architettura del sistema operativo microkernel introduce un sovraccarico di messaggistica aggiuntivo che influisce in modo significativo sulle prestazioni. Al micronucleo sistema operativo la velocità non era inferiore sistemi operativi sulla base nucleo monolitico, è necessario progettare con molta attenzione la partizione del sistema in componenti, cercando di ridurre al minimo l'interazione tra di loro. Quindi, la principale difficoltà nella creazione di microkernel sistemi operativi- la necessità di un design molto accurato.

Sistemi misti

Tutti gli approcci considerati alla costruzione sistemi operativi hanno i loro vantaggi e svantaggi. Nella maggior parte dei casi, moderno OS utilizzare varie combinazioni di questi approcci. Quindi, per esempio, il kernel sistema operativo Linux è un sistema monolitico con elementi architettura del microkernel... Quando si compila un kernel, è possibile abilitare il caricamento e lo scaricamento dinamico di moltissimi componenti del kernel, i cosiddetti moduli. Quando un modulo viene caricato, il suo codice viene caricato a livello di sistema e collegato al resto del kernel. Qualsiasi funzione esportata dal core può essere utilizzata all'interno del modulo.

Un altro esempio di approccio misto è la capacità di correre sistema operativo Con nucleo monolitico sotto il controllo di un microkernel. Ecco come funzionano 4.4BSD e MkLinux, che sono basati sul microkernel Mach. Il microkernel fornisce la gestione della memoria virtuale e driver di basso livello. Tutte le altre funzioni, compresa l'interazione con i programmi applicativi, vengono eseguite nucleo monolitico... Questo approccio è stato formato come risultato di tentativi di sfruttare architettura del microkernel mantenendo il codice il più corretto possibile nucleo monolitico.

Gli elementi più vicini architettura del microkernel ed elementi nucleo monolitico intrecciati nel kernel di Windows NT. Sebbene Windows NT sia spesso chiamato microkernel sistema operativo, questo non è del tutto vero. Il microkernel NT è troppo grande (più di 1 MB) per contenere il prefisso "micro". I componenti del kernel di Windows NT risiedono nella memoria preventiva e comunicano tra loro passando messaggi, come dovrebbe essere nei microkernel. sistemi operativi... Allo stesso tempo, tutti i componenti del kernel funzionano nello stesso spazio di indirizzi e utilizzano attivamente strutture di dati comuni, il che è tipico sistemi operativi Con nucleo monolitico... Secondo gli esperti Microsoft, il motivo è semplice: un design puramente microkernel è commercialmente non redditizio perché inefficace.

Pertanto, Windows NT può essere giustamente definito un ibrido sistema operativo.

Classificazione del sistema operativo

Esistono diversi schemi di classificazione sistemi operativi... Di seguito una classificazione secondo alcuni criteri dal punto di vista dell'utente.

Implementazione del multitasking

Per il numero di attività eseguite contemporaneamente OS possono essere suddivisi in due classi:

    multitasking(Unix, OS/2, Windows);

    single-tasking (es. MS-DOS).

Sistema operativo multitasking risolvendo i problemi di allocazione delle risorse e concorrenza, implementa pienamente la modalità multi-programma in conformità con i requisiti della sezione "Concetti di base, concetti OS".

Il multitasking, che incarna l'idea della condivisione del tempo, è chiamato preventivo. Ad ogni programma è assegnato un quantum processore tempo trascorso il quale il controllo viene trasferito ad un altro programma. Si dice che il primo programma sia stato soppiantato. In modalità spostamento, funzionano programmi personalizzati più commerciale OS.

In qualche OS(Windows 3.11, per esempio) un programma utente può monopolizzare processore, ovvero funzionano in modalità non preventiva. Di norma, nella maggior parte dei sistemi, il codice stesso non dovrebbe essere sostituito. OS... Anche i programmi responsabili, in particolare le attività in tempo reale, non vengono soppiantati. Per maggiori dettagli, vedere la lezione sulla pianificazione del lavoro. processore.

Gli esempi forniti possono essere utilizzati per giudicare la classificazione approssimativa. Quindi, in OS MS-DOS può organizzare l'avvio di un'attività figlio e la presenza di due o più attività in memoria contemporaneamente. Tuttavia, questo OS tradizionalmente considerato un solo compito, principalmente a causa della mancanza di meccanismi di difesa e capacità di comunicazione.

Supporto multigiocatore

Per numero di utenti simultanei OS può essere suddiviso in:

    singolo utente (MS-DOS, Windows 3.x);

    multiplayer(Windows NT, Unix).

La differenza più significativa tra questi OSè la disponibilità di sistemi multiutente meccanismi di protezione dei dati personali di ciascun utente.

Multielaborazione

Fino a poco tempo fa, i sistemi informatici avevano una centrale processore... In conseguenza delle richieste di aumento della produttività, sistemi multiprocessore composto da due o più processori esecuzione di comandi di uso generale in parallelo. Il supporto multiprocessing è una caratteristica importante OS e porta alla complicazione di tutti gli algoritmi di gestione delle risorse. Il multiprocessing è implementato in tale OS come Linux, Solaris, Windows NT e molti altri.

Sistema operativo multiprocessore diviso in simmetrico e asimmetrico. in simmetrico OS su ciascun processore le stesse funzioni principali e l'attività può essere eseguita su qualsiasi processore, ovvero l'elaborazione è completamente decentralizzata. Inoltre, ciascuno di processori tutta la memoria è disponibile.

in asimmetrico Processori del sistema operativo disuguale. Di solito c'è un principale processore(padrone) e subordinati (schiavo), il cui carico e la natura del lavoro sono determinati dal padrone processore.

Sistemi in tempo reale

Nella categoria sistema operativo multitasking, così come sistemi batch e sistemi di condivisione del tempo sono inclusi anche sistemi in tempo reale non menzionato fino ad ora.

Sono usati per controllare vari strutture tecniche o processi tecnologici... Tali sistemi sono caratterizzati da un'estrema tempo valido reazioni ad un evento esterno durante il quale deve essere eseguito il programma che controlla l'oggetto. Il sistema deve elaborare i dati in entrata più velocemente di quanto possano arrivare e da più fonti contemporaneamente.

Restrizioni così rigide influenzano l'architettura sistemi in tempo reale ad esempio, possono mancare di memoria virtuale, il cui supporto fornisce ritardi imprevedibili nell'esecuzione del programma. (Vedi anche gli argomenti relativi alla pianificazione dei processi e all'implementazione della memoria virtuale.)

La classificazione data OS non è completo. Più in dettaglio, le caratteristiche dell'uso del moderno OS considerato in [ Olifero, 2001].

Conclusione

Abbiamo considerato diversi punti di vista su ciò che è sistema operativo; ha studiato la storia dello sviluppo sistemi operativi; scoperto quali funzioni vengono solitamente eseguite OS; finalmente, abbiamo capito quali approcci alla costruzione esistono sistemi operativi... La prossima lezione sarà dedicata a chiarire il concetto di "processo" e le questioni di pianificazione del processo.

Allegato 1.

Alcune informazioni sull'architettura del computer

I principali componenti hardware di un computer sono: memoria principale, centrale processore e periferiche. Per scambiare dati tra loro, questi componenti sono collegati da un gruppo di fili chiamato backbone (vedi. Figura 1.5).

Riso. 1.5. Alcuni componenti del computer

La memoria principale è utilizzata per memorizzare programmi e dati in forma binaria ed è organizzata come un array ordinato di celle, ognuna delle quali ha un indirizzo digitale univoco. In genere, la dimensione della cella è un byte. Operazioni tipiche sulla memoria principale: lettura e scrittura del contenuto di una cella con un indirizzo specifico.

Varie operazioni con i dati vengono eseguite da una parte isolata del computer, chiamata centrale processore(PROCESSORE). La CPU dispone anche di celle per memorizzare informazioni chiamate registri. Si dividono in registri generali e registri specializzati. Nei computer moderni, la dimensione di un registro è solitamente di 4-8 byte. I registri di uso generale sono utilizzati per l'archiviazione temporanea dei dati e dei risultati delle operazioni. Per elaborare le informazioni, di solito viene organizzato il trasferimento dei dati dalle celle di memoria ai registri di uso generale, l'operazione viene eseguita dalla centrale processore e trasferendo i risultati dell'operazione nella memoria principale.

Registri specializzati sono utilizzati per controllare il lavoro processore... I più importanti sono: il program counter, il registro dei comandi e il registro contenente le informazioni sullo stato del programma.

I programmi sono memorizzati come una sequenza di istruzioni macchina che devono essere eseguite da una centrale processore... Ciascun comando è costituito da un campo operazione e da campi operando, ovvero i dati su cui viene eseguita questa operazione. L'intero set di istruzioni macchina è chiamato linguaggio macchina.

Il programma viene eseguito come segue. L'istruzione macchina puntata dal program counter viene letta dalla memoria e copiata nel registro istruzioni. Qui viene decodificato e quindi eseguito. Dopo l'esecuzione del comando, il contatore del programma punta al comando successivo. Queste azioni, chiamate ciclo macchina, vengono quindi ripetute.

Interazione con dispositivi periferici

I dispositivi periferici sono progettati per l'input e l'output di informazioni. Ogni dispositivo di solito contiene un computer specializzato chiamato controller o adattatore. Quando il controller è inserito nel connettore su scheda madre, si collega al bus e riceve un numero univoco (indirizzo). Il controllore quindi monitora i segnali sul bus e risponde ai segnali ad esso indirizzati.

Qualsiasi operazione di I/O prevede il dialogo tra la CPU e il controller del dispositivo. quando processore esiste un comando associato all'I/O, che fa parte di un programma, lo esegue inviando segnali al controller del dispositivo. Questo è il cosiddetto I/O programmabile.

A sua volta, qualsiasi modifica con dispositivi esterni comporterà la trasmissione del segnale dal dispositivo alla CPU. Dal punto di vista della CPU, questo è un evento asincrono e richiede la sua risposta. Per rilevare un tale evento, tra i cicli macchina processore interroga un apposito registro contenente informazioni sul tipo di dispositivo che ha generato il segnale. Se è presente un segnale, la CPU esegue un programma specifico del dispositivo il cui compito è quello di rispondere a questo evento in modo appropriato (ad esempio, per inserire un carattere immesso dalla tastiera in un buffer speciale). Tale programma è chiamato programma di elaborazione. interruzioni, e l'evento stesso interruzione perché interrompe il lavoro pianificato processore... Dopo aver terminato l'elaborazione processore di interruzione torna all'esecuzione del programma. Queste azioni del computer sono chiamate I/O using interrompe.

Nei computer moderni esiste anche la possibilità di interazione diretta tra il controller e la memoria principale, bypassando la CPU, il cosiddetto meccanismo di accesso diretto alla memoria.

1) La vera evoluzione dei sistemi operativi non è avvenuta in modo così fluido e sistematico come presentato in questa recensione. Ad esempio, il primo sistema di condivisione del tempo Joss è stato implementato su una macchina tubiera Joniac senza alcun supporto hardware.

Lezione numero 1.

SISTEMI OPERATIVI E AMBIENTI.

Sotto sistema operativo di solito comprendono un complesso di programmi di controllo ed elaborazione, che, da un lato, funge da interfaccia tra l'hardware del computer e l'utente, e dall'altro lo scopo per un uso più efficiente delle risorse del sistema informatico e l'organizzazione di un'elaborazione affidabile .

Qualsiasi componente del software applicativo viene eseguito necessariamente su sistemi operativi. Il diagramma mostra una procedura software generalizzata.

Si può notare che nessuno dei componenti software, ad eccezione del sistema operativo stesso, non ha accesso diretto all'hardware del computer. Anche l'utente interagisce con i propri programmi attraverso l'interfaccia. Qualsiasi loro comando, prima di entrare nei programmi applicativi, passa attraverso i sistemi operativi, le principali funzioni che vengono eseguite dal sistema operativo sono:

1) accettazione da parte dell'utente di compiti o comandi formulati nella lingua appropriata e loro elaborazione;

2) ricezione ed esecuzione di un programma di richiesta di avvio/sospensione di altri programmi;

4) inizializzazione dei programmi (trasferimento del controllo ad esso), a seguito della quale il processore utilizza il programma;

5) individuazione dei programmi;

6) garantire il funzionamento del sistema di gestione dei file del database, che può aumentare notevolmente l'efficienza del software;

7) fornire una modalità di multiprogrammazione, ovvero esecuzione di due o più programmi su un processore, creando l'apparenza della loro esecuzione simultanea;

8) fornire la funzione di organizzare e gestire tutte le operazioni di input e output;

9) soddisfare in tempo reale limiti di tempo ristretti;

10) allocazione della memoria:

a) organizzazione della memoria virtuale;

b) nei sistemi più moderni.

11) pianificazione e dispacciamento in conformità all'incarico;

12) l'organizzazione della messaggistica m-ma e lo scambio di dati tra programmi in esecuzione;

13) protezione di un programma dall'influenza di altri programmi, garantendo la conservazione dei dati;

14) erogazione dei servizi in caso di guasto parziale del sistema;

15) garantire il funzionamento di un sistema di programmi con l'aiuto del quale gli utenti preparano i loro programmi.

Di norma, tutti i moderni sistemi operativi dispongono di un sistema di gestione della memoria. L'organizzazione SPC assegnata di un accesso più conveniente a queste organizzazioni come file. Numerosi sistemi operativi consentono di lavorare con più file system contemporaneamente. In questo caso si parla di file system montato, ad es. è possibile installare memoria aggiuntiva.

Esistono i sistemi operativi più semplici che possono funzionare senza file system o solo su un lato dei file system. Qualsiasi sistema di gestione dei file è progettato per funzionare con un sistema operativo specifico e un file system specifico.

Ad esempio, il famoso file system GRASSO.

Allocazione

Ha molte implementazioni come un sistema di gestione dei file, ad esempio GRASSO 16 sotto il sistema SM- DOS o Super GRASSO per OS/2 o GRASSO per finestre.

Per lavorare con i file organizzati secondo alcuni file system, è necessario organizzare un sistema di gestione dei file corrispondente per ogni sistema operativo. Funzionerà solo sul sistema operativo per il quale è stato progettato. Per facilità d'uso, è possibile utilizzare shell di interfaccia aggiuntive con il sistema operativo. Il loro scopo principale è espandere le capacità del sistema operativo o modificare le funzionalità integrate nel sistema. Un classico esempio di shell frontend è:

    X finestre nei sistemi familiari Unix;

    KDE - Ambiente desktop K;

    guscio di PM;

    Desktop degli oggetti.

Ci sono varie opzioni di interfaccia per la famiglia del sistema operativo Finestre, che sostituiscono esploratore, in file sistema. ini.

Nel sistema operativo, solo la shell dell'interfaccia è sostituibile. L'ambiente operativo è definito dalle interfacce di programmazione.

Applicazione

Interfaccia

API interfaccia di programmazione dell'applicazione, include controllo di processo, memoria e I/O.

Un certo numero di sistemi operativi può eseguire una serie di programmi progettati per essere eseguiti su altri sistemi operativi. Un ambiente adatto è organizzato all'interno di una data macchina. Allo stesso modo, in Linuxè possibile creare condizioni per l'esecuzione di programmi scritti per Windows 98.

Sotto servizi di pubblica utilità comprendere speciali sistemi di programmazione con cui è possibile eseguire la manutenzione del sistema operativo, eseguire l'elaborazione dei dati, ottimizzare i dati sui supporti ed eseguire lavori di manutenzione sul sistema operativo.

Le utilità includono un programma per suddividere un'unità in dischi magnetici in partizioni e un programma di formattazione, un programma per trasferire i file di sistema di base dal sistema operativo stesso. Le utilità possono essere eseguite solo sul sistema operativo appropriato.

Lezione numero 2.

CONCETTO DI AMBIENTE OPERATIVO.

Il sistema operativo svolge le funzioni di controllo dei processi informatici nel sistema informatico, distribuisce le risorse del sistema informatico tra vari processi informatici e forma un ambiente software in cui vengono eseguiti i programmi applicativi dell'utente. Questo ambiente si chiama sala operatoria.

Qualsiasi programma si occupa di alcuni dati iniziali, che elabora e genera un output, ad es. risultati di calcolo. Nella stragrande maggioranza dei casi, i dati di origine cadono nella RAM di dispositivi esterni (periferici).

I risultati del calcolo vengono inviati anche a dispositivi esterni. La programmazione delle operazioni di I/O è il compito più difficile. Ecco perché lo sviluppo del sistema operativo ha seguito la strada dell'evidenziazione delle operazioni più comuni e della creazione di moduli corrispondenti per esse, che possono essere ulteriormente utilizzati nei programmi di nuova creazione. // Alla fine, si è verificata una situazione in cui, durante la creazione di programmi macchina binari ... //

I programmatori potrebbero non conoscere affatto molti dettagli sulla gestione delle risorse del sistema informatico, ma devono fare riferimento ad alcuni sottosistemi software con output appropriati e ottenere le funzioni di servizio necessarie. Questo sottosistema software è il sistema operativo e l'insieme delle sue funzioni di servizio ha portato alla chiamata ad esso e costituisce il concetto di base, che viene chiamato ambiente operativo, cioè. il termine ambiente operativo si riferisce ai programmi di interfaccia utente necessari per accedere al sistema operativo al fine di ottenere uno specifico servizio. L'esistenza parallela dei termini "sistema operativo" e "ambiente operativo" è dovuta al fatto che un sistema operativo può supportare più ambienti operativi. Ad esempio, il sistema operativo OS/2 Ordito può eseguire i seguenti programmi:

    il cosiddetto nativo ( nativo) programmi realizzati tenendo conto dell'interfaccia operativa a 32 bit;

    Programmi a 16 bit progettati per OS/2 prima generazione;

    Programmi a 16 bit progettati per SM- DOS PS e DOS.

    Programmi a 16 bit per l'ambiente operativo finestre.

    Il guscio operativo stesso finestre 3. X e già in esso, programmi creati per esso.

SCOPO E FUNZIONI DEL SISTEMA OPERATIVO.

Sistema operativo -è un programma che controlla il funzionamento di un programma utente e dei sistemi applicativi e funge da interfaccia tra le applicazioni e l'hardware del computer. Il suo scopo può essere suddiviso in tre componenti principali:

    Convenienza: il sistema operativo rende l'esecuzione del computer semplice e conveniente;

    efficienza: il sistema operativo consente un uso efficiente delle risorse del sistema informatico;

    opportunità di sviluppo: il sistema operativo deve consentire lo sviluppo di testare nuove applicazioni e funzioni di sistema senza interrompere il normale funzionamento del sistema informatico.

SISTEMA OPERATIVO COME INTERFACCIA TRA UTENTE E COMPUTER.

L'utente, di regola, non è interessato ai dettagli del dispositivo hardware del computer, lo vede come un insieme di applicazioni. L'applicazione può essere scritta in uno qualsiasi dei linguaggi di programmazione. Per semplificare questo compito, c'è un insieme programmi di sistema, alcune delle quali sono chiamate utilità, con il loro aiuto vengono spesso implementate l'esecuzione di funzioni che aiutano nella creazione di programmi personalizzati per lavorare con i file e controllare i dispositivi di input / output. Il programmatore utilizza questi strumenti per sviluppare questi programmi e le applicazioni chiamano le utilità in fase di esecuzione per eseguire funzioni specifiche. I più importanti dei programmi di sistema sono i sistemi operativi, che nascondono i dettagli dell'hardware dal programmatore e forniscono una comoda interfaccia per l'esecuzione del sistema dell'ambiente operativo. Può includere diverse interfacce:

    costume;

    programma

Ad esempio, il sistema Linux loro. per l'utente come comandi front-end (varie shell): C-Shell, K-Shell, B-Shell, bash-shell.

TIPO DI INTERFACCIA Mezzanotte Comandante.

Quindi interfacce grafiche ( X finestre). Può avere vari gestori di finestre ( KDE Grome).

Per quanto riguarda le interfacce software, il sistema operativo finestre i programmi possono accedere sia al sistema operativo per i servizi e funzioni appropriati, sia al sottosistema grafico. In termini di architettura del processore, il secondo programma progettato per funzionare in Linux utilizza gli stessi comandi e formati di dati di un programma progettato per funzionare nell'ambiente finestre. Tuttavia, nel primo caso, c'è un riferimento all'ambiente operativo, nel secondo - a un altro. Pertanto, l'ambiente operativo è il software di sistema in cui possono essere eseguiti programmi creati secondo le regole di funzionamento di questo ambiente.

I sistemi operativi tipici forniscono i seguenti servizi:

    sviluppo software... Il sistema operativo fornisce al programmatore una varietà di strumenti e servizi, come editor e debugger. Questi servizi, implementati sotto forma di utilità software che supportano i sistemi operativi, sebbene non facciano parte del suo nucleo, tali programmi sono chiamati strumenti di sviluppo di applicazioni;

    esecuzione dei programmi. Per avviare il programma sono necessari alcuni passaggi. È necessario caricare comandi e dati nella memoria principale, inizializzare i dispositivi. Il sistema operativo svolge il lavoro di routine;

    accesso ai dispositivi di input/output... Ciascun dispositivo I/O necessita del proprio set di comandi o segnale monitorato per controllare il funzionamento di ciascun dispositivo I/O. Il sistema operativo fornisce all'utente un'interfaccia coerente che rivela tutti questi dettagli e fornisce al programmatore l'accesso ai dispositivi di I/O utilizzando semplici comandi leggendo e scrivendo;

    controllare l'accesso ai file... Quando si lavora con i file, la gestione del suo lato del sistema operativo ha lo scopo non solo di comprendere la natura dei dispositivi di input / output e la conoscenza delle strutture di dati registrate nei file. I sistemi operativi multiutente forniscono anche meccanismi di sicurezza per l'accesso ai file;

    sistemi di accesso... Il sistema operativo controlla l'accesso al sistema informatico pubblico nel suo insieme, nonché alle singole risorse di sistema. Deve garantire la protezione delle risorse e dei dati dall'uso non autorizzato, nonché risolvere situazioni di conflitto;

    rilevamento e gestione degli errori... Durante il funzionamento del sistema informatico, si verificano vari guasti, inclusi quelli interni e errori esterni che si sono verificati nell'hardware, ad esempio errori di memoria, guasto o guasto dei dispositivi, sono possibili anche errori software: overflow aritmetico, tentativo di accesso a una cella di memoria, il cui accesso viene avviato e l'impossibilità di eseguire una richiesta dell'applicazione. In ciascuno di questi casi, il sistema operativo deve intraprendere un'azione che riduca al minimo l'impatto dell'errore sull'applicazione. La reazione del sistema operativo ad un errore può essere diversa: da un semplice messaggio di errore ad un arresto di emergenza del programma;

    contabilizzazione dell'uso delle risorse... Un buon sistema operativo dovrebbe avere un mezzo per tenere conto dell'uso di varie risorse e visualizzare i parametri del produttore. Queste informazioni sono estremamente importanti per un ulteriore miglioramento e messa a punto del sistema per migliorare le prestazioni.

SISTEMA OPERATIVO COME CONTROLLORE DI RISORSE.

Un computer è un insieme di risorse che supportano l'esecuzione di attività, l'accumulo, l'archiviazione, il movimento e l'elaborazione dei dati e controlla anche il funzionamento di queste e altre funzioni. È il sistema operativo che gestisce le risorse del computer e ne controlla le funzioni di base. Tuttavia, questo controllo ha le seguenti caratteristiche:

    le funzioni del sistema operativo funzionano allo stesso modo di tutti gli altri software, ad es. sono implementati come programmi separati o un insieme di programmi, processi in esecuzione;

    il sistema operativo deve trasferire il controllo ad altri processi e attendere che il processore gli permetta di svolgere nuovamente i propri compiti.

Un sistema operativo è, in sostanza, un insieme di programmi per computer, come qualsiasi altro programma, dà comandi al processore. La differenza fondamentale è lo scopo di questo programma.

Il sistema operativo è // capace di //: come usare gli altri risorse di sistema e come allocare il tempo quando si utilizzano altri programmi, ma per questo il processore deve sospendere il lavoro con esso e passare all'esecuzione di altri programmi.

Pertanto, il sistema operativo cede il controllo al processore in modo che possa svolgere un lavoro utile, quindi riprende il controllo quanto basta per preparare il processore per il lavoro successivo.

Parte del sistema operativo si trova nella RAM (principale, di base). Questa parte include il nucleo ( kernel), che contiene la parte principale delle funzioni utilizzate più di frequente, ci sono anche alcuni altri componenti del sistema operativo che vengono utilizzati in un determinato momento.

Il resto contiene altri programmi e dati utente. Il posizionamento di questi dati nella RAM è gestito congiuntamente dal sistema operativo e dall'hardware del processore utilizzato per gestire la memoria. Il sistema operativo decide quando il programma in esecuzione può rovinare i dispositivi di I/O di cui ha bisogno e controlla l'accesso ai file.

Il processore è anche una risorsa a cui il sistema operativo deve determinare quanto tempo deve dedicare all'esecuzione di un particolare programma utente. Sistemi multiprocessore: occorre prendere una decisione per ogni processo.

OPPORTUNITÀ DI SVILUPPO DEL SISTEMA OPERATIVO.

La maggior parte dei sistemi operativi è in continua evoluzione. Ciò accade per i seguenti motivi:

un ) l'aggiornamento e l'emergere di nuovi tipi di hardware;

B) nuovi servizi... È possibile aggiungere al sistema operativo nuovi strumenti di monitoraggio e valutazione delle prestazioni per mantenere un'elevata efficienza operativa con gli strumenti utente esistenti;

v) correzione... Ogni sistema operativo ha dei bug. Di volta in volta vengono scoperti e corretti. La necessità di modifiche regolari nei sistemi operativi, alcune restrizioni sono imposte al dispositivo. Ovviamente, questi sistemi dovrebbero avere un design modulare, chiaramente definito dall'interazione dei moduli. Per i programmi di grandi dimensioni, è essenziale una documentazione buona e completa.

Convenzioni accettate:

    I/O - ingresso/uscita;

    AO - hardware;

    DB - banca dati;

    RAM - memoria ad accesso casuale;

    OS - sistema operativo;

    ROM - memoria di sola lettura;

    PC - personal computer;

    Software - software;

    - tempo reale;

    SU - sistema di controllo;

    DBMS - sistema di gestione di database;

    UVV - dispositivo di ingresso / uscita;

    FS - sistema di file;

    CPU - processore ( processore).

Classificazione delle vespe

Lo sviluppo dei computer ha portato allo sviluppo del sistema operativo. Ora ci sono oltre 100 sistemi operativi.

È consuetudine dividere il sistema operativo in sette livelli per scopo.

1. Mainframe (mainframe)

Hanno capacità di I/O diverse dai PC. I mainframe in genere contengono migliaia di dischi e terabyte di RAM. Sono utilizzati sotto forma di potenti server web, server per siti commerciali su larga scala e server per transazioni commerciali. I sistemi operativi mainframe sono orientati alla gestione di molti lavori simultanei, la maggior parte dei quali richiede grande quantità Operazioni di I/O. Di solito comportano tre tipi di servizio:

      elaborazione in lotti. Il sistema esegue le attività standard senza la presenza di utenti. In modalità batch, vengono elaborati i reclami delle compagnie assicurative e vengono redatti i report sulle vendite nel negozio;

      elaborazione delle transazioni (operazioni di gruppo: elaborazione e registrazione dei dati). Il sistema di elaborazione delle transazioni gestisce un numero molto elevato di piccole richieste (ad esempio controlla il processo di lavoro in banca, prenotazione di biglietti aerei). Ogni singola richiesta è piccola, ma il sistema deve rispondere a migliaia di richieste al secondo;

      condivisione del tempo. I sistemi di condivisione del tempo consentono a più utenti remoti di eseguire le proprie attività sulla stessa macchina, ad esempio lavorare con un database di grandi dimensioni. Tutte queste funzioni sono strettamente correlate e spesso il sistema operativo mainframe le esegue tutte. Un esempio di sistema operativo per un mainframe è OS/390 (da IBM).

2. Sistema operativo server (di rete)

Funzionano su server, che sono PC, workstation o persino mainframe molto grandi. Servono più utenti contemporaneamente e consentono loro di condividere risorse software e hardware. I server offrono la possibilità di lavorare con stampanti, file e Internet. Gli ISP in genere eseguono più server per supportare più client che accedono contemporaneamente alla rete. I server memorizzano le pagine del sito Web ed elaborano le richieste di input. Tipici sistemi operativi per server: Windows 2000 e Unix. Per questi scopi, il sistema operativo Linux ha iniziato a essere utilizzato.

3. Sistema operativo multiprocessore (cluster)

Il modo più comunemente usato per aumentare la potenza di un computer è combinare le CPU in un unico sistema. A seconda del tipo di connessione della CPU e della divisione del lavoro, tali sistemi sono chiamati computer paralleli, multicomputer o sistemi multiprocessore. Richiedono sistemi operativi speciali, ma in genere questi sistemi operativi sono varianti dei sistemi operativi server con capacità di comunicazione speciali.

4. Sistema operativo PC

Il compito di questi sistemi operativi è quello di fornire un'interfaccia user-friendly per un singolo utente. Tali sistemi operativi sono ampiamente utilizzati per lavorare con testo, fogli di calcolo e accesso a Internet. Esempi vividi: Windows 98, 2000, MacOS, Linux.

Il parametro principale del sistema operativo RT è il tempo. Ad esempio, in un sistema di controllo della produzione, i computer che operano in modalità RT raccolgono dati sul processo industriale e li utilizzano per controllare le macchine. Tali processi devono soddisfare rigidi requisiti di tempo. Quindi, se un'auto si muove lungo un nastro trasportatore, ogni azione deve essere eseguita in un momento rigorosamente definito. Se il robot di saldatura salda la cucitura troppo presto / tardi, causerà danni irreparabili. Se qualche azione dovesse aver luogo in un determinato momento o in un determinato intervallo di tempo, allora si parla di un rigido sistema di RT. Esiste un sistema RT flessibile in cui sono consentiti ritardi occasionali nell'esecuzione delle operazioni. Rientra in questa categoria audio digitale e sistemi multimediali. Esempi di SO: VxWorks, QNX.

6. Sistema operativo integrato

Un computer tascabile, o PDA (Personal Digital Assistant), è un piccolo computer che sta in una tasca dei pantaloni e svolge alcune funzioni (taccuino, blocco note). Esempi di OS: PalmOS, Windows CE (elettronica di consumo).

7. Sistema operativo Smart Card (le smart card sono smart card)

I sistemi operativi più piccoli funzionano su Smart Card, che sono dispositivi con una CPU. Questi sistemi operativi sono soggetti a vincoli di potenza della CPU e della memoria estremamente rigidi. Alcuni di loro possono gestire solo un'operazione, ma altri OS sulle stesse smart card svolgono funzioni complesse. Alcuni sistemi operativi sono orientati a Java, ad es. La ROM contiene l'interprete della macchina virtuale Java (ROM - Read Only Memory). Le applet Java vengono caricate sulla scheda ed eseguite dall'interprete JVM (Java Virtual Machine). Alcune di queste schede possono eseguire più applet Java contemporaneamente, portando al multitasking e alla pianificazione. C'è anche bisogno di protezione. Queste attività vengono solitamente eseguite da un sistema operativo estremamente primitivo.

7.1. Concetti di base del sistema operativo

Uno dei componenti dell'informatica è... software (software), che è eterogeneo e ha una struttura complessa che comprende più livelli: di sistema, di servizio, strumentale, applicato.

Sul il livello più basso esistono complessi di programmi che svolgono funzioni di interfaccia (intermediario tra una persona e un computer, hardware e software, tra programmi in esecuzione contemporaneamente) per la distribuzione di varie risorse informatiche. I programmi a questo livello sono chiamati sistemico. Qualsiasi programma utente viene eseguito sotto il controllo di complessi software chiamati sistemi operativi.

Il livello successivo è software di servizio. I programmi a questo livello sono chiamati utilità ed eseguono varie funzioni ausiliarie. Può essere programmi diagnostici usato in servizio vari dispositivi(floppy e hard disk), programmi di prova che rappresenta un complesso di programmi Manutenzione, archiviatori, antivirus, ecc. Le utilità tendono a funzionare sotto il controllo del sistema operativo (sebbene possano accedere direttamente all'hardware), quindi sono considerate un livello superiore. In alcune classificazioni, il sistema e i livelli di servizio sono combinati in un'unica classe - software di sistema.

Software strumentale presenta complessi di programmi per la creazione di altri programmi. Il processo di creazione di nuovi programmi nel linguaggio delle istruzioni macchina è molto complesso e scrupoloso, quindi è a bassa produttività. In pratica, la maggior parte dei programmi sono scritti in linguaggi di programmazione formali, che sono più vicini a quelli matematici, quindi è più facile e più produttivo lavorare e la traduzione dei programmi nel linguaggio dei codici macchina viene eseguita da un computer utilizzando strumenti strumentali Software. I programmi software degli utensili sono controllati da programmi di sistema e sono quindi a un livello superiore.

Software applicativo- la più grande classe di programmi in termini di volume, questi sono i programmi per utenti finali. Ci sono circa seimila diverse professioni nel mondo, migliaia di diversi hobby e la maggior parte di loro attualmente ha i propri prodotti software applicati. Anche il software applicativo è controllato da programmi di sistema ed è di livello superiore.

Riassumendo quanto detto, possiamo offrire la seguente struttura software (Fig. 7.1).

Figura 7.1. Classificazione del software



La classificazione proposta del software è in gran parte arbitraria, poiché attualmente i prodotti software di molte aziende hanno iniziato a combinare elementi software di classi diverse. Ad esempio, il sistema operativo Windows, essendo un complesso di programmi di sistema, contiene un blocco di programmi di utilità (deframmentazione, controllo, pulizia del disco, ecc.), nonché l'elaboratore di testi WordPad, l'editor grafico Paint, che appartengono alla classe di programmi applicativi.

Il sistema operativo (OS) occupa il posto centrale nella struttura del software. È “un sistema di programmi progettati per fornire un certo livello di efficienza di un sistema informatico digitale a causa di controllo automatizzato il suo operato e l'insieme dei servizi forniti agli utenti”.

Sistema operativo (ing. sistema operativo) è un complesso di base di programmi per computer che fornisce un'interfaccia con un utente, controllo dell'hardware del computer, utilizzo di file, input e output di dati, nonché esecuzione di programmi applicativi e utilità.

Il sistema operativo consente di astrarre dai dettagli dell'implementazione hardware, fornendo agli sviluppatori di software un minimo set richiesto funzioni. Dal punto di vista dei cittadini, utenti ordinari informatica, il sistema operativo include programmi interfaccia utente.

Sistema operativo - un programma che viene caricato all'accensione del computer. Effettua un dialogo con l'utente, controlla il computer, le sue risorse (RAM, spazio su disco, ecc.), lancia altri programmi applicativi per l'esecuzione. Il sistema operativo fornisce all'utente e ai programmi applicativi un modo conveniente per comunicare (interfacciare) con i dispositivi di un personal computer.

I sistemi operativi più comuni: MS-DOS, OS/2, UNIX, WINDOWS, LINUX, WINDOWS NT, hanno diverse modifiche.

Funzioni principali (sistema operativo più semplice):

Accesso standardizzato ai dispositivi periferici (dispositivi di input-output);

Gestione RAM (distribuzione tra processi, memoria virtuale);

Controllo dell'accesso ai dati su supporti non volatili (come disco fisso, CD, ecc.), solitamente utilizzando il file system;

Interfaccia utente;

Operazioni di rete, supporto per stack di protocollo

Funzioni aggiuntive:

Esecuzione parallela o pseudo-parallela di compiti (multitasking);

Interazione tra processi: scambio di dati, sincronizzazione reciproca;

Protezione del sistema stesso, nonché dei dati e dei programmi dell'utente da azioni dannose di utenti o applicazioni;

Differenziazione dei diritti di accesso e modalità di funzionamento multiutente (autenticazione, autorizzazione).

Un programma che nasconde la verità sull'hardware e presenta un semplice elenco di file che possono essere letti e scritti, ad es. ., il sistema operativo non solo elimina la necessità di lavorare direttamente con i dischi e fornisce un'interfaccia semplice e orientata ai file, ma nasconde anche un sacco di lavoro sporco con interruzioni, contatori di tempo, organizzazione della memoria e altri elementi di basso livello. In ogni caso, la procedura offerta dal sistema operativo è molto più semplice e comoda da utilizzare rispetto alle azioni richieste dall'apparecchiatura principale.

Dal punto di vista dell'utente, il sistema operativo svolge la funzione di una macchina virtuale, con cui è più facile e facile lavorare rispetto all'hardware che costituisce un computer reale e per i programmi del sistema operativo fornisce una serie di funzionalità che possono usare usando comandi speciali chiamati chiamate di sistema.

Il concetto di guardare al sistema operativo principalmente come un'interfaccia user-friendly è una vista dall'alto verso il basso. Una vista alternativa dal basso verso l'alto fornisce una comprensione del sistema operativo come meccanismo per controllare tutte le parti del computer. I computer moderni sono costituiti da processori, memoria, dischi, apparecchiature di rete, stampanti e una miriade di altri dispositivi. Nel secondo approccio, il compito del sistema operativo è garantire un'allocazione organizzata e controllata di processori, memoria e dispositivi di input/output tra i vari programmi in competizione per il diritto di utilizzarli.

Tipi di sistemi operativi.

La storia dello sviluppo del sistema operativo risale a molti anni. I sistemi operativi sono emersi e si sono evoluti con il miglioramento dell'hardware del computer, quindi questi eventi sono storicamente strettamente correlati. Lo sviluppo dei computer ha portato alla nascita di un numero enorme di diversi sistemi operativi, di cui non tutti sono ampiamente conosciuti.

Di fatto livello superiore sono Sistema operativo principale. Queste enormi macchine possono ancora essere trovate nelle grandi organizzazioni. I mainframe differiscono dai personal computer nelle loro capacità di I/O. I mainframe con migliaia di dischi e terabyte di dati sono abbastanza comuni. I mainframe agiscono come potenti web server e server grandi imprese e corporazioni. I sistemi operativi mainframe si concentrano principalmente sull'elaborazione di molti lavori simultanei, la maggior parte dei quali richiede un'enorme quantità di I/O. In genere eseguono tre tipi di operazioni: elaborazione batch, elaborazione delle transazioni (operazioni in blocco) e condivisione del tempo. L'elaborazione batch esegue attività standard per gli utenti interattivi. I sistemi di elaborazione delle transazioni gestiscono un numero molto elevato di richieste, come le prenotazioni aeree. Ogni singola richiesta è piccola, ma il sistema deve rispondere a centinaia e migliaia di richieste al secondo. I sistemi di condivisione del tempo consentono a più utenti remoti di eseguire contemporaneamente le proprie attività sulla stessa macchina, ad esempio lavorare con un database di grandi dimensioni. Tutte queste funzioni sono strettamente correlate e il sistema operativo mainframe le gestisce tutte. Un esempio di sistema operativo per un mainframe è OS/390.

Sotto ci sono sistema operativo del server. I server sono computer multiprocessore o anche mainframe. Questi sistemi operativi servono contemporaneamente molti utenti e consentono loro di condividere tra loro risorse software e hardware. I server offrono anche la possibilità di lavorare con stampanti, file o Internet. Gli ISP in genere eseguono più server per supportare più client che accedono contemporaneamente alla rete. I server memorizzano le pagine del sito Web ed elaborano le richieste in arrivo. UNIX e Windows 2000 sono tipici sistemi operativi per server. Ora il sistema operativo Linux è stato utilizzato anche per questo scopo.

La prossima categoria è Sistema operativo per personal computer. Il loro compito è fornire un'interfaccia user-friendly per un singolo utente. Tali sistemi sono ampiamente utilizzati in lavoro quotidiano... I principali sistemi operativi di questa categoria sono i sistemi operativi della piattaforma Windows, i sistemi operativi Linux e il sistema operativo per computer Macintosh.

Un altro tipo di sistema operativo è sistemi in tempo reale. Il parametro principale di tali sistemi è il tempo. Ad esempio, nei sistemi di controllo della produzione, i computer in tempo reale raccolgono dati su un processo industriale e li utilizzano per controllare le apparecchiature. Tali processi devono soddisfare rigidi requisiti di tempo. Se, ad esempio, un'auto si muove lungo un nastro trasportatore, ogni azione deve essere eseguita in un momento rigorosamente definito. Se il robot di saldatura salda il cordone troppo presto o troppo tardi, causerà danni irreparabili al pezzo. VxWorks e QNX sono sistemi operativi in ​​tempo reale.

Sistemi operativi incorporati utilizzato nei computer tascabili e negli elettrodomestici. Un computer tascabile è un piccolo computer che sta in una tasca e ha un piccolo insieme di funzioni, come rubrica telefonica e blocco note. Sistemi embedded che controllano il funzionamento dei dispositivi elettrodomestici, non sono considerati computer, ma hanno le stesse caratteristiche dei sistemi in tempo reale e allo stesso tempo hanno dimensioni, memoria e limiti di potenza speciali, il che li rende una classe separata. Esempi di tali sistemi operativi sono PalmOS e Windows CE (elettronica di consumo).

I sistemi operativi più piccoli funzionano su Smart card, che è un dispositivo delle dimensioni di una carta di credito e contenente un'unità centrale di elaborazione. Questi sistemi operativi hanno limiti di potenza del processore e della memoria molto stretti. Alcuni di essi possono gestire una sola operazione, come il pagamento elettronico, ma altri sistemi operativi svolgono funzioni più complesse.

Classificazione dei sistemi operativi.

I sistemi operativi sono classificati per:

Il numero di utenti simultanei: singolo utente, multiutente;

Il numero di processi eseguiti simultaneamente sotto il controllo del sistema: single-tasking, multitasking;

Numero di processori supportati: uniprocessore, multiprocessore;

Codice del sistema operativo bit: 8 bit, 16 bit, 32 bit, 64 bit;

Tipo di interfaccia: comando (testo) e orientata agli oggetti (grafica);

Tipologia di accesso utente al computer: con elaborazione batch, con time sharing, real time;

Il tipo di utilizzo delle risorse: rete, locale.

In accordo con il primo segno di classificazione, i sistemi operativi multiutente, a differenza di quelli monoutente, supportano il funzionamento simultaneo di più utenti su un computer su terminali diversi.

La seconda caratteristica consiste nel dividere il sistema operativo in multitasking e single-tasking. Il concetto di multitasking significa supporto per l'esecuzione parallela di più programmi esistenti contemporaneamente all'interno di un sistema informatico. I sistemi operativi single-tasking supportano la modalità di esecuzione di un solo programma in momento separato volta.

In conformità con la terza caratteristica, i sistemi operativi multiprocessore, a differenza di quelli uniprocessore, supportano la modalità di allocazione delle risorse di diversi processori per risolvere un particolare problema.

La quarta caratteristica divide i sistemi operativi in ​​8, 16, 32 e 64 bit. Ciò presuppone che il numero di bit del sistema operativo non può superare il numero di bit del processore.

In conformità con la quinta caratteristica, i sistemi operativi sono divisi in orientati agli oggetti (di solito con un'interfaccia grafica) e comandi (con un'interfaccia basata su testo) in base al tipo di interfaccia utente. Secondo la sesta caratteristica, i sistemi operativi sono suddivisi in sistemi:

Elaborazione batch, in cui dai programmi da eseguire viene formato un pacchetto (insieme) di attività, immesso nel computer ed eseguito in ordine di priorità, tenendo eventualmente conto della priorità;

Time sharing (TSR), che prevede una modalità di dialogo simultaneo (interattivo) di accesso a un computer per più utenti su terminali diversi, a cui sono a loro volta allocate le risorse della macchina, che è coordinata dal sistema operativo secondo una determinata disciplina di servizio ;

Real time, fornendo un certo tempo di risposta garantito della macchina alla richiesta dell'utente con il controllo di eventuali eventi, processi o oggetti esterni al computer.

In accordo con il settimo segno di classificazione, i sistemi operativi sono divisi in rete e locali. I sistemi operativi di rete sono progettati per gestire le risorse dei computer collegati a una rete allo scopo di condividere i dati e forniscono potenti mezzi per differenziare l'accesso ai dati in termini di garanzia della loro integrità e sicurezza, nonché molte opzioni di servizio per l'utilizzo delle risorse di rete .

Nella maggior parte dei casi, i sistemi operativi di rete sono installati su uno o più computer server sufficientemente potenti dedicati esclusivamente al servizio della rete e delle risorse condivise. Tutti gli altri sistemi operativi saranno considerati locali e possono essere utilizzati su qualsiasi personal computer così come su computer separato connesso alla rete come workstation o client.

Componenti software I sistemi operativi forniscono il controllo dei calcoli e implementano funzioni come la pianificazione e l'allocazione delle risorse, il controllo dell'input-output delle informazioni, la gestione dei dati. Il volume del sistema operativo e il numero dei suoi programmi sono in gran parte determinati dal tipo di computer utilizzati, dalla complessità delle modalità operative di computer e aeromobili, dalla composizione dei mezzi tecnici, ecc. L'utilizzo del sistema operativo consente di:

Aumento larghezza di banda Computer, ad es. un aumento del volume totale di lavoro svolto dal computer per unità di tempo;

Ridurre il tempo di risposta del sistema, ad es. riduzione dell'intervallo di tempo tra i momenti di ricezione dei compiti nel computer e i momenti di tempo per l'ottenimento dei risultati;

Monitoraggio delle prestazioni di hardware e software;

Aiutare gli utenti e gli operatori nell'utilizzo di hardware e software, garantendo il loro lavoro;

Gestione di programmi e dati in corso di calcolo;

Garantire l'adattamento del computer, la sua flessibilità strutturale, che consiste nella capacità di cambiare, reintegrare con nuovo hardware e software.

Un sistema operativo è un insieme di strumenti software di sistema e di servizio. Da un lato, si basa sul software per computer di base incluso nel suo Sistema BIOS(sistema input-output di base); d'altra parte, è esso stesso il cardine del software more livelli alti- applicazioni applicate e la maggior parte dei servizi. Le applicazioni del sistema operativo sono generalmente chiamate programmi progettati per funzionare sotto il controllo di questo sistema.

La funzione principale di tutti i sistemi operativi è procacciatore d'affari... Consiste nel fornire diversi tipi di interfaccia:

L'interfaccia tra l'utente e il software e l'hardware del computer (interfaccia utente);

Interfaccia tra software e hardware (interfaccia hardware-software);

Interfaccia tra diversi tipi di software (interfaccia software).

Anche per una piattaforma hardware, come il PC IBM, esistono diversi sistemi operativi. Le differenze tra loro sono considerate in due categorie: interne ed esterne. Le differenze interne sono caratterizzate dalle modalità di attuazione delle principali funzioni. Differenze esterne sono determinati dalla disponibilità e dalla disponibilità delle applicazioni di un dato sistema necessarie per soddisfare i requisiti tecnici per un particolare luogo di lavoro.

I criteri principali per l'approccio alla scelta di un sistema operativo:

Attualmente, esiste un gran numero di sistemi operativi e l'utente deve affrontare il compito di determinare quale sistema operativo è migliore di altri (secondo un criterio o un altro). Ovviamente non esistono sistemi ideali, ognuno di essi ha i suoi vantaggi e svantaggi. Scegliendo un sistema operativo, l'utente deve immaginare come questo o quel sistema operativo gli fornirà una soluzione ai suoi problemi.

Per scegliere l'uno o l'altro sistema operativo, devi sapere:

Quali piattaforme hardware e a quale velocità viene eseguito il sistema operativo;

Quale hardware periferico supporta il sistema operativo;

Quanto pienamente il sistema operativo soddisfa le esigenze dell'utente, ovvero quali sono le funzioni del sistema;

Qual è il modo in cui il sistema operativo interagisce con l'utente, ovvero quanto l'interfaccia è visiva, comoda, comprensibile e familiare per l'utente;

Ci sono suggerimenti informativi, guide integrate, ecc .;

Qual è l'affidabilità del sistema, ovvero la sua resistenza agli errori dell'utente, ai guasti delle apparecchiature, ecc .;

Quali opportunità offre il sistema operativo per il networking;

Il sistema operativo fornisce compatibilità con altri sistemi operativi;

Che tipo utensili ha un sistema operativo per lo sviluppo di programmi applicativi;

Il sistema operativo supporta diverse lingue nazionali;

Quali pacchetti applicativi noti possono essere utilizzati quando si lavora con questo sistema;

Come viene eseguita la protezione delle informazioni e del sistema stesso nel sistema operativo.

1. concetto di sistema operativo. Le principali funzioni del sistema operativo.

Il sistema operativo è generalmente inteso come un insieme di programmi di controllo che entrano come interfaccia tra l'hardware del computer e sono progettati per l'uso più efficiente delle risorse del sistema informatico, l'organizzazione di un'elaborazione affidabile. Qualsiasi componente software viene eseguito sotto il controllo del sistema operativo e nessuno dei componenti software, ad eccezione del sistema operativo stesso, ha accesso diretto all'hardware.

Le principali funzioni del sistema operativo sono:

1. Ricezione di compiti o comandi dall'utente.

2. Ricezione ed esecuzione di richieste di programma per avviare, sospendere e interrompere altri programmi.

4. Avvio del programma (trasferimento del controllo ad esso, a seguito del quale il processore esegue il programma).

5. Identificazione di tutti i programmi e dati.

6. Garantire il funzionamento del sistema di gestione dei file e del DBMS. che aumenta l'efficienza dell'intero software.

7. Fornire la modalità di multiprogrammazione, cioè l'esecuzione di 2 o più programmi su 1 processore, dando l'impressione della loro esecuzione simultanea.

8. Gestione delle operazioni di input/output.

9. Soddisfare i vincoli rigidi in tempo reale. ??

10. Allocazione della memoria, organizzazione della memoria virtuale.

11. Pianificazione e pianificazione delle attività in conformità con la strategia specificata e le discipline del servizio.

12. Scambio di messaggi e dati tra programmi in esecuzione.

13. Protezione dei programmi dall'influenzarsi a vicenda. garantire la sicurezza dei dati.

14. Fornitura di servizi in caso di guasto del sistema.

15. Garantire il funzionamento dei sistemi di programmazione.

2. Interrompe. Interrompere la gestione.

Gli interrupt sono un meccanismo che consente di coordinare il funzionamento parallelo dei singoli dispositivi di un sistema informatico e rispondere a condizioni speciali che si verificano durante il funzionamento del processore. Gli interrupt sono un trasferimento forzato del controllo da un programma in esecuzione al sistema, e attraverso di esso al corrispondente gestore di interrupt, che si verifica a un determinato evento. Lo scopo principale dell'introduzione degli interrupt è l'implementazione di una modalità di funzionamento asincrono e la parallelizzazione del funzionamento dei singoli dispositivi del complesso informatico. Il meccanismo di interruzione è implementato nell'hardware e nel software.

Le strutture dei sistemi di interruzione possono essere molto diverse, ma hanno tutte una caratteristica comune: un'interruzione porta inevitabilmente a un cambiamento nell'ordine di esecuzione delle istruzioni da parte del processore. Il meccanismo di gestione degli interrupt include i seguenti elementi:

1. Stabilire il fatto dell'interruzione (ricezione e identificazione di un segnale di interruzione).

2. Memorizzazione dello stato del processo interrotto (lo stato del processo è determinato dal valore del contatore comandi, dal contenuto del registro del processore, dalla specificazione della modalità: utente o privilegiato)

3. Il controllo viene trasferito nell'hardware alla routine di interrupt. In questo caso, l'indirizzo iniziale della routine di gestione degli interrupt viene immesso nel contatore di comandi e dalla parola di stato nei registri corrispondenti. ???

4. Conservazione delle informazioni del programma interrotto, che non è stato possibile salvare dalle azioni dell'apparecchiatura.

5. Gestione delle interruzioni. Il lavoro può essere eseguito dalla stessa subroutine a cui è stato trasferito il controllo nel 3° passaggio, ma nel sistema operativo questa elaborazione viene spesso implementata chiamando il corrispondente. subroutine.

6. recupero delle informazioni relative al processo interrotto.

7. Tornare al programma interrotto.

I primi 3 passaggi sono implementati nell'hardware e il resto nel software.

Le funzioni principali del meccanismo di interruzione sono:

1. Riconoscimento o classificazione delle interruzioni.

2. Trasferimento del controllo al gestore dell'interruzione.

3. Corretto ritorno al programma interrotto

Il passaggio dal programma interrotto al conduttore e viceversa dovrebbe essere effettuato il più rapidamente possibile. Uno di metodi velociè l'uso della zolla da tavola. elenco di tutti gli interrupt consentiti rispettivamente per il computer e gli indirizzi. gestori. Per tornare correttamente al programma interrotto, prima di trasferire il controllo all'handler, il contenuto dei registri del processore viene memorizzato nella memoria diretta o nello stack di sistema.

Interrompere il servizio. La presenza di un segnale di interruzione non deve causare l'interruzione di un programma in esecuzione; il processore può disporre di un sistema di protezione dall'interruzione: disabilitare il sistema di interruzione o vietare o mascherare i singoli segnali di interruzione. Controllo del programma con questi mezzi consente al sistema operativo di regolare l'elaborazione dei segnali di interruzione. Il processore può elaborare gli interrupt immediatamente all'arrivo di un'interruzione, posticipare la loro elaborazione per un po' di tempo e ignorarli completamente. Di solito, le operazioni di interrupt vengono eseguite solo dopo che l'esecuzione del comando corrente è stata completata. Poiché i segnali di interruzione si verificano in momenti arbitrari, possono esserci diversi segnali di interruzione al momento dell'interruzione, che possono essere elaborati solo in sequenza. Al fine di gestire gli interrupt in un ordine ragionevole, viene loro assegnata la priorità. I programmi, controllando gli appositi registri della mascherina, consentono di attuare diverse discipline di servizio:

1) con relativa priorità. Allo stesso tempo, il servizio non viene interrotto anche in presenza di richieste con priorità maggiore. dopo la fine del servizio di questa richiesta La richiesta (corrente) con la priorità più alta viene servita. Per organizzare tale disciplina, è necessario applicare maschere a tutti gli altri interrupt nel programma di servizio per questa richiesta, o semplicemente disabilitare il sistema di interrupt.

2) con priorità assoluta. I compiti con la priorità più alta sono sempre serviti. Per implementare questa disciplina, tutti gli interrupt con la priorità più bassa vengono mascherati quando si richiede la gestione degli interrupt. In questo caso è possibile un interrupt multilivello, ovvero un'interruzione del gestore di interrupt. Il numero di livelli di interruzione in questa modalità varia e dipende dalla priorità della richiesta secondo il principio dello stack: LCFS - last come first servito, ovvero una richiesta con priorità più alta può interrompere una richiesta con priorità più bassa. Quando viene visualizzata una richiesta di interruzione, il sistema di interruzione identifica il segnale e, se le interruzioni sono abilitate, il controllo viene trasferito al corrispondente. gestore di interruzioni.

Sezioni di servizio, in cui viene salvato il contesto dell'attività interrotta e l'ultima sezione in cui viene ripristinato il contesto in modo che il sistema di interruzione non reagisca nuovamente al segnale di richiesta di interruzione. Questo sistema di interruzione disabilita automaticamente le interruzioni, quindi è necessario riabilitare questo servizio di interruzione nelle routine di interruzione. Quindi, per la durata della sezione centrale di elaborazione degli interrupt, gli interrupt sono abilitati, per la durata dell'operazione della sezione finale, la subroutine di elaborazione degli interrupt deve essere disabilitata e, dopo il ripristino del contesto del task interrotto, deve essere nuovamente abilitato. Queste azioni devono essere eseguite in ogni elaborazione di interrupt. In molti sistemi operativi, 1 sezione dell'elaborazione degli interrupt è allocata in uno speciale modulo di programma chiamato. supervisore di interruzione.

3. Qual è la differenza tra moduli software rientranti e riinterrompibili. Come vengono implementati.

1. Che cos'è un sistema di gestione dei file (FMS)?

Nomina del SUF.

Organizzazione di un accesso più conveniente ai dati organizzati come file. Invece dell'accesso ai dati di basso livello, che indica l'indirizzo fisico di ciascun record, viene utilizzato l'accesso logico, che indica il nome del file e il record in esso contenuto.

Numerosi sistemi operativi consentono di lavorare con diversi SUF, in questo caso si parla di montato file system... Esistono anche sistemi operativi che funzionano senza SUF, ad es. qualsiasi sistema di gestione dei file non è necessario di per sé, è progettato per funzionare in un CO specifico e un file system specifico.

2. Interruzioni esterne, interne e software.

Interruzioni derivanti dal lavoro della detrazione I sistemi possono essere suddivisi in esterni e interni. Gli interrupt esterni vengono attivati ​​da eventi asincroni che si verificano al di fuori del processo interrotto. Esempio: interruzione del timer, interruzione da dispositivi esterni, interruzione I/O, interruzione dell'alimentazione, interruzione del pannello operatore, interruzione da un altro processore o altro sistema operativo.

Gli interrupt interni vengono attivati ​​da eventi correlati al funzionamento del processore e sincroni con le sue operazioni. Ad esempio: in caso di violazione dell'indirizzamento (quando viene specificato un indirizzo proibito o inesistente) o accesso a un segmento o pagina mancante durante l'organizzazione della memoria virtuale; se è presente una combinazione di 2 cifre non utilizzata nel campo codice operazione; quando diviso per 0; straripamento o scomparsa dell'ordine; quando si rilevano errori di parità, errori nel funzionamento di vari dispositivi dell'apparecchiatura mediante controllo.

Interruzioni software. Queste interruzioni si verificano sul comando di interruzione corrispondente, ovvero, su questo comando, il processore esegue le stesse azioni che durante le normali interruzioni interne. Questo meccanismo è stato appositamente introdotto in modo che il passaggio ai moduli del programma di sistema avvenga non solo come transizione a una subroutine, ma esattamente allo stesso modo degli interrupt ordinari. Questo assicura commutazione automatica processore in modalità privilegiata con la possibilità di eseguire qualsiasi comando. I segnali che causano interruzioni vengono generati all'esterno del processore o nel processore stesso e possono verificarsi contemporaneamente. La scelta di uno di essi per l'elaborazione è basata sulla priorità assegnata a ciascun tipo di interrupt. È possibile integrare la contabilità di priorità delle interruzioni mezzi tecnici, ed essere determinato anche dal sistema operativo.

Principali articoli correlati