Sistemes operatius

De Jose Castillo Aliaga
Revisión del 18:12 28 abr 2017 de Admin (discusión | contribs.) (→‎Tipus de sistemes operatius)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda
Relacionat: Gestió de processos, Linux, Gestió de memòria, Gestió de E/S, Processos en Linux, Linux y teoria de sistemas operativos

L'ordinador és un sistema programable format per un conjunt d'elements de maquinari que necessiten instruccions que li indiquen com utilitzar els recursos. El conjunt d'instruccions o programes és el que coneixem com a suport lògic o programari. Un ordinador, sense programari que ho programi, és bàsicament un bloc de metall inútil, però amb el programari pot emmagatzemar, processar i obtenir informació, editar textos, controlar l'entorn, etc.

Sens dubte, la utilització dels recursos mitjançant programes és molt complicada, ja que cada dispositiu és diferent i amb gran quantitat de característiques a controlar. Per això, una de les primeres accions a dur a terme és el disseny i codificació del programari que ens faciliti el maneig d'aquests recursos, evitant, en la mesura del possible, que haguem de tenir profunds coneixements del maquinari, cedint-li aquesta tasca a un reduït nombre de professionals que seran els que construeixin aquest programari. Un cop realitzat aquest esforç de disseny, es pot pensar perquè no es completa una mica més per tal de dotar els usuaris d'unes quantes funcions addicionals, que no només facilitin l'ús d'aquests recursos, sinó que a més els potenciïn al màxim. Doncs bé, aquest programari així dissenyat, té per finalitat gestionar adequadament els recursos perquè faci la feina que se'ls ha encomanat, i que, a més, potenciïn les funcions dels mateixos, és el que anomenarem sistema operatiu, podent definir com:

"Un sistema operatiu és un conjunt de programes que, ordenadament relacionats entre si, contribueixen a que l'ordinador porti a terme correctament la feina encomanada."

Des del punt de vista de l'usuari, el sistema operatiu consisteix en una sèrie de programes i funcions que oculten els detalls del maquinari, oferint una via senzilla i flexible d'accedir-hi, tenint dos objectius fonamentals:

  • Seguretat: El sistema operatiu ha d'actuar contra qualsevol manipulació estranya, ja sigui accidental o premeditada que pogués danyar la informació, perjudicar altres usuaris o provocar un funcionament no desitjat del sistema. Per exemple, hi ha certes instruccions que poden aturar la màquina i altres que fan operacions directament sobre el maquinari, que hem d'evitar que s'utilitzin directament pels programes. Per això, alguns sistemes proporcionen dos estats, anomenats estat protegit (Sistema o nucli), en el qual s'executa el sistema operatiu, i estat no protegit (Usuari o User), que és el destinat a l'execució dels programes d'usuari i d'aplicació. D'aquesta manera s'impedeix que els programes dels usuaris puguin tenir contacte directe amb el maquinari, o puguin forçar un incorrecte funcionament del sistema.
  • Abstracció: La tendència actual del programari i dels llenguatges de programació és amagar el més possible els detalls de més baix nivell, intentant donar als nivells superiors una visió més senzilla, global i abstracta, oferint operacions per manipular les estructures ocultes, desconeixent per complet la gestió interna de les mateixes. Sobre aquestes estructures es construeixen altres que abstrauen a les anteriors, i així successivament. Gràcies a l'abstracció, els sistemes operatius emmascaren els recursos físics, permetent el maneig amb funcions més generals que oculten les bàsiques, constituint veritables recursos ficticis o virtuals, que milloren i són més potents que els físics. Des del punt de vista d'un programa o usuari, la màquina física es converteix, gràcies al sistema operatiu, en una màquina virtual, també coneguda com a màquina estesa, que presenta l'avantatge respecte a la física d'oferir més funcions de les que normalment suportaria aquesta última. Des del punt de vista de l'usuari, el sistema operatiu proporciona serveis que no són presents a la màquina subjacent. Aquests serveis inclouen les facilitats de càrrega i execució de programes, interacció entre l'usuari i els programes, permetent que s'executin diversos al mateix temps, gestió de la comptabilitat per facturar els serveis i emmagatzematge de dades i programes.

Com a resum, podem dir que el sistema operatiu persegueix aconseguir la major eficiència possible del maquinari i facilitar el seu ús. L'objectiu fonamental del sistema operatiu és gestionar els recursos oferts pel maquinari. Funcions dels sistemes operatius.

Funcions del sistema operatiu

Les funcions dels sistemes operatius són diverses i han anat evolucionant d'acord amb els progressos que la tècnica i la informàtica han experimentat. Com a principals funcions, podríem enumerar les següents:

  • Gestió de processos. Cal diferenciar entre els conceptes programa i procés. Un programa és un ens passiu, que quan es carrega en memòria i comença a executar-se, pot originar una gran quantitat de processos.

Gestió de la memòria. La gestió de memòria, sol anar associada a la gestió de processos. Per executar un procés és necessari assignar unes adreces de memòria exclusives per a ell i carregar-hi, quan el procés finalitzi la seva execució cal alliberar les adreces de memòria que estava usant.

  • Gestió de fitxers. Un fitxer és una abstracció per definir una col · lecció d'informació no volàtil. El seu objectiu és proporcionar un model de treball senzill amb la informació emmagatzemada en els dispositius d'emmagatzematge. Aquests fitxers han de tenir espai assignat als dispositius, han d'estar protegits entre ells, s'han d'organitzar segons uns determinats esquemes ... tot això és la gestió de fitxers.
  • Gestió dels dispositius d'E / S. La gestió de l'E / S té com a objectiu proporcionar una interfície d'alt nivell dels dispositius d'E / S senzilla d'utilitzar. En alguns sistemes aquesta interfície és semblant a la dels fitxers (Linux).

Gestió de la xarxa. El sistema operatiu és l'encarregat de gestionar els diferents nivells de xarxa, els controladors dels dispositius involucrats a la xarxa, els protocols de comunicació, les aplicacions de xarxa, etc. Protecció i seguretat. Mecanismes per permetre o denegar l'accés als usuaris i als seus processos a determinats recursos (fitxers, dispositius d'E / S, xarxa, etc.).

Per comprendre millor perquè hi ha aquestes funcions i quins són els seus objectius, les anirem estudiant mentre fem un breu recorregut a través de la meteòrica història dels ordinadors i la informàtica. Els objectius fonamentals dels sistemes operatius respecte a aconseguir la major eficiència i facilitat d'ús possibles, no són sempre compatibles, ja que qualsevol sistema que hagi de ser eficient, normalment no serà fàcil d'usar, mentre que si és fàcil d'usar, s'haurà oferir als usuaris moltes facilitats i ajudes, incloent molts passos i informació que per a un usuari expert no serien necessàries, el que implica, òbviament, una pèrdua d'eficiència.

Es recomana llegir el apartat de Necessitat d'un sistema operatiu

Història dels sistemes Operatius

Els sistemes operatius van sorgir per necessitat més que per diseny. A continuació anem a fer un breu resum de la història dels sistemes operatius que és, realment, la història de la computació moderna:

Generació Zero. Anys 40.

A finals dels anys 40, amb el que podríem anomenar l'aparició de la primera generació de computadores, s'accedia directament a la consola de l'ordinador des del qual s'actuava sobre una sèrie de micro interruptors que permetien introduir directament el programa en la memòria de l'ordinador (en realitat en existir tan poques computadores tots podrien considerar prototips i cada constructor ho feia sense seguir cap criteri predeterminat). En aquella època no existien els sistemes operatius, i els programadors havien d'interactuar amb el maquinari del computador sense ajuda externa. Això feia que el temps de preparació per realitzar una tasca fora considerable.


Primera Generació. Anys 50.

Quan a un usuari li arribava el seu temps de màquina, s'havia de afanyar a introduir a l'ordinador totes les fitxes perforades que conformaven el seu programa, executar el programa a l'ordinador, vigilar el seu funcionament i esperar que totes les operacions s'acabaren (si hi havia sort, abans que se li acabés el seu temps de màquina).

Apareix la figura del "operador de l'ordinador", persones especialitzades en executar les rutines de càrrega i descàrrega, amb la finalitat de mantenir el sistema amb la màxima ocupació possible, rebent els treballs dels usuaris per a la seva execució. D'aquesta manera, en rebre aquests treballs, els reunia i executava seqüencialment consumint únicament el temps que realment necessitessin i evitant en gran manera els temps d'inactivitat del processador.

La interacció amb el processador i la memòria principal era complicada, però molt més la interacció amb els perifèrics. Per aquesta raò, va sorgir la necessitat de fer biblioteques per accedir al maquinari. Si un programador trobava la manera de escriure en la impresora, podia deixar les targetes de accés a la impresora per a que altres les utilitzaren.

Al final dels anys 50 amb l'objecte de facilitar la interacció entre persona i ordinador, els sistemes operatius fan una aparició discreta i bastant simple, amb conceptes com ara el monitor resident, el procés per lots i l'emmagatzematge temporal.

  • Monitor resident. El seu funcionament era bastant simple, es limitava a carregar els programes a memòria, llegint-los d'una cinta o de targetes perforades, i executar-los. El problema era trobar una forma d'optimitzar el temps entre la retirada d'un treball i el muntatge del següent. Era summament complicat, pel fet que eren targetes perforades les quals les havia de llegir el sistema.
  • Processament per lots. Com a solució per optimitzar, en un mateix nucli de cinta o conjunt de targetes es muntaven els programes, de manera que s'executaran un a continuació d'un altre sense perdre gairebé temps en la transició.
  • Emmagatzematge temporal. El seu objectiu era disminuir el temps de càrrega dels programes, fent simultània la càrrega del programa o la sortida de dades amb l'execució de la següent tasca. Per això s'utilitzaven tècniques de buffering.

Segona Generació. Anys 60.

En els anys 60 es van produir canvis notoris en diversos camps de la informàtica, amb l'aparició del circuit integrat la majoria orientats a seguir incrementant el potencial dels computadors. Per això s'utilitzaven tècniques d'allò més diverses:

  • Multiprogramació. En un sistema multiprogramat la memòria principal alberga a més d'un programa d'usuari. La CPU executa instruccions d'un programa, quan el que es troba en execució realitza una operació d'E / S, en lloc d'esperar que acabi l'operació d'E / S, es passa a executar un altre programa. Si aquest realitza, al seu torn, una altra operació d'E / S, s'envien les ordres oportunes al controlador, i passa a executar un altre. D'aquesta forma és possible, tenint emmagatzemat un conjunt adequat de tasques en cada moment, utilitzar de manera òptima els recursos disponibles.
  • Multiprocessador. Permet treballar amb màquines que tenen més d'un microprocessador.
  • Multihilado. El multiprocessador pot executar simultàniament diversos fils pertanyents a un mateix procés o bé a processos diferents.

Tercera Generació. Sistemes operatius desenvolupats (Anys 70 i 80).

A causa del avanç de l'electrònica, va poder començar a crear-se circuits amb milers de transistors en un centímetre quadrat de silici, el que portaria, pocs anys després, a produir els primers sistemes integrats. Aquesta dècada es podria definir com la dels sistemes de propòsit general i s'hi desenvolupen tecnologies que se segueixen utilitzant en l'actualitat. És en els anys 70 quan es produeix la proliferació dels miniordinadors i la informàtica s'apropa al nivell d'usuari.

Es va realitzar un costosíssim treball per a interposar una àmplia capa de programari entre l'usuari i la màquina, de manera que el primer no hagués de conèixer cap detall de la circuiteria. Fins llavors, l'usuari havia de conèixer un complex llenguatge de control per realitzar els seus treballs que depenien del Hardware on treballés.

Un altre dels inconvenients és el gran consum de recursos que ocasionaven, a causa dels grans espais de memòria principal i secundària ocupats, així com el temps de processador consumit. És per això que es va intentar fer èmfasi en millorar les tècniques ja existents de multiprogramació i temps compartit.

Amb la creació dels circuits LSI-integració a gran escala-, xips que contenien milers de transistors en un centímetre quadrat de silici, va començar l'auge dels ordinadors personals. En aquests es va deixar una mica de banda el rendiment i es va buscar més que el sistema operatiu fos amigable, sorgint menús, i interfícies gràfiques.

Això reduïa la rapidesa de les aplicacions, però es tornaven més pràctics i simples per als usuaris. Un avanç important que es va establir a mitjans de la dècada de 1980 va ser el desenvolupament de xarxes de computadores personals que corrien sistemes operatius en xarxa i sistemes operatius distribuïts. En aquesta escena, dos sistemes operatius eren els majoritaris: MS-DOS (Microsoft Disk Operating System), escrit per Microsoft per a IBM PC i altres ordinadors que utilitzaven la CPU Intel 8088 i els seus successors, i UNIX, que dominava en els ordinadors personals que feien ús del Motorola 68000.

Quarta Generació. Anys 90 fins a l'actualitat.

Incorporen, amb una major o menor eficiència, tots els components que es descriuen en aquest tema, multiprocés, multiusuari, de xarxa, multitasca, abstracció, seguretat, integració amb Internet, etc ...

Un fet fonamental en aquest etapa és la creació d'un sistema operatiu lliure per a la humanitat, impulsada per Richard Stallman, ex-empleat del MIT. Motivat per aquesta idea comença la construcció i desenvolupament de les eines elementals que componen un sistema operatiu, a aquesta part del desenvolupament se li coneix com GNU.

En aquesta etapa Richard Stallman explica amb la col·laboració de milers de programadors a nivell mundial. L'any 1991 apareix la primera versió del nucli Linux va ser creat per Linus Torvalds i aconseguia acoblar totes les eines elementals creades pel projecte GNU de manera eficient.

Així, el nucli Linux té una importància fonamental per al projecte, és tal la importància d'aquest que el projecte acaba cridant GNU / Linux, donant un 50% d'importància a ambdues parts.

Una altra fita important en aquest període va ser l'aparició de Windows 95 que se li pot considerar un sistema operatiu, ja que Windows 3.11 només era una interfície gràfica del MS-DOS. Avui dia és el sistema operatiu més difós en l'àmbit domèstic encara que també hi ha versions per a professionals (servidors).

En l'actualitat el paradigma dels sistemes operatius aquesta migrant a la utilització d'Internet com a suport del sistema operatiu deixant de banda l'emmagatzematge secundari (Discs Durs).

Tipus de sistemes operatius

En aquest punt descriurem les característiques que classifiquen als sistemes operatius, bàsicament veurem tres classificacions: sistemes operatius per la seva estructura (visió interna), sistemes operatius pels serveis que ofereixen i sistemes operatius per la forma en que ofereixen els seus serveis (visió externa).

Sistemes Operatius per la seva estructura (visió interna).

[1]

Si estudiem els sistemes operatius segons la seva estructura interna, veurem que hi ha dos tipus fonamentals, els sistemes d'estructura monolítica i els sistemes d'estructura jeràrquica.

En els sistemes operatius d'estructura monolítica ens trobem que el sistema operatiu està format per un únic programa dividit en rutines, on qualsevol part del sistema operatiu té els mateixos privilegis que qualsevol altra. Aquests sistemes tenen l'avantatge de ser molt ràpids en la seva execució (només cal executar un programa) però tenen l'inconvenient de no tenir la flexibilitat suficient per suportar diferents ambients de treball o tipus d'aplicacions. És per això que aquests sistemes operatius solen ser fets a mida, per solucionar un problema en concret i no per treballar de forma generalista.

A mesura que van anar creixent les necessitats dels usuaris i es van perfeccionar els sistemes, es va fer necessària una major organització del programari, del sistema operatiu, on una part del sistema contenia subparts i això organitzat en forma de nivells. Es va dividir el sistema operatiu en petites parts, de manera que cadascuna d'elles estigués perfectament definida i amb un clar interfase amb la resta d'elements. E s va constituir una estructura jeràrquica o de nivells en els sistemes operatius, el primer dels quals va ser anomenat THE, que es va utilitzar amb fins didàctics. Es pot pensar també en aquests sistemes com si fossin multicapa.

So1.png En l'estructura anterior es basen pràcticament la majoria dels sistemes operatius actuals.

En el sistema d'anells, cada un té una obertura, coneguda com porta o parany (trap), per on poden entrar les trucades de les capes inferiors. D'aquesta manera, les zones més internes del sistema operatiu o nucli del sistema estaran més protegides d'accessos no desitjats des de les capes més externes. Les capes més internes seran, per tant, més privilegiades que les externes.

Sistemes Operatius per Serveis

Segons el nombre d'usuaris:

  • Monousuari. Els sistemes operatius monousuari són aquells que suporten a un usuari al mateix temps, sense importar el nombre de processadors que tingui l'ordinador o el nombre de processos o tasques que l'usuari pugui executar en un mateix instant de temps. Els ordinadors personals típicament s'han classificat en aquesta secció.
  • Multiusuaris. Els sistemes operatius multiusuaris són capaços de donar servei a més d'un usuari alhora, ja sigui per mitjà de diverses terminals connectades a l'ordinador o per mitjà de sessions remotes en una xarxa de comunicacions. No importa el nombre de processadors en la màquina ni el nombre de processos que cada usuari pot executar simultàniament.

Segons el nombre de processos (tasques) realitzats de forma simultània:

  • Monotasca. Els sistemes Monotarea són aquells que només permeten una tasca alhora per usuari.
  • Multitasques. Un sistema operatiu multitasca és aquell que permet a l'usuari estar realitzant diverses tasques a la vegada. Per exemple, pot estar editant el codi font d'un programa durant la seva depuració mentre compila altre programa, al mateix temps que està rebent correu electrònic en un procés en background (segon pla). És comú trobar-hi interfícies gràfiques orientades a l'ús de menús i el ratolí, la qual cosa permet un ràpid intercanvi entre les tasques per a l'usuari, millorant la seva productivitat.

Segons el nombre de processadors que és capaç de manejar:

  • Monoproces. És capaç de manejar només un processador de l'ordinador, de manera que si l'ordinador tingués més d'un li seria inútil. Per exemple Windows 98 és un sistema operatiu Monoprocés
  • Multiprocés. Un sistema operatiu multiprocés és capaç de manejar més d'un processador en el sistema, distribuint la càrrega de treball entre tots els processadors que hi hagi en el sistema. Generalment aquests sistemes treballen de dues maneres:
    • Asimética. Quan es treballa de manera asimètrica, el sistema operatiu selecciona un dels processadors el qual jugarà el paper de processador mestre i servirà com a pivot per distribuir la càrrega als altres processadors, que reben el nom d'esclaus.
    • Simètrica. Quan es treballa de manera simètrica, els processos són enviats indistintament a qualsevol dels processadors disponibles, tenint, teòricament, una millor distribució i equilibri en la càrrega de treball sota aquest esquema.

Un aspecte important a considerar en aquests sistemes és la manera de crear aplicacions per aprofitar diversos processadors. Existeixen aplicacions que van ser fetes per córrer en sistemes monoproceso que no prenen cap avantatge a menys que el sistema operatiu o el compilador detecti seccions de codi paralelizable, els quals són executats al mateix temps en processadors diferents. D'altra banda, el programador pot modificar els seus algoritmes i aprofitar per si mateix aquesta facilitat, però aquesta darrera opció les més de les vegades és costosa en hores i molt tediosa, obligant al programador a ocupar tant o més temps a la paralelització que a elaborar l'algorisme inicial.

Sistemes Operatius per la Forma de Oferir seus Serveis:

Aquesta classificació també es refereix a una visió externa, que en aquest cas es refereix a la de l'usuari, el com s'accedeix als serveis. Sota aquesta classificació es poden detectar dos tipus principals: sistemes operatius de xarxa i sistemes operatius distribuïts.

  • Sistemes Operatius de Xarxa Els sistemes operatius de xarxa es defineixen com aquells que té la capacitat d'interactuar amb sistemes operatius en altres ordinadors mitjançant un mitjà de transmissió per tal d'intercanviar informació, transferir arxius, executar ordres remotes i una infinitat d'altres activitats. El punt crucial d'aquests sistemes és que l'usuari ha de saber la ubicació dels recursos a què desitja accedir. L'important és fer veure que l'usuari pot accedir a la informació no només de la seva màquina, sinó a la de qualsevol màquina de la xarxa, i això s'aconsegueix gràcies a que utilitza un sistema operatiu de xarxa.
  • Sistemes Operatius Distribuïts. Els sistemes operatius distribuïts abasten els serveis dels de xarxa, aconseguint integrar recursos (impressores, unitats de suport, memòria, processos, unitats centrals de procés) en una sola màquina virtual que l'usuari fa servir de manera transparent. Ara l'usuari ja no necessita saber la ubicació dels recursos, sinó que els coneix pel seu nom i simplement els usa com si tots ells fossin locals al seu lloc de treball habitual. Però és molt complicat distribuir els processos en diverses unitats de processament, reintegrar resultats parcials, resoldre problemes de concurrència i paral · lelisme, recuperar-se de fallades d'alguns recursos distribuïts i consolidar la protecció i seguretat entre els diferents components del sistema i els usuaris. Aquests sistemes operatius, encara que existeixen des de fa ja diversos anys, no es mostren especialment fiables, a causa de la complexitat abans esmentada, i a problemes interns d'arquitectura. No obstant això, alguns aspectes de la gestió distribuïda si s'estan utilitzant àmpliament avui en dia.

Així, els sistemes de fitxers distribuïts tenen una gran acceptació, i també s'estan realitzant pràctiques en l'àmbit del procés brut distribuït. Conceptes com els clusters, la virtualització, el núbol tenen molta relació amb la computació distribuida.

Multiprogramació.

Si executem un sol programa en un ordinador, difícilment podrem assolir un rendiment del 100% ja que sempre haurà de realitzar operacions d'entrada/sortida. És a dir, hi haurà temps morts del processador durant els quals no realitzarà cap treball, i no tot el temps estarà realitzant càlculs del programa. Això era particularment notori en els sistemes de treballs per lots, en els quals el valuós temps de l'ordinador, gairebé sempre estava ocupat per rutinàries operacions d'entrada / sortida, i no d'aprofitament de l'UCP de l'ordinador.

Llavors, podem executar els dos processos concurrentment, alternant entre un i altre, segons la UCP vagi quedant lliure, i solapant les operacions d'entrada sortida. Anem a veure com quedarien els anteriors treballs si els executem concurrentment, aprofitant els temps morts.