Usuari:Sergi/Temari/Tema 15 Sistemas operativos. Componentes. Estructura. Funciones. Tipos.

De Acacha

Dreceres ràpides: navegació, cerca

Contingut

Definició de sistema operatiu

Vegeu també l'article Sitema operatiu a la viquipèdia.

Un sistema computador està format pel següents elements:

  • Programari (software): que fa referència al conjunt de programes que s'executen i que permeten treure profit de les prestacions que ofereix el sistema

Sense programari un computador esdevé una objecte sense utilitat.

Segons el següent gràfic:

Esquema bàsic de la interacció entre nucli, la resta del programari i el maquinari

Un sistema operatiu és el programari que fa d'enllaç entre les aplicacions d'usuari i el maquinari.

La finalitat d'un sistema operatiu és oferir un conjunt de programes que permetin fer més fàcil i eficient l'ús d'un ordinador. Actualment un ordinador és una màquina complexa que consta d'un o més processadors, memòria de diferents tipologies, rellotges, perifèrics, etc i a més són sistemes on hi pot treballar més d'un usuari. És evident que es fa necessari que hi hagi alguna solució que permeti fer ús d'un ordinador sense necessitat de dominar la complexitat del maquinari.

És en aquest punt on sorgeix la idea de sistema operatiu com una capa de programari amb l'objectiu de gestionar les diferents parts d'un ordinador de manera eficient i al mateix temps presentar a l'usuari el que s'anomena una màquina virtual més senzilla de comprendre i utilitzar.

La comunicació entre capes es fa utilitzant interfícies que proporciona el sistema operatiu:

Interfície aplicacions usuari-sistema operatiu:

  • Crides del sistema

Interfície maquinari-sistema operatiu:

  • Interrupcions de maquinari



Història dels sistemes operatius

La evolució dels sistemes operatius ha estat sempre molt lligada a l'evolució de les computadores ja que essencialment els sistemes operatius han anat evolucionant per adaptar-se a l'evolució del maquinari. També és important dir que la informàtica ha esta molt lligada a l'evolució d'altres especialitats com per exemple la electrònica.

És bastant habitual parlar de generacions en la història de la informàtica i en aquest apartat es vol fer un breu resum de la història dels computadors lligada a la evolució del sistemes operatius segons aquestes generacions. Cal indicar però, que diferents fonts no es posen d'acord sobre el nombre de generacions i que les fronteres (dates) entre generacions són sempre valors aproximats. A més, també cal indicar que la història pot variar depenent des del punt de vista que s'abordi (és pot abordar des de un punt de vista occidental, oriental i segons la perspectiva no sempre es coincideix en determinar quines són les "primeres màquines" ni els "primers inventors" de certes tecnologies)

Recursos:

La 1a generació. Els primers sistemes computadors

Els principis de la informàtica venen marcats pel fet que només existia el maquinari i que encara no s'utilitzaven els transistors. La tecnologia utilitzada eren les vàlvules de buit o vàlvules termoiòniques. La seva mida obligava a fer unes màquines molt grans.

L'àmbit d'ús d'aquest primers computadors era el militar i la seva funció era realitzar càlculs matemàtics com per exemple el càlcul de trajectòries balístiques.

Els dispositius que s'utilitzaven eren cintes de paper i targetes perforades.

Els programes s'escrivien en llenguatge màquina i no existia el concepte de llenguatge de programació. Cada màquina tenia el seu propi llenguatge i sovint les màquines es programaven cablejant el maquinari. El procés de programació de les màquines era complex i poc productiu.

En aquesta època es considera que no hi havia el concepte de sistema operatiu i l'usuari interactuava directament amb la màquina.

La 2a generació. L'aparició del transistor

A mitjans de la dècada dels 1950 va aparèixer el transistor i va permetre construir computadors molt més fiables, petits i ràpids (els càlculs es duien a terme en l'ordre dels microsegons o el que és mateix els processadors amb prou feines arribaven a velocitats d'un Mhz). Això va permetre que es poguessin fabricar computadors amb la idea de vendre'ls. Degut a l'alt preu dels primers computadors els primers usuaris van ser les grans corporacions i les institucions com l'exercit, les universitats i els governs.

Pel que fa als dispositius cal destacar l'aparició dels primers perifèrics:

  • Dispositius d'E/S: lectors de targetes perforades i impressores
  • Dispositius d'emmagatzematge: Unitats de disc i cintes magnètiques.

Vistes les millores a nivell de maquinari, es va fer necessari desenvolupar els primers programes que permetessin rendibilitzar l'ús d'aquestes noves tecnologies. Van aparèixer els primers llenguatges de programació (FORTRAN, Pascal, Cobol...) i els primers programes per al desenvolupament d'aplicacions (carregadors, muntadors, compiladors, llibreries de funcions matemàtiques i rutines per al controls de dispositius d'E/S).

Aquests primers sistemes ja utilitzaven doncs les passes habituals del desenvolupament d'aplicacions amb llenguatges compilats (creació del codi font. compilació, execució i depuració). Aquests elements de programari normalment no es consideren part del Sistema Operatiu però si que podem considerar un sistema operatiu molt rudimentari el conjunt de rutines per treballar amb els dispositius d'entrada i sortida juntament amb les aplicacions que permetien carregar els programes a l'ordinador.

El principal problema d'aquesta època era la diferència de velocitat entre la CPU i els dispositius d'E/S. La baixa velocitat dels perifèrics feia que no es rendibilitzes l'ús de la CPU (el processador estava molt de temps parat esperant rebre dades dels dispositius). Per aquesta raó es van implementar diferents tècniques com el processament per lots, el processament fora de línia , la gestió de cues i els sistemes de memòria intermèdia (buffers) .

La 3a generació. L'aparició dels circuits integrats

Aquesta generació sorgeix a mitjans dels anys 1960 i es basa en l'aparició d'una nova tecnologia electrònica: els circuits integrats. Els circuits integrats permeten desenvolupar màquines més ràpides i molt més petites. També cal destacar l'abaratiment de costos que va permetre que els ordinadors es comencessin a utilitzar en empreses mitjanament grans i l'aparició d'un sector informàtic comercial.

Respecte als dispositius la diferència més destacada és la millor eficiència i velocitat i l'aparició del terminals remots que permetien accedir a bancs de dades remotes.

Pel que fa al programari cal destacar:

  • L'aparició dels primers llenguatges de programació universals pensats per tal de poder ser utilitzats en diferents sistemes de maquinari. S'estandaritzen els llenguatges de programació ja existents i n'apareixen d'altres com el Basic o el Pascal.
  • L'aparició de la multiprogramació i la programació concurrent. Fins ara tots els programes s'executaven de forma seqüencial. Amb l'aparició de la multiprogramació apareix el concepte de compartició de temps de CPU (sistemes de temps compartit vs els sistemes de temps real). Aquest sistema permet fer un ús més eficient de la CPU, ja que aquesta pot continuar treballant amb altres processos mentrestant un altre procés resta a l'espera dels resultats d'una operació d'E/S.

La 4a generació. Integració de circuits a gran escala

El gran canvi d'aquesta generació és la introducció de la integració a gran escala de circuits integrats (LSI/VLSI) que va permetre reduir els costos fins al punt d'obrir el mercat de la informàtica als usuaris domèstics. També cal destacar els constants increments de velocitat marcats per la famosa Lley de Moore que ens han dut dels primers sistemes treballant amb velocitats de decenes de Mhz fins als sistemes actuals que treballen a velocitats de GHz.

A nivell de dispositius cal destacar l'aparició de dispositius que permetien les comunicacions entre ordinadors apareixen així les primeres xarxes que ens han dut a les actuals xarxes LAN i xarxes WAN (Internet) i a l'aparició dels sistemes operatius amb capacitat per treballar amb xarxa. Apareixen els primers sistemes distribuïts que permeten la compartició de recursos entre màquines remotes.

També apareix el concepte de sistema operatiu en temps real, molt utilitzat en entorns industrials. Aquests sistemes operatius estan més enfocats a obtenir temps de resposta ràpids amb independència de l'ús efectiu que es faci dels dispositius i dels recursos.

Arquitectura dels sistemes operatius. Components i Estructura

Els sistemes operatius faciliten l'ús dels ordinadors establint sobre el maquinari de l'ordinador diferents nivells de màquina virtual que són molt més fàcils i agradables d'utilitzar per als usuaris humans. Qualsevol sistema operatiu modern és capaç d'executar cents d'operacions amb diferents elements del maquinari d'un ordinador sense necessitat que l'usuari en conegui els detalls d'aquestes operacions.

Per tant els sistemes operatius són una abstracció del maquinari, dividida en diferents nivells, que faciliten l'ús dels ordinadors a les aplicacions o el que és al mateix, als usuaris que utilitzen aquestes aplicacions.

Un exemple d'aquesta abstracció són els sistemes de fitxers. Tots els sistemes operatius tenen un sistema de fitxers que permet als usuaris treballar amb diferents tipus de dispositius d'emmagatzemament (discs durs, memòries Flash USB, dispositius òptics com el CD o el DVD, etc) sense necessitat de conèixer els detalls de cadascun d'aquests sistemes. Per exemple un usuari pot treballar amb els fitxers del seu disc dur sense ocupar-se de detalls tècnics com l'engegada del motor del disc dur, el posicionament del capçal en la pista, cara i sector adients, etc.

El kernel del sistema operatiu

Esquema bàsic de la interacció entre nucli, la resta del programari i el maquinari
Una visió típica de l'arquitectura de computadors com a una serie de capes d'abstracció: hardware, firmware, ensamblador, nucli, sistema operatiu i aplicacions

El nucli (també conegut per l'anglicisme kernel) és la part fonamental del sistema operatiu. És el programari responsable de facilitar a les aplicacions del sistema un accés segur al maquinari i de gestionar els recursos compartits (memòria, espai de disc, perifèrics, etc.).

Accedir directament al maquinari pot ser una tasca realment complexa per a la majoria d'aplicacions. El nucli s'encarrega d'oferir una interfície més senzilla d'accés al maquinari mitjançant una abstracció del maquinari que permet amagar (encapsular) la complexitat del sistema i proporcionar un accés senzill i controlat al maquinari. A aquesta interfície se l'anomena màquina virtual.

Recursos:


Protecció del sistema. Nivells i espais de treball. Mode usuari i mode sistema. Interfícies de comunicació

Sistema de protecció per anells

A l'hora de dissenyar un sistema operatiu i concretament el seu nucli es molt important tenir en compte la seva protecció tant contra errors (tolerància cap als errors) com d'usos il·lícits (seguretat)

S'utilitzen bàsicament dos sistemes de protecció enfront la tolerància a errors:

Es diferencien dos espais o modes de treball que separen l'accés a la memòria virtual (la memòria que veuen els processos segons se la ofereix la màquina virtual del sistema operatiu):

  • Mode supervisor o mode kernel (anell 0): No té restriccions d'accés a la memòria i pot accedir a qualsevol adreça, de qualsevol procés o de qualsevol dispositiu mapejat a memòria i per tant no té cap mena de restricció d'accés. Aquest espai esta reservat per a ús del nucli o dels seus mòduls o d'alguns drivers. Programar en aquest espai és molt més complicat ja que s'ha de tenir molta cura de no interferir entre diferents espais de memòria de processos. Un programa en l'espai de supervisor s'ha de dissenyar amb la idea de no fallar mai, ja que un error en aquest programa pot desencadenar un error en tot el sistema.
  • Mode usuari o espai d'usuari : En contrast, l'espai d'usuari és la zona on s'executen les aplicacions d'usuari. En la majoria de sistemes operatius actual cada procés té el seu propi espai de memòria i no pot accedir a la memòria d'altres processos i d'aquesta manera s'evita la interferència entre processos.
L'única forma en que un procés de l'espai d'usuari pot accedir a la memòria d'altres processos és a través 
de les crides de sistema (interfície) del sistema operatiu, de forma que el sistema operatiu pot gestionar 
el control d'accés als recursos.

Sistemes operatius i els modes de protecció:

  • Linux i Windows: separen la protecció de memòria del sistema en mode usuari i mode administrador. És per tant un sistema d'anells de protecció de 2 capes o anells
  • DOS: Aquest sistema s'executa contínuament en mode supervisor

Comparació entre sistemes:

  • El sistema d'anells jeràrquics és molt menys flexible que el sistema d'accés a memòria segons privilegis
  • El sistema d'anells jeràrquics no permet assignar diferents nivells de prioritat entre processos d'un mateix nivell
  • Els sistemes d'anells jeràrquics tenen un rendiment inferior ja que sovint s'han de comunicar dades entre processos entre diferents nivells.

La tolerància a errors és especialment important en els sistemes multiprocés on és necessari protegir els processos entre si (és a dir evitar que un procés pugui afectar el correcte funcionament d'un altre procés). És evident que certs processos han de ser especialment tolerants a errors per a evitar penjades del sistema.

Tots dos sistemes utilitzen alguna mena de suport de maquinari per operar eficientment:

La majoria de sistemes operatius moderns no disposen de suport per treballar amb les capacitats de les MMU i per tant treballen amb sistema jeràrquic 
d'anells.
La majoria de CPU suporten més modes d'usuari i per tant un major control del sistema però actualment els sistemes operatius moderns no acostumen a 
suportar més de dos nivells (usuari i kernel) per tal d'evitar que els sistemes operatius siguin massa dependents de l'arquitectura del sistema i poder 
augmentar així la seva portabilitat.

Tipus de kernels. Monolítics vs Microkernels

Microkernel
Kernel monolític

Hi ha quatre tipus de nuclis:

  • Nuclis monolítics: Els nuclis monolítics engloben tots els serveis de maquinari del sistema, i no s'utilitzen serveis (en el sentit d'aplicacions fora del nucli que accedeixin directament al maquinari)
  • Micronuclis: Els micronuclis (en anglès microkernel) proporcionen un petit conjunt d'abstraccions simples del maquinari, i utilitzen aplicacions anomenades servidors per oferir la majoria de la resta de funcionalitats.
  • Nuclis híbrids: Los nuclis híbrids (micronúclis modificats) són molt pareguts als micronúclis purs, excepte perquè inclouen codi addicional en el espai del nucli per tal que aquest s'executi més ràpidament.
  • exonúclis: no faciliten cap abstracció del maquinari, però permeten l'ús de biblioteques que proporcionen major funcionalitat gracies a l'accés directa al maquinari.

Exemples:

  • Nuclis monolítics: Unix i Linux. Linux va ser creat per Linus Torvalds al 1991, i inicialment va tenir moltes contribucions de Minix. Per ser justos el sistemes operatius que normalment anomenem Linux s'hauria d'anomenar GNU/Linux, ja que Linux només és el Kernel i la resta d'aplicacions que formen el sistema operatiu van ser contribuïdes per la FSF liderada per Richard Stallman i el seu sistema operatiu GNU (GNU's Not Unix). De fet GNU sempre ha tingut un nucli propi (GNU Hurd) però que no és tant complet com Linux.
  • Micronuclis: Minix. Minix va ser creat per Tamembaum, un professor universitari escritor de molts dels llibres de docència sobre informàtica més importants, per a fer pràctiques a la universitat. També hi ha una sèrie de micronuclis anomenatsa enriquits entre els quals es troba GNU Hurd
  • Nuclis híbrids: És el tipus de sistema utilitzat a tots els sistemes operatius Windows basats en nucli Microsoft Windows NT.
  • Exonuclis: Són sistemes en fase de desenvolupament orientats a la virtualització de sistemes.

Monolítics vs Microkernels

Els nuclis monolítics són grans i complexes ja que engloben tots els serveis del sistema però tenen un rendiment superior als mininuclis. El principal inconvenient és però que qualsevol canvi de maquinari necessitava en principi d'una recompilació sencera del nucli. Per entendre millor com funcionen aquests sistemes penseu que un sistema Linux quan s'instal·la et configura/compila el kernel per al maquinari específic del teu ordinador. Si posteriorment es modifica algun component de maquinari és necessari tornar a configurar el kernel. Aquest fet, juntament amb la falta de suport de creació de certs drivers per a Linux, és el pitjor inconvenient d'aquest tipus de sistemes, però cal destacar que conceptualment són superiors en rendiment.

Actualment el tema de configuració de maquinari ha millorat molt. El nucli Linux actual és un nucli monolític modulable. D'aquesta manera es pot configurar i recompilar el kernel per mòduls i fins i tot es possible carregar mòduls en calent en el moment que es necessiti (Sistemes Hot Pluggable com USB o targetes PCMCIA, etc.)

Monolític:

Imatge:Noyau monolithique simplifié.png Imatge:Architecture noyau-monolithique.png

Microkernels:

Imatge:Micro noyau simplifié.png Imatge:Architecture micro-noyau.png

Hibrids:

Imatge:Micro noyau hybride simplifié.png

Recursos:

Kernel de Linux

Al següent gràfic es pot observar els diferents subsistemes (veieu l'apartat #Funcions d'un sistema operatiu) del kernel de Linux i la seva relació amb el maquinari i el programari:


Imatge:Linux kernel diagram.png

Nivell d'usuari. Interfícies (crides de sistema) i sistemes virtuals

Crides de sistema POSIX:

Sistemes virtuals:


Subsistemes interns

Subsistemes generals:

En Unix tot són fitxers i els sistemes de fitxers proc i sys contenen informació (carregada a RAM) general que pot ser utilitzada per les aplicacions del sistema operatiu.

HAL (Hardware abstraction Layer)

Components específics de màquinari (controladors)

Drivers o controladors: En nuclis Linux els controladors poden formar part del nucli (es compilen com a mòduls addicionals del nucli) o es poden afegir quan es necessiten (en calent) amb mòduls que es carreguen en temps d'execució.

Maquinari

  • Subsistema de control de memòria: El maquinari més important és el MMU (Managment Memory Unit) que és una chip de maquinari especialitzat el la gestió de la memòria.

Funcions d'un sistema operatiu

La gestió de processos

La gestió de la memòria

La gestió de la Entrada/Sortida (E/S)

La gestió del sistema de fitxers

Classificació dels sistemes operatius

Sistemes monousuari i multiusuari

  • Monousuari: sistema monousuari estricte: DOS en mode laxe: totes les versions de Windows (Windows 9x, ME, NT, XP i Vista) permeten diferents usuaris però no de forma concurrent (a no ser que disposin d'un terminal Server)
  • Multiusuari: Unix/Linux o Windows 2000

Sistemes Monoprogramació i multiprogramació

  • Monoprogramació: només es pot executar un procés i la resta han d'esperar a que aquest procés acabi. No hi han sistemes operatius actuals monoprogramació
  • Multiprogramació o multitasca: Quan poden executar diferents processos al mateix temps. Cal destacar que en un instant exacte només poden haver-hi més d'un procés executant-se al mateix temps si tenim més d'un processador (multiprocés). Aquí caldria destacar els Sistemes Operatius que disposen de planificació expulsiva i els que no (l'exemple és DOS que permetia a un procés monopolitzar l'ús de la CPU sense que el sistema el pugues expulsar de la CPU)

Sistemes nonoprocés i multiprocés

  • Monoprocés: Suporten un únic processador. Windows 9x
  • Multiprocés: Unix/Linux, Sun/OS i Windows NT/2000

Sistemes operatius de temps real i sistemes interactius

Restriccions de temps

  • Sistemes operatius de temps real: Dedicats a aplicacions de temps real són sistemes operatius molt específics per a àmbits industrials o militar.
  • Sistemes interactius: Són els "habituals" on la màquina interacciona amb les entrades i sortida del sistema sense necessitats de processament en temps real.

Sense restriccions de temps:

  • Processaments per lots (batch): Sistema molt utilitzat en els primers sistemes. Aquest sistemes s'utilitzaven per raons tecnològiques (les CPU eren molt més ràpides que els sistemes d'E/S i el millor sistema era processar per lots per tal d'aprofitar al màxim l'ús de la CPU)

Serveis que ofereix un sistema operatiu

Serveis que ofereix a l'espai d'usuari (aplicacions)

Crides al sistema. Llibreries del sistema

Les crides al sistema ofereixen les funcions bàsiques per a poder utilitzar totes els recursos del sistema de forma correcta i ordenada

Tot i que diferents sistemes operatius tenen diferents crides al sistema, en general es pot dir que la semàntica i les funcions de les crides al sistema entre diferents sistemes operatius són equivalents.

Les crides al sistema es poden classificar segons la seva funció:

  • Gestió de processos
  • Senyalització de processos
  • Gestió del sistema d'arxius
  • Proteccions
  • Funcions de temps

Les crides al sistema normalment s'agrupen en el que és anomenat llibreria del sistema o API (Application Programming Interface)

  • Linux: En Linux l'estandard és utilitzar la llibreries de sistema de C
  • Windows: API de Windows. S'utilitzen frameworks de treball com les MFC (Microsoft Fundation Classes)

Intèrpret de comandes

L'interpret de comandes és el programa encarregat d'interpretar i comunicar al sistema operatiu el que vol fer l'usuari del sistema.

Els intèrprets de comandes reconeixen un conjunt limitat d'instruccions anomenats comandes. Aquestes comandes permeten als usuaris accedir, modificar, crear i protegir la informació del sistema.

Tots els sistemes actual operatius actuals tenen suport per a treball en línia de comandes. De fet, la filosofia de Sistemes com Unix, és que tot i disposar de interfícies gràfiques, aquestes només siguin el que defineix el seu nom: interfícies que tradueixen les operacions gràfiques (fer clic, doble click, operar amb finestres i widgets gràfics, etc.) en les comandes equivalents.

  • Interpret de comandes no gràfic o línia de comandes: Les shell (recobriment o "concha") dels sistemes operatius Unix i GNU/Linux.
  • Interpret de comandes gràfic: En entorns Windows l'interpret de comandes gràfic esta incorporat al nucli del sistema i en sistemes Unix/Linux el més utilitzat són els anomenats X-Server.

Aplicacions

Aplicacions de control

Serveis. Traductors (compiladors i intèrprets), utilitats i altres aplicacions

Serveis que ofereix al maquinari

Interrupcions

Eines de l'usuari