Programación multiproceso

De MediaWiki
Ir a la navegación Ir a la búsqueda

Obxectivos

  • Coñecer os conceptos de programa, proceso, fio e servizo e a relación entre eles.
  • Comprender cómo a técnica do cambio de contexto fai posible a multitarea ou execución simultánea de varios procesos nun mesmo procesador, e un mellor aproveitamento deste.
  • Entender os estados de execución dun proceso e a súa planificación a curto, medio e largo prazo.
  • Identificar os distintos tipos de sistemas multiprocesadores, e a forma na que os diferentes procesadores poden intercambiar información entre sí.
  • Analizar a programación concurrente, a multiprogramación e a programación paralela.
  • Resolver problemas concretos utilizando as clases de Java que permiten crear dinámicamente, e executar, de manera concurrente, novos procesos.
  • Utilizar de xeito efectivo os mecanismos que proporciona Java para xestionar e redireccionar a entrada e a saída estándares e de error de novos procesos creados.

Programas. Procesos, fíos e servizos

Programa e procesos

Un programa conten un conxunto de instruccións que se poden executar directamente nunha máquina. Esta pode ser una máquina física ou, no caso de linguaxes coma Java e .NET, nunha máquina virtual. Un programa é un obxecto estático, normalmente almacenado nun ficheiro binario nun medio de almacenamento secundario, coma pode ser un disco duro.

Un proceso corresponde a unha instancia dun programa en execución. Un proceso é unha entidad dinámica. A execución dun programa comeza coa creación e execución dun proceso; e un proceso pode crear novos procesos se o require.

Para executar un programa, primeiro debe cargarse na memoria. Durante a súa execución, un programa utiliza diversos recursos do sistema:

  • Memoria principal. Consta dunha secuencia de celdas de memoria, todas coa mesma lonxitude en bits, e cada unha identificada pola súa posición. Antes de comenzar a súa execución, un programa debe cargarse nun bloque da memoria principal, que se asigna ó proceso que se crea para executar o programa. Este proceso pode tamén obter máis memoria dinámicamente durante a súa execución.
  • Procesador ou CPU (Central Processing Unit). Executa o proceso que se crea unha vez cargado o programa na memoria. O procesador garda, nun rexistro especial, o contador de programa (PC ou program counter), o enderezo na memoria da instrucción que se está executando. Un proceso non pode operar directamente cos contidos da memoria. Estos deben antes traerse dela e cargarse en rexistros do procesador. As operacións realizanse nunha unidade aritmético-lóxica o UAL (aritmethic and logical unit ou ALU). O seu resultado obtense nun rexistro desde o que se pode transferir a unha posición da memoria.
  • Dispositivos de entrada/saída (E/S). Os procesos comparten os dispositivos de E/S. Debe gardarse información acerca de a qué procesos se lles otorgou acceso a un dispositivo de E/S, e do estado das operacións realizadas sobre él.

Toda la información asociada a un proceso gardase nun bloque de control de proceso (PCB ou process control block). Se o mesmo programa se executa varias veces crearase cada vez un novo proceso, e cada un terá o seu propio PCB.

Porén, un proceso pode crear novos procesos durante a súa execución, que poden a súa vez, crear novos procesos. Desta forma, a partir dun proceso inicial pódese crear unha xerarquía de procesos.

Clasificación dos tipos de procesos

Unha pequena clasificación dos tipos de procesos que se executan no sistema é:

  • Por lotes. Están formados por unha serie de tarefas, das que o usuario só está interesado nu resultado final. O usuario introduce as tarefas e datos iniciais, e deixa que se realice todo o proceso á espera da finalización para obter resultados. Exemplos: impresión de varios documentos, escanear o noso equipo en busca de virus, un programa de cálculo que ten que obter da solución que un algoritmo dará dun problema matemático, etc.
  • Interactivos. É precisa a interacción continua co usuario, que mediante accións suministra datos. Exemplos: o procesador de textos, un formulario que permite introducir datos nunha base de datos, etc.
  • Tempo real. Nestes é crítico o tempo de resposta do sistema. Exeplos: a aplicación GPS que nun dispositivo móvil nos guía, os equipos que controlan os brazos mecánicos en procesos industriáis de fabricación, etc.

Fíos

Para crear un proceso é preciso reservar espacio na memoria para él, o que require unha cantidade considerable de tempo e recursos do sistema. A comunicación entre procesos requiere de certos mecanismos especiais que se verán na sección correspondente.

Os fios ou febras (threads) denomínanse tamén procesos lixeiros (lightweight processes). A creación dun novo fío para un proceso existente faise de manera sinxela e rápida xa que non require reservar e inicializar espazo na memoria porque esta é compartida por todos os fíos dun mesmo proceso. Con isto a comunicación entre eles faise moi sinxela: se un fío dun proceso modifica un obxecto situado na memoria, os demáis fios do mesmo proceso poden ver os cambios realizados. Precísanse mecanismos de sincronización entre fios para evitar problemas que poden darse se os distintos fios modifican sen control obxectos situados na memoria compartida.

Como veremos máis adiante, o planificador a corto plazo ou CPU scheduler é quen xestiona de maneira independente os distintos fíos dun mesmo proceso.

Un proceso en execución ten inicialmente un fio. A ejecución dun proceso termina cando finaliza a execución de todos os seus fíos. E do mesmo xeito, se se termina a execución dun proceso, acábase tamen coa execución de todos os seús fíos.

Servizos

Os servizos son un tipo particular de proceso que proporcionan determinados servizos (valga a redundancia) a outros procesos. Execútanse en segundo plano (en background) sen ser directamente utilizados polos usuarios.

Os servizos executanse continuamente sendo normalmente iniciados polo sistema operativo durante o seu arranque. Adoitan proporcionar información acerca da súa execución en ficheiros de log, nos que van anotando todos os eventos que se producen durante a súa execución e detalles acerca das accións que realizan.

Poden proporcionar servizos a outros procesos no mesmo ordenador ou a outros ordenadores. Neste último caso, adoitan comunicarse a través dunha red de comunicaciones utilizando protocolos de rede estándares coma TCP ou UDP (da familia de protocolos TCP/IP). Este tipo de servizos en rede son un compoñente fundamental dos sistemas distribuidos. Neste contexto as aplicacións servidoras (sevidores) prestan servizo a outras aplicacións (Clientes) que utilizan estes servizos. Como cabe supoñer, unha aplicación pode actuar á vez como cliente e como servidor, proporcionando un servizo a outras aplicacións e o mesmo tempo utilizar os servizos que proporciona outra aplicación.

Un servidor multifío é unha técnica habitual dos servizos para mellorar o tempo de resposta ante peticións de servizos de outros procesos. Consiste en crear un novo fío para responder a cada nova petición recibida, ou ben manter un pool de fíos, de xeito que a cada nova petición se lle pode asignar inmediatamente un fío xa disponible no pool. Así o fío principal queda libre para recibir novas peticións.

Cada sistema operativo ten os seus propios mecanismos para xestionar os servicios, xa sexa para arrancar, reiniciar ou parar servizos, ou configuralos para o seu arranque automático ó iniciar o sistema.

Servizos en Windows

O administrador de servizos (services.msc) permite arrancar e deter servizos, así como consultar o estado de execución e obter información adicional acerca de cada un. Permite tamén configurar o modo de arranque para cada servicio:

  • automático: se inicia automáticamente en cada arranque do sistema operativo
  • automático (inicio retrasado): agarda a que o sistema operativo se teña cargado e se inicia automáticamente
  • manual: iniciase cando unha aplicación o precisa
  • manual (desencadenar inicio): só se iniciará se non hai demasiados servizos en execución
  • deshabilitado: o servizo non se pode iniciar

Servizos en Linux

Existen sofisticados sistemas para a xestión, control e configuración de servizos.

O antiguo sistema initd de System V está sendo desplazado polo novo systemd . Para systemd utilízase o comando systemctl.

Para amosar unha lista con todos os servizos existentes no sistema:

$ systemctl list-unit-files
Aqueles para os que se amosa enabled na columna STATE arrancan automáticamente cando inicia o sistema.

Para amosar todos os servizos cargados no sistema:

$ systemctl --type=service
Que estén cargados non significa que estén en ejecución actualmente (o estado de execución aparece na columna SUB).

Para cada servicio, se pueden ejecutar comandos del tipo:

$ systemctl acción servizo

Onde:

  • servizo é o nome do servicio
  • acción e o que se desexa realizar sobre el servicio.

As accións disponibles son:

Acción Función
status Amosa o estado de execución do servizo.
start / stop / restart Arranca/para/reinicia o servizo.
reload Alternativa a restart. Utilízase para que o servicio tome en consideración os cambios realizados na súa configuración pero sen reiniciar o servizo.
enable / disable Establece que el servicio arranque / no arranque automáticamente cuando arranca el sistema.

Multitarefa

Os sistemas operativos que se utilizan na maioría dos casos na actualidade permiten executar múltiples procesos simultáneamente. É posible escoitar música e navegar por internet mentres se están transferindo ficheiros dun cartafol a outro, aínda que só exista un procesador no sistema. Como é posible? A execución dun prodceso detense a intervalor regulares de tempo; nese intre toma o control un programa especial do sistema operativo, que pode parar a execución do proceso actual e pasar a executar outro proceso de ser preciso.

A multitarefa (multitasking consiste na execución simultánea de máis dun proceso nun procesador o longo dun intervalo de tempo

A rápida alternancia entre procesos permite xerar ó usuario a ilusión de que se están executando simultaneamene aínda que en cada momento haí realmente un único proceso en execución.

Cómo é que se fai para alternar a execución entre procesos? Faise mediante o que se denomina cambio de contexto: antes de empezar a executar un novo proceso, gárdase o estado de execución do proceso actual para poder retomar máis adiante a súa execución no mesmo punto onde foi interrumpido. O que se garda son os contidos do contador de programa (PC) e os rexistros do procesador, para a continuación ser cambiados eses datos polos do novo proceso.

O rendemento dun sistema aumenta se dispón de máis dun procesador (sistema multiprocesador). Neste caso, podense executar en paralelo varios procesos, un en cada procesador.

Normalmente sempre haberá moitos máis procesos que procesadores, polo que tamén no caso dos sistemas multiprocesadores, farase multitarefa en cada procesador.

Se puede pensar que, cuando solo se dispone de un procesador, no compensa la multitarea, porque, al tiempo de ejecución de los procesos, hay que sumar el tiempo necesario para los cambios de contexto, además del tiempo que necesita el sistema operativo para planificar la ejecución de los distintos procesos. Mais non é así porque:

  1. Tempo adicado: o tempo que se adica a isto é pequeno en comparación con que se adica á execución dos procesos e se pode xustificar coas ventajas de executar varios procesos ó mismo tiempo, especialmente para sistemas interactivos nos que hai unha frecuente interacción entre o usuario e o ordenador. Os usuarios fan xeralmente varias cousas á vez, e desexarán que todas avances e teñan unha resposta rápida cando intercuantuan con calquera das mesmas.
  2. Uso do procesador: durante a execución dos procesos, adoita haber períodos moi longos de tempo nos que non se fai uso do procesador por estar esperando a que finalicen operacións de E/S. Por exemplo, no traballo cun procesador de textos, o procesador pasa a maioría do tempo desocupado esperando a que o usuario escriba ou realiza algunha acción co rato; ou mentres obten o contido almacenado nun ficheiro ou graba os cambios do documento nun ficheiro.

A figura amosa a execución de dous procesos que alternan periodos de uso do procesador con periodos de espera para que se realicen operacións de E/S; o tempo total de execución e só lixeiramente superior o de calquera deles por serapada, xa que en xeral é posible utilizar o procesador para ou outro procesa mentras un está a espera de que se complete unha operación de E/S.

Sistemas monoprocesadores e multiprocesadores

Un sistema monoprocesador ten un único procesador mentres que un sistema multiprocesador ten varios. En ambos podense executar varios procesos de xeito simultáneo mediante técnicas de programación concurrente que permiten a comunicación e sincronización entre procesos.

Denominanse procesos concurrentes os que se executan simultáneamente durante un intervalo de tempo:

  • de forma real (en sistemas multiprocesadores)
  • de forma simulada (en sistemas monoprocesadores, ou nun mesmo procesador dun sistema multiprocesador).

Falase de programación concurrente:

  • cando se executan varios procesos concurrentes nun sistema
  • para facer referencia ás técnicas que permiten o desenvolvemento de programas que utilizan varios procesos concurrentes que funcionan de forma conxunta e coordinada para realizar unha tarefa.

Sistemas monoprocesadores

A execución concurrente de varios procesos nun sistema monoprocesador se conoce con el nombre de multiprogramación. Coa técnica do cambio de contexto permítese unha multitarefa efectiva e un mellor aproveitamento do procesador, xa que se asigna a outro proceso durante o tiempo no que un proceso está inactivo ou á espera de que se termine de realizar unha operación de E/S.

Os procesadores multinúcleo (multicore en inglés: dual-core con dous núcleos, quad-core con catro núcleos, hexa-core con seis núcleos e octa-core con oito núcleos) conteñen varios núcleos ou unidades de proceso integradas. Porén pódense considerar un tipo de sistemas multiprocesadores aínda que con importantes diferencias con respecto a sistemas multiprocesadores con procesadores independentes.

Sistemas multiprocesadores

Os sistemas multiprocesadores son os que dispoñen de máis de un procesador. A programación paralela consiste na execución de varios procesos concurrentes nun sistema multiprocesador. Estos procesos podense executar con paralelismo real. Úsase tamén este termo para referencias ás técnicas que permiten desenvolver programas que utilizan varios procesos concurrentes que poden executarse en distintos procesadores dun sistema multiprocesador. Estas serán distintas segundo o tipo de sistema multiprocesador de que se trate; pero as linguaxes de alto nivel proporcionan bibliotecas de funcións ou de clases que permiten facer abstracción da arquitectura e utilizar as mesmas operaciones, que se implementarán de distinta maneira segundo a plataforma concreta.

Pódense clasificar dependendo da súa arquitectura en formentente acoplados ou débilmente acoplados

Sistemas fortemente acoplados

Nestes sistemas existe unha memoria compartida para todos os procesadores. Todos eles acceden a mesma e ó sistema de E/S a través do mismo bus de conexión.

Podense distinguir dous tipos de sistemas multiprocesadores fortemente acoplados:

  1. Sistemas multiprocesadores simétricos (SMP): os procesadores do sistema funcionan todos de igual xeito sen que ningún se diferencie do resto.
  2. Sistemas multiprocesadores asimétricos (tamén denominados master-slave): un dos procesadores do sistema, o maestro ou master, controla ó resto dos procesadores (slave).

Sistemas débilmente acoplados

Nestes sistemas non hai memoria compartida; cada procesador ten a súa propia memoria e o seu propio sistema de E/S, e o que existe é unha rede de comunicacións entre os procesadores.

Para esa rede, hai tres posibilidades:

  1. Que os procesadores estén físicamente cercanos uns ós outros e comunicados mediante unha rede a medida de alta velocidade e con unha estructura regular. Este tipo de sistemas utilízanse en supercomputación e para aplicacións especializadas intensivas en cálculo.
  2. Que estén formados por ordenadores convencionales conectados mediante unha rede de área local convencional, formando o que se denomina un cluster. Neste caso non hai unha rede especializada deseñada a medida, nin processadores de alto rendemento. Cabe destacar dentro desde grupo os clusters Beowulf nos que existe un ordenador que funciona como controlador do cluster e como servidor de ficheiros para él, e que se usa como consola para todo o cluster. Os nodos só son accesibles a través do controlador polo que non adoitan ter teclados nin monitores. O controlador e todos os nodos funcionan con sistemas operativos de tipo UNIX ou Linux convencionais nos que se instala determinado software, e para engadir añadir un novo ordenador ou nodo só é preciso conectalo á rede.
  3. Que os procesadores estén en ordenadores independentes comunicados mediante unha rede de área amplia (WAN) ou a través de internet. Estes son los sistemas distribuidos, caracterizados pola heteroxeneidade do hardware sobre o que están construidos e pola relativa independencia entre os sistemas que os constituen. Nun sistema distribuido non hai memoria compartida nin rede de conexión específica entre os distintos ordenadores; a comunicación entre procesos realízase mediante mensaxes a través da rede de comunicacións que comunica os distintos ordenadores, para os que adoitan utilizarse os protocolos de rede estándares TCP o UDP.
A programación distribuida consiste na execución de varios procesos concurrentes nun sistema distribuido. Útilizase tamén este termo para referenciar ó desenvolvemento de programas que utilizan varios procesos concurrentes que poden executarse en distintos procesadores dun sistema distribuido, e as técnicas que o fan posible.

As principales vantaxes dos sistemas distribuidos é que son altamente escalables e configurables; os seus inconvintes é que son sistemas heteroxéneos e complexos de manter, e que a sincronización entre procesos pode ser complexa también. Ademáis, a comunicación entre procesos faise a través da rede, que ten unha velocidade limitada e que polo tanto pode convertirse nun cuello de botella.

Ventaxas e inconvintes da programación concurrente

A programación concurrente permite incrementar o rendemento do sistema porque os procesadores pasan a executar outros procesos cando o proceso que executan está desocupado ou á espera de que termine unha operación de E/S. Tamén fai posible un menor tempo de resposta, porque o tempo de procesador distribúese entre todos os procesos en execución. A mellora no rendemiento dependerá en todo caso do tipo de aplicacións, e a súa implementacón.

O ideal é que unha aplicación poida descompoñerse en procesos independentes que se executen en paralelo cun mínimo de interacción e comunicación entre eles.

Un sistema multiprocesador debe ser flexible para permitir distribuir dinámicamente a carga de traballo entre os procesadores disponibles; e debe ser escalable para permitir que a potencia de cálculo aumente coa instalación de novos procesadores.

Un sistema multiprocesador redundante ten procesadores suplementarios que proporcionan alta disponibilidade (baixo tempo de resposta ante peticións dos usuarios) e tolerancia a fallos, de xeito que se se produce un fallo nun procesador, pódese deshabilitar para seguir funcionando co resto.

Os inconvenientes da programación concurrente:

  • a dificultade de implementar mecanismos axeitados de sincronización e comunicación entre procesos; nalgúns casos é posible que a sobrecarga que supoñen anule a mellora no rendemento que proporciona a execución concurrente.
  • en sistemas distribuidos, a rede podería convertirse nun cuello de botella se non ten a suficiente capacidade para o tráfico que xenera o intercambio de mensaxes entre procesos.

Kernel e chamadas ó sistema

A parte central do sistema operativo denomínase kernel ou núcleo; e un parte pequena e moi optimizada do sistema operativo que da respuesta a multitude de eventos mediante un mecanismo de xestión de interrupcións. As interrupciones podense producir por diversas causas:

  • Eventos xenerados polo hardware. Por ejemplo: pulsacións do teclado ou movemientos do ratón; ou o final dunha operación de lectura ou escritura en disco.
  • chamadas ó sistema. O kernel proporciona acceso para as aplicacións a determinados servizos ou funcionalidades do sistema operativo mediante chamadas ó sistema.
  • Interrupcións periódicas que invocan ó planificador de procesos a corto plazo do sistema operativo (CPU scheduler). Éste decide se segue executando o proceso actual ou se fai un cambio de contexto para pasar a executar outro proceso.

Cando sucede unha interrupción, o procesador deixa de executar o proceso en curso e pasa a executar unha rutina de tratamento de interrupción. Cando esta finaliza, reanúdase a execución no mesmo lugar en que estaba antes da interrupción.

O procesador ten dous modos de funcionamiento:

  • modo kernel, ou supervisor. As rutinas de tratamento de interrupcións execútanse en modo kernel.
  • modo usuario.
As chamadas ó sistema adoitan estar escritas nunha linguaxe de baixo nivel, normalmente C ou ensamblador. Estas chamadas pódense invocar desde código en C ou ensamblador, pero normalmente os programas de aplicación as chaman través de API de máis alto nivel e non directamente. Por ejemplo, POSIX en Linux, e Win32 ou Win64 en Windows.

Estados de execución dun proceso

Desde que se crea inicialmente un proceso, pode pasar por diversos estados e cambiar duns a outros. O sistema operativo xestiona os procesos e realiza os cambios de estado, tendo en conta distintos eventos que poden suceder durante o ciclo de vida do proceso que se amosa na figura.


Niveles de planificación

Os cambios de estado dos procesos están controlados polo sistema operativo co obxectivo de conseguir:

  • por un lado, un máximo aproveitamento dos recursos do sistema e en particular do procesador ou procesadores
  • por outro lado, unha execución o máis eficiente posible de todos los procesos, o que se acada cunha planificación a varios niveles:

Planificador a largo plazo ou de traballos (job scheduler)

Un proceso debe estar en la memoria principal para poderse ejecutar. O planificador a largo plazo decide qué procesos son admitidos para a súa execución. Estes se cargan na memoria principal e pasan a estado listo (ready). En sistemas operativos interactivos, como os que manexan a maioría dos usuarios en sistemas de sobremesa, non hai propiamente planificación a largo plazo, e son os propios usuarios quenes lanzan as aplicacións; e estas se cargan inmediatamente na memoria, e pasan a estado listo. En cambio é importante en sistemas onde hai moitos procesos non interactivos e é o propio sistema operativo o que gestiona o seu lanzamento.

Planificador a corto plazo ou de procesador (CPU scheduler)

Realízase para procesos cargados na memoria principal.

O seu obxectivo é repartir o tiempo de procesador entre todos os procesos, de xeito que se consiga un máximo aproveitamento do procesador, e que os procesos se executen da maneira máis eficiente posible. Un proceso en estado listo pode pasar a estado en execución e empezar a executarse no procesador. Un proceso en este estado pode volver a estado listo para permitir que outro proceso se execute. Cando un proceso en execución realiza una operación de E/S, pasa a estado bloqueado, e se pasa a executar un novo proceso cuxo estado cambia de listo a en execución. Cando a operación de E/S teña rematado, o proceso volverá a estado listo. O planificador a curto prazo funciona baseándose en interrupcións periódicas que fan que o procesador pase inmediatamente a executar una rutina de xestión de interrupción, que é parte do núcleo (kernel) do sistema operativo. Esta rutina realiza a planificación a curto prazo, e decide se hai que continuar coa execución do proceso actual, ou se hay que pasar a executar un novo proceso; e no seu caso, cal sería.

Planificador a medio plazo

Xestiona o paso de procesos da memoria principal á secundaria (suspensión) e viceversa (reanudación).

Os sistemas operativos actuais funcionan, en xeral, con memoria virtual. Esta é unha técnica que utiliza un espacio de direccións virtual, maior que a disponible na memoria física, e utiliza para isoo un medio de almacenamiento secundario. O contido de calquera enderezo da memoria virtual pode estar na memoria física (memoria principal) ou en almacenamiento secundario (memoria secundaria). Pero o microprocesador so puede acceder directamente á memoria principal. Cando un proceso necesita máis memoria da que hai disponible nela, conséguese pasando parte dos seus contenidos á memoria secundaria. Cando se precisan contidos que están na memoria secundaria, deben pasarse antes á memoria principal. Se non hai suficiente espacio na memoria principal, antes hai que pasar algúns dos seus contenidos á memoria secundaria.

Prodúcese así un intercambio ou swap entre as memorias principales e secundaria. A memoria virtual funciona ben se os intercambios so se producen ocasionalmente, porque as operacións de lectura e escritura en almacenamiento secundario son moi lentas. Se pola contra son demasiado frecuentes prodúcese un trasiego constante entre as memorias principal e secundaria (trashing), e o rendimiento do sistema se degrada enormemente.

Os procesos na memoria principal que non se están executando pueden suspenderse, e pasan á memoria secundaria nos estados suspendido listo e suspendido bloqueado. Desde o estado suspendido bloqueado pode pasar ó estado suspendido listo se se completa a operación de E/S que provocou o seu paso a estado bloqueado. Tamén poden reanudarse os procesos nestos estados para pasar á memoria principal.

Para a xestión dos procesos, o sistema operativo utiliza un bloque de control de procesos (PCB) para cada proceso. O sistema operativo mantene colas de procesos para cada un dos estados. Tamén manten colas para cada dispositivo de E/S, con información dos procesos que teñen operacións pendentes no devandito dispositivo. A utilización destas colas permite realizar de xeito moi eficiente a planificación de procesos.

Resumo

  • Un programa é un obxecto estático que conten instruccións e datos. Adoita ser almacenado nun ficheiro binario nun medio de almacenamento secundario.
  • Un proceso é un obxecto dinámico que se xenera cando se carga un programa na memoria principal e se executa.
  • A multitarefa permite a execución de máis dun proceso nun procesador. O procesador vai executando alternativamente distintos procesos.
  • Para pasar dun a outro realízase un cambio de contexto. A primeira parte deste proceso consiste en salvaguardar o estado de execución actual do proceso que se está executando actualmente de xeito que despois se poida restaurar para seguir coa súa execución; esta técnica utilízase tanto en sistemas monoprocesadores como en sistemas multiprocesadores.
  • Os sistemas operativos realizan planificación de procesos a corto, medio y largo plazo
    • A planificación a curto prazo realizaa o núcleo ou kernel. Cando un proceso realiza una operación de E/S, realízase un cambio de contexto para pasar a executar outro proceso, e así aproveitar mellor o procesador,.
    • A planificación a medio prazo encárgase do paso de procesos da memoria principal á secundaria e viceversa.
    • A planificación a largo prazo encárgase da preparación de novos procesos para que comece a súa execución, e dos procesos que rematas a súa execución.
  • Os sistemas multiprocesadores pueden ser:
    • fortemente acoplados cando os procesadores comparten memoria
    • débilmente acoplados se non a comparten.
  • Un tipo particular de sistemas débilmente acoplados son os sistemas distribuidos.
  • Un fío pertence a un proceso. Un proceso ten inicialmente un fío de execución mais pero pode crear novos sobre a marcha.
  • Os distintos fíos dun mesmo proceso comparten a memoria, polo que a creación dun novo fío é moito máis rápida que a de un novo proceso.
  • Un servizo é un tipo particular de proceso que se executa en segundo plano (en background), que non ten interfaz de usuario; porén con el non interactúan directamente os usuarios, e só proporciona servizos a outros procesos que poden ser:
    • procesos locáis (que se executan no mesmo sistema)
    • ou remotos (que se executan noutros sistemas e se comunican cos servizos mediante protocolos de rede)

Práctica

Glosario

  • Cambio de contexto. Mecanismo que permite a execución dun novo proceso na memoria, e que inclue a salvagarda previa do estado de execución do proceso actual.
  • Fío (thread). Unidade de execución para un proceso existente que utiliza o seu espazo na memoria; porén, non require da reserva e inicialización dun espazo na memoria.
  • Núcleo do sistema operativo (Kernel). Parte central do sistema operativo que xestiona as interrupcións e que se encarga da planificación de procesos a curto prazo.
  • Multiprogramación. Execución concurrente de varios procesos nun sistema monoprocesador; o procesador é asignado a outro proceso cando un proceso realiza unha operación de entrada/saída para así maximizar o aproveitamento do procesador.
  • Multitarefa. Execución de máis dun programa por un único procesador, realizando cambios de contexto para alternar a súa execución o longo do tempo.
  • Planificación a curto plazo (CPU scheduling). A planificación de procesos a curto prazo é unha parte do kernel do sistema operativo, que se invoca en resposta a interrupcións periódicas, e decide qué proceso se vai a executar a continuación.
  • Proceso. Programa cargado na memoria.
  • Programa. Conxunto de instruccións e datos para unha máquina específica. O programa pódese executar nun procesador unha vez cargado na memoria.
  • Servizo en red. Servizo que se presta a procesos remotos cos que a comunicación se realiza mediante protocolos estándares de rede.
  • Servizo. Proceso co que non interactúan directamente os usuarios; son outros procesos os que lle requieren que lles proporcione un determinado servizo.
  • Sistema distribuido. Sistema multiprocesador no que os procesadores están en ordenadores autónomos que se comunican entre sí a través dunha rede de comunicacións.
  • Sistema monoprocesador. Sistema que dispón dun único procesador.
  • Sistema multiprocesador. Sistema que dispón de máis dun procesador.

Creditos y referencias