Resum

Tot programari executable, inclòs el mateix sistema operatiu, s’acaba constituint en una sèrie d’unitats anomenades processos que s’organitzen, ordenen i consumeixen recursos per acabar sent executats pel processador.

Un procés és la instància d’un programa en execució que necessita certs recursos per realitzar la seva tasca, com ara temps de processador, memòria, arxius i dispositius d’entrada i sortida.

Anomenem servei a un programa normalment associat al sistema operatiu que treballa en segon pla i sense interfície d’usuari.

La planificació de processos es desenvolupa en tres nivells:

  • Llarg termini: és l’encarregat de crear els processos determinant quins treballs s’admeten en el sistema per ser processats i carregant-los a la memòria disponible.
  • Mig termini: regula el grau de multiprogramació fent servir l’intercanvi (swapping), que s’encarrega de suspendre processos enviant-los de la memòria interna a la memòria secundària, habitualment ubicada al disc dur.
  • Curt termini: decideix quin procés passa a execució d’entre els que estan esperant en la cua dels processos preparats.

El possibles estats d’un procés són:

  • Nou (new): el procés s’està creant.
  • Preparat (ready): el procés està a la cua, preparat per a l’assignació d’un processador.
  • En execució (running): les instruccions del procés estan sent executades pel processador.
  • Bloquejat (waiting): el procés està parat en espera d’un esdeveniment determinat que el desbloquegi (finalització d’una entrada/sortida, recepció d’un senyal, etc.)
  • Finalitzat (terminated): el procés està finalitzat i s’alliberen els recursos que feia servir.
  • Suspès preparat: processos preparats per a l’execució que, per falta de recursos del sistema, el planificador a mig termini ha decidit passar temporalment a la memòria secundària (disc dur).
  • Suspès bloquejat: processos que estan en espera d’un esdeveniment o de la finalització d’una operació d’entrada/sortida i que són passats a la memòria secundària per alliberar recursos.

Per a la gestió dels processos es requereixen dues estructures bàsiques d’informació:

  • Bloc de control de procés (PCB), amb informació rellevant de cada procés (estat, registres de la CPU, prioritat, memòria emprada, recursos d’entrada/sortida, arxius, etc.)
  • Bloc de control de sistema (SCB), que reuneix informació de les diferents cues del processos i referències als vectors d’interrupcions i excepcions.

Els fils d’execució (threads), també anomenats processos lleugers, són unitats bàsiques d’assignació de CPU que comparteixen certs recursos, com ara l’espai de memòria, les variables globals i els arxius i dispositius d’entrada i sortida.

A cada procés se li assigna una prioritat que determina la freqüència d’accés al processador. Aquesta prioritat té una part determinada pel sistema operatiu en funció del tipus de procés i una altra part assignada pel propi usuari.

La prioritat d’usuari en els sistemes Unix/Linux s’anomena prioritat nice (es pot assignar amb les ordres nice, per arrancar un procés amb una prioritat determinada) i renice (per modificar la prioritat d’un procés ja engegat).

Hi ha diferents mecanismes que permeten la comunicació entre els processos:

  • Canonades: que permeten intercomunicar la sortida de dades d’un procés amb l’entrada d’un altre.
  • Valors de retorn: la variable d’entorn representada per l’interrogant (?) conté un número que representa la causa per la qual ha finalitzat el procés. Va de 0 (finalització correcta) a 255.
  • Senyals: són interrupcions que rep el procés mentre s’està executant per indicar que s’ha produït algun esdeveniment significatiu davant del qual ha de respondre.

Algunes ordres i combinacions de tecles associades a senyals són:

  • Senyals de teclat: Ctrl+Z envia el senyal 20 (SIGTSTP) que atura el procés i el deixa en segon pla. Ctrl+Cenvia el senyal 2 (SIGINT) per finalitzar.
  • kill: Aquesta ordre interna envia senyals (per defecte el senyal 15 de SIGTERM) a qualsevol procés identificat pel seu PID.
  • killall: envia senyals a un procés o processos a partir del seu nom en lloc del PID.
  • nohup: permet engegar processos protegits del senyal sighupperquè es mantinguin actius després de tancar la sessió. La seva sortida estàndard és redreçada i afegida a un arxiu específic anomenat nohup.out.
  • disown: també ens permet protegir processos del senyal SIGHUP, però s’aplica a un treball en segon pla que ja existeix i no canvia les sortides estàndard i d’error.
  • trap: és una ordre interna que ens permet capturar un senyal i especificar què volem fer quan ens arribi.

A Unix/Linux tots els processos s’identifiquen amb l’identificador de procés o PID, un nombre sencer únic de 16 bits que s’assigna seqüencialment a cada nou procés que es crea.

Tot procés, a excepció del procés arrel init, que té PID=1, ha estat creat per un procés pare, que s’identifica pel seu PPID (parent process identifier). Això crea una estructura jeràrquica de processos en forma d’arbre amb el procés init com a arrel.

Quan un procés pare crea un procés, hi ha la possibilitat que el procés pare esperi la finalització del procés fill; en aquest cas el procés fill s’executa en primer pla (foreground). En canvi, si els processos pare i fill s’executen concurrentment, el procés fill queda en execució en segon pla (background). Algunes ordres relacionades amb els plans d’execució:

  • Directiva &: per enviar l’execució d’un ordre a segon pla cal afegir el símbol & al final de la línia d’ordres.
  • jobs: ens permet visualitzar els treballs que tenim en segon pla i veure l’estat en el qual es troben.
  • bg i fg: serveixen per reprendre una tasca aturada en segon pla. bg la reprèn en primer pla, i fg, en segon pla.

Un dimoni (de l’anglès daemon) és un procés no interactiu en segon pla que generalment tenim carregat a la memòria en espera d’algun senyal per despertar-se i oferir un servei determinat. Els dimonis no disposen d’interfície amb l’usuari sinó que fan servir arxius de registre (log) situats habitualment al directori /var/log.

Generalment, els dimonis tenen un guió de shell (shell script) situat al directori /etc/init.d/, que permet iniciar-los (directiva start), parar-los (directiva stop) o reiniciar-los (restart).

Un nivell d’execució (runlevel) és l’agrupació d’una sèrie de dimonis en execució que té com a finalitat crear un entorn de serveis ajustat a unes necessitats concretes.

És habitual que els sistemes Unix/Linux ens proporcionin diferents nivells d’execució: el nivell 1 per a un entorn monousuari, els nivells del 2 al 5 per a entorns multiusuari, el nivell 0 per aturar el sistema i el 6 per reiniciar-lo.

Els diferents nivells es configuren amb enllaços simbòlics als directoris /etc/rcX.d (on X és el número del nivell), que indiquen els dimonis que s’han d’aturar i engegar a cada nivell. El comandament per canviar de nivell d’execució és init i li donem com a paràmetre el nivell d’execució que volem engegar.

Algunes distribucions de Linux estan començant a substituir el tradicional init de System V per un sistema basat en esdeveniments anomenat upstart.

L’aturada del sistema es pot fer amb les ordres:

  • shutdown: crida a init 0 o init 6 però accepta paràmetres com ara el temps de termini per a l’apagada o represa del sistema i la possibilitat d’enviar missatges d’advertiment.
  • halt: és equivalent a # shutdown -h now.
  • reboot: és equivalent a # shutdown -r now.

En arrancar, el nucli del sistema (kernel) posa en marxa un sistema d’arxius virtual /proc, en el qual podrem trobar les imatges dels processos en execució amb tota la informació tractada pel nucli del sistema.

El sistema operatiu Linux disposa de diferents ordres en l’entorn de consola de text per a la gestió i monitoratge de processos:

  • ps (process status): permet visualitzar els processos en execució. Aquesta ordre està basada en la informació continguda en el directori virtual /proc.
  • pstree: mostra una llista de processos en forma d’arbre que segueix la jerarquia de processos Unix i permet identificar fàcilment quin és el procés pare d’un altre.
  • pidof: permet trobar els identificadors dels processos associats a una ordre determinada.
  • time: aquesta ordre permet executar qualsevol altra aplicació i enregistrar els recursos que ha emprat.
  • sleep: suspèn la execució durant els segons especificats.
  • uptime dóna l’hora del sistema, el temps que porta encès, la quantitat d’usuaris connectats i la càrrega mitjana del sistema durant l’últim minut, els últims cinc minuts i els últims quinze minuts.
  • vmstat: dóna informació de l’estat de la memòria física, de la memòria virtual, de l’intercanvi entre memòria interna i disc (swapping), de les transferències de disc, de les interrupcions i de l’ús del processador.
  • top: presenta la informació dels processos de manera dinàmica i interactiva, en temps real.
  • sysstat: és una col·lecció d’eines de monitorització de rendiment per a sistemes Linux.

En l’entorn gràfic disposem del monitor del sistema, que té una pestanya en la qual podem controlar els processos que s’estan executant i el seu consum de recursos del sistema.

El programari que permet l’administració remota és cada vegada més comú i s’utilitza en molts entorns, com l’administració de sistemes, el suport i assistència tècnica remots, el treball a distància, les reunions i presentacions en línia i aplicacions en l’ensenyament i la supervisió d’activitats.

Els mitjans d’administració remota es poden classificar en:

  • Sessió de treball a la consola: la línia d’ordres és flexible i amb requeriments mínims de xarxa, però la interfície és poc amigable.
  • Sessió de treball amb interfície gràfica: visual i amigable, però imposa requisits de capacitat a la xarxa.
  • Eina d’administració local: usualment es fa servir un navegador web que proveeix un entorn visual i intuïtiu sense consumir grans recursos de xarxa.

Telnet: és un protocol que emula un terminal remot per connectar-se a una màquina multiusuari. Fa servir el port TCP 23 i el seu principal problema és la seguretat, ja que la informació viatja sense encriptar.

SSH (secure shell): és un protocol de xarxa que permet l’intercanvi d’informació de manera segura. Utilitza xifrat i criptografia de clau pública per tal de fer l’autenticació de l’estació remota, i fa servir el port 22. La implementació més popular d’SSH és OpenSSH.

Fent servir SSH es poden establir túnels encriptats pels quals es pot transmetre qualsevol protocol que faci servir TCP (POP3, SMTP, HTTP, etc.).

El redreçament estàtic de ports ens permet crear un canal de comunicació segur i transparent a l’usuari entre un port de la màquina local i un port de la màquina remota.

El redreçament dinàmic de ports locals ens permet implementar un servidor SOCKS, que dóna a la intranet un servei similar al que proporciona un servidor proxy web, però no està limitat al protocol HTTP/HTTPS, sinó que permet redreçar qualsevol tràfic TCP/IP.

Hi ha diferents aplicacions que permeten dur a terme l’administració remota d’equips mitjançant una interfície gràfica:

  • El sistema servidor X Window (transparència de xarxa)
  • Computació virtual en xarxa o VNC (virtual network computing)
  • Webmin, eina gràfica per a l’administració remota de Linux

Aquestes opcions fan servir protocols de comunicació remota com ara:

  • Protocol X11: protocol dissenyat com a part del sistema de finestres X Window amb l’objectiu de proporcionar una interfície gràfica als sistemes Unix.
  • Tecnologia NX: és una tecnologia que permet gestionar i millorar les connexions X Window fent servir compressió del tràfic de dades i afegint mecanismes de memòria cau. FreeNX és una implementació en codi lliure sota llicència GPL.
  • Protocol RFB (remote framebuffer protocol): protocol de codi lliure que fa servir la tècnica d’enviar informació dels píxels que conformen la memòria d’imatge gràfica. El protocol RFB fa servir per defecte el port 5900 del servidor per establir la comunicació. No és un protocol segur, així que convé combinar el seu ús amb SSH o bé una altra tecnologia per crear una xarxa privada virtual (VPN).
  • Protocol RDP (remote desktop protocol): protocol propietari desenvolupat per Microsoft, que el fa servir en el seu servidor de serveis d’escriptori (terminal services).

El servei de finestres X Window fa servir el protocol X11 i permet separar en una xarxa l’estació que representa la interfície gràfica de l’estació on s’executa realment l’aplicació de manera nativa i transparent per a l’usuari. Aquesta característica del sistema de finestres X Window s’anomena també transparència de xarxa.

VNC (virtual network computing) fa servir el protocol RFB, que està basat en una memòria d’imatge, i així pot treballar amb qualsevol sistema de finestres, ja sigui X Window, Windows o un altre. Una implementació força estesa d’aquest sistema és TightVNC, programari lliure amb llicència GPL que introdueix algunes extensions al protocol RFB.

Altres eines relacionades amb VNC són Vino, una eina de GNOME per compartir l’escriptori que acostuma a incloure Ubuntu. Tenim també diversos clients VNC com Vinagre.

Remmina és un client d’escriptori remot que està incorporat per defecte en les darreres versions de Linux Debian i que és compatible amb els protocols RDP (Microsoft Windows), RFB (plataforma VNC), XDMCP (protocol de gestió d’X Window), NX i SSH entre d’altres.

Webmin és una aplicació que permet administrar un servidor Unix/Linux de manera remota mitjançant qualsevol navegador web modern. Un cop instal·lat i en funcionament, Webmin proporciona una interfície web (normalment accessible a https://localhost:10000).

La computació al núvoles refereix a l’accés a recursos i serveis des de qualsevol lloc, fer servir programari específic d’aplicació de forma remota mitjançant la interfície del mateix navegador d’Internet i emmagatzemant les dades en servidors externs.

El procés d’impressió consisteix bàsicament en transmetre una sèrie de dades, textuals, gràfiques, etc., de l’ordinador que les ha processat a un perifèric d’impressió determinat.

Els tipus més habituals d’interfícies de comunicació per a la connexió d’impressores són el port paral·lel, el bus USB i la interfície Ethernet.

Els protocols de comunicació descriuen el format dels missatges a intercanviar entre els equips interconnectats en xarxa. Els principals protocols de comunicació són:

  • LPD/LPR (line printer daemon / line printer remote protocol): és el protocol originalment implementat a la plataforma BDS Unix.
  • IPP: el protocol d’impressió per Internet (Internet printing protocol) defineix extensions del conegut protocol HTTP per donar suport als serveis d’impressió remots, configuració d’impressores i gestió de cues.

Altres protocols són l’AppSocket, basat en el protocol Jetdirect de Hewlett-Packard, l’AppleTalk d’Apple o el SMB/CIF que implementa Samba.

Un sistema d’impressió acostuma a estar constituït pels mòduls següents:

  • Planificador de cues d’impressió (spooler): el gestor de la cua monitoritza la impressora i envia el treball següent en el moment que la màquina queda lliure.
  • Filtres: són les eines que fan la traducció entre les dades d’entrada i el llenguatge que entén la impressora.
  • Backends: són la interfície per a l’enviament de dades al perifèric d’impressió que gestiona i controla el port de comunicació físic (USB, paral·lel, RS232…) o bé la connexió de xarxa (IPP, AppSocket, etc.).

Els principals sistemes d’impressió a Unix/Linux són:

  • LPD: gestor d’impressió d’Unix de la plataforma Unix BSD. És controlat pel dimoni d’impressores de línia (line printer daemon) situat a /usr/sbin/lpd i fa servir el protocol LPD/LPR.
  • LPRng: implementació en codi lliure que millora el sistema d’impressió BDS i que alhora en manté la compatibilitat.
  • CUPS: el sistema d’impressió comú d’Unix és un potent i complet gestor d’impressió basat en el protocol IPP (Internet printing protocol) i que integra PostScript com a llenguatge de definició de pàgines estàndard. CUPS proporciona accés a clients Linux, Windows i Mac OS i està alliberat com a programari lliure amb llicència GNU/GPL.

Altres característiques addicionals proporcionades per CUPS són:

  • Servei de directori: els clients poden trobar i fer servir automàticament impressores de qualsevol servidor de la xarxa.
  • Classes: són grups d’impressores de característiques semblants.
  • Suport clients LPD/LPR: fent servir un minidimoni (CUPS-LPD) que atén totes les tasques d’impressió rebudes per LPD i les redreça al subsistema CUPS tot convertint-les a protocol IPP.
  • Administració web: servidor web per a la documentació, monitorització d’estat i administració del sistema.

Els arxius de configuració del servidor CUPS són:

  • Configuració del servidor: /etc/cups/cupsd.conf. Arxiu principal que conté les directives que defineixen el comportament del servidor, l’accés d’usuaris i equips, ports escoltats, arxius de registre, etc.
  • Definició d’impressores: /etc/cups/printers.conf. Conté la llista d’impressores locals definides amb informació de la cua d’impressió associada o de com està connectada i amb quina interfície.
  • Arxius PPD (PostScript printer description): cada cua d’impressió té el seu propi arxiu de configuració situat al directori /etc/cups/ppd.Aquests arxius contenen les opcions de configuració de la impressora (mida i orientació del paper, resolució, escala, etc.)
  • Classes d’impressores:/etc/cups/classes.conf. Conté la llista de classes d’impressores definides localment.

El planificador de CUPS té tres arxius bàsics de registre: /var/log/access_log per a les peticions HTTP i IPP processades, /var/log/error_log per als missatges d’error, i /var/log/page_log per al llistat de totes les pàgines que han estat impreses.

El client de CUPS es configura mitjançant l’arxiu /etc/cups/client.conf o bé ~/.cups/client.conf, segons si afecta tots els usuaris o un en concret. Aquests arxius defineixen la configuració de xifrat del client i el nom o adreça del servidor que rebrà les sol·licituds del client.

El planificador de CUPS també actua com a servidor web per oferir documentació, monitorització de l’estat de les cues i treballs i administració del sistema d’impressió. Per accedir-hi tan sols cal obrir un navegador i escriure-hi l’adreça http://localhost:631.

La majoria de distribucions disposen del programa system-config-printer, una eina gràfica alternativa per facilitar l’administració del sistema d’impressió.

Les tasques administratives principals de control d’impressió fent servir ordres de consola són:

  • lp/lpr: genera treballs d’impressió.
  • lpstat: llista les impressores i classes disponibles. També permet obtenir identificadors de treballs d’impressió.
  • lprm/cancel: cancel·la un treball d’impressió.
  • lpmove: mou un treball d’impressió a un altra impressora o classe d’impressores.
  • lpadmin: permet fer diferents tasques administratives com ara afegir i retirar impressores d’una classe, determinar el control d’accés dels usuaris a una impressora determinada o bé canviar la configuració de l’arxiu PPD.
  • loptions: permet definir la impressora per defecte i canviar la configuració predeterminada de la impressora.
Anar a la pàgina següent:
Resultats d'aprenentatge