gestión de procesos
DESCRIPTION
Getión de proceso en los sistemas operativosTRANSCRIPT
Se define el término proceso, como unprograma con su entorno de trabajo(Stallings,2011)
Proceso = Programa + entorno de trabajo
Según Silberschatz y otros (2009), esnecesario diferenciar entre programa yproceso así:
¡ Programa:Listado deinstrucciones.Entepasivo.Sealmacenaenarchivos.
¡ Proceso:Programaenejecución.Enteactivo.Laejecucióndeunprogramarequierecargarlopreviamenteenmemoria.
• Stack (variables locales, direcciones de retorno, parámetros...) (pila)
• Heap (memoria dinámica ejemplo: instancias / objetos)
• Data (variables globales)
• Text (código)Text
data
Heap
Stack
Proceso en memoria
Si un SO en una máquina con un soloprocesador, desea brindar la posibilidad deejecutar múltiples procesos “al mismo tiempo”,deberá atender uno a la vez durante unintervalo de tiempo, para luego conmutar aotro proceso.
Si la conmutación se realiza rápidamente, elusuario tendrá la sensación de que el SO estáhaciendo todo al mismo tiempo.
Unprocesopuedeestarenunodetresestadosposibles:
¡ Nuevo:Elprocesoestasiendocreado
¡ Listo:Estadoenelqueseencuentranunoovariosprocesosquenecesitantiempodeprocesadorparainiciarocontinuarsuejecución.
¡ Ejecución:Estadoenelqueseencuentraelprocesoqueactualmentetienelecontroldelprocesadoryestaejecutandoinstrucciones.
¡ Espera:Estadoenelqueseencuentrantodoslosprocesosquerequierenqueuneventosucedaparacontinuarsuejecución.Aunquetuvieranelcontroldelprocesador,nopodríancontinuarsuejecución.
¡ Terminado:Elprocesohaterminadosuejecución
Listo Ejecución
Espera
Nuevo Terminado
Asignación de CPU
Interrupción
Admitidos
Salida
E/S o eventode espera
E/S o eventode finalización
Multiprogramación
CPU
¡ Ejecutar:CargaelprocesoenmemoriaycolocaladireccióndelPCBenlalistadeprocesoslistos.
¡ Cancelar:Retiraadecuadamentedelalista(ListooEspera),ladireccióndelPCBdelprocesoysiestáenejecución,termina.
¡ Suspender:PasaladireccióndelPCBdelprocesodelalistadeprocesoslistosaladeprocesosenesperay,siseestáejecutando,conmutaaotro.
¡ Reanudar:PasaladireccióndelPCBdelprocesodelalistadeprocesosenesperaalalistadeprocesoslistos.
¡ El sistema operativo debeguardarla información delos procesos para quepueda conmutar de unproceso a otro
¡ Esta información seconoce teóricamentecomo el PCB (ProcessControl Block) del proceso.
La información que el PCB puedetener, varía según la arquitectura dela máquina y el diseño del SistemaOperativo, pero debe incluir comomínimo lo siguiente:
¡ Estadoactualdelproceso.
¡ Últimovalordelosregistrosdelprocesador.
¡ Númeroidentificadordelprocesodentrodelsistema(PID).
Lista de archivos abiertos
Limites de memoria
Valor de los registros de la
CPU
Estado del proceso
Identificación del proceso (PID)
…
Tambiénpuedecontener:
¡ Privilegios.
¡ Dueñodelproceso.
¡ Tiempodeprocesamiento(usadoparaserviciosdecobrodeuso).
¡ Prioridad.
¡ Límitedelamemoriaasignada.
Así como cada proceso tiene su PCB, el SistemaOperativo tiene un SCB (System Control Block), en elcual almacena toda la información necesaria para laejecución apropiada del Sistema Operativo. Entre lainformación existente en el SCB tenemos:
¡ UbicacióndelosPCB.
¡ Ubicacióndelasfuncionescontroladorasdelsistema.
¡ Cantidadderecursosdisponibles.
¡ Cantidadderecursosasignados.
¡ Elcambiodecontextoeselnombrequerecibeelmecanismomedianteelcual,laCPUesasignadadeunprocesoaotro.
¡ CuandoelSistemaOperativotomaelcontroldelprocesador,ésteguardaelPCBdelprocesoactualyrecuperaelPCBdelprocesosiguiente.
¡ Eltiempoempleadoenelcambiodecontextoesconsideradosobrecarga,debidoaqueelsistemaNOrealizatrabajoútilmientrastanto
¡ Eltiempoempleadodependedelsoportedehardware
El Sistema Operativo puede interrumpir laejecución de un proceso para tomar controldel procesador (Multiprogramación).
¡ Cada10milisegundoselSOinterrumpelaejecucióndelprocesoactualydecidesicontinúaconelprocesoactualoconmutaaotroproceso.EstalaboresrealizadaporelPlanificadordeProcesosdelSO.
¡ El Sistema Operativo tendrá que esperar aque el proceso termine su ejecución normalpara poder tomar el control(Monoprogramación).
¡ Multiprocesador: Sistema con variosprocesadores trabajando cooperativamentepara atender varios procesos.
¡ Multicomputadora: Sistema donde variascomputadoras trabajan cooperativamentepara resolver varios problemas.
¡ Coladetrabajos:Conjuntodetodoslosprocesosenelsistema
¡ Coladelistos:Conjuntodeprocesosqueresidenenmemoriaprincipal,listosyenesperadeserejecutados
¡ Colasdedispositivos:conjuntodeprocesosesperandoporundispositivodeE/S
¡ Losprocesosmigranentrelasdistintas colas
Un planificador de procesos es parte de un SO que se encarga de la toma de decisiones de selecciónsobre los procesos. Existen tres tipos de planificadores básicos:
1. Planificador de largo plazo: Llamado “planificador de trabajos”. Controla el número deprocesos en memoria. Selecciona que proceso entrar en la cola de procesos listos. Lo idealsería que la tasa de creación y salida de procesos fuese igual. Sólo se invoca con la ejecución ocancelación de un proceso.
2. Planificador de corto plazo: Llamado “planificador de procesos” o “planificador de CPU”.Selecciona un proceso que se encuentre en la memoria principal (procesos listos) paraasignarle el procesador.
3. Planificador de mediano plazo: Llamado “planificador de swapping”. Encargado de bajar aldisco algunos procesos para reducir la competencia del procesador (disminución de la cargadel sistema).
Para poder utilizar los tres planificadores, necesitamos entonces como mínimo cinco estados paralos procesos.
¡ ElPlanificadordecortoplazoesinvocadomuyfrecuentemente(milisegundos)⇒ (debeserrápido)
¡ ElPlanificadordelargoplazoseinvocaconpocafrecuencia(segundos,minutos)⇒ (puedeserlento)
§ Controlaelgradodemultiprogramación
¡ Losprocesossepuedendescribircomo:§ ProcesosasociadosaE/S: PasanmástiempohaciendoE/Squécálculos,muchaspequeñasexplosionesdeCPU.
§ ProcesosasociadosalaCPU: Pasanmástiempohaciendocálculos;pocasperomuylargasexplosionesdeCPU.
Todo Sistema Operativo que brinde el servicio demultiprogramación debe también, brindarle al usuario unmínimo de operaciones para controlar los procesos, tales como:
¡ Ejecutar:CargaelprocesoenmemoriaycolocaladireccióndelPCBenlalistadeprocesoslistos.
¡ Cancelar:Retiraadecuadamentedelalista(ListooEspera),ladireccióndelPCBdelprocesoysiestáenejecución,termina.
¡ Suspender:PasaladireccióndelPCBdelprocesodelalistadeprocesoslistosaladeprocesosenesperay,siseestáejecutando,conmutaaotro.
¡ Reanudar:PasaladireccióndelPCBdelprocesodelalistadeprocesosenesperaalalistadeprocesoslistos.
¡ UnProcesopadrecreaprocesoshijos,que,asuvezpuedencrearotrosprocesos,formandounárbol
¡ Esquemasparacompartirrecursos§ Padresehijoscompartentodoslosrecursos§ Loshijoscompartenunsubconjuntodelosrecursosdelpadre
§ Padreehijonocompartenrecursos
¡ Esquemasdeejecución§ Padreehijoseejecutandemanera“concurrente”§ Padreesperahastaqueelhijotermina
¡ Espaciodedirecciones§ Hijoduplicadodelpadre§ Secargaunprogramaenelhijo
¡ EjemplosUNIX§ fork llamadaalsistemaparacrearnuevosprocesos
§ exec llamadaalsistema,despuésdefork parareemplazarelespaciodememoriadelprocesoconunprogramanuevo
int main(){pid_t pid;
/* fork another process */pid = fork();if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");exit(-1);
}else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);}else { /* parent process */
/* parent will wait for the child to complete */wait (NULL);printf ("Child Complete");exit(0);
}}
¡ Elprocesoejecutasuúltimoenunciadoylepidealsistemaoperativoqueloborre(exit)§ Datosdesalidadehijoapadre(víawait)§ RecursosdelprocesosonliberadosporelSO
¡ Elpadrepuedeterminarlaejecucióndeunprocesohijo(abort)§ Elhijoexcediólosrecursosasignados§ Latareaasignadaalhijoyanoesnecesaria§ Sielpadreestáterminando▪ Algunossistemasoperativosnopermitenaloshijoscontinuartrabajando▪ Todosloshijossonterminados– terminaciónencascada
¡ Enunsistemaquesoportemultiprogramación omultiprocesamiento,básicamenteexistendostiposdeprocesos,procesosindependientes yprocesoscooperativos.
¡ Ladiferenciafundamentalentreestosdostiposdeprocesosesqueentrelosprocesosindependientesnoexisterelaciónalguna,esdecir,estosprocesosnoafectanynosonafectadosporotrosprocesos.Porelcontrariolosprocesoscooperativossipuedenafectaroserafectadosporotrosprocesos.
40 de6
¡ Cuandodosomásprocesoscooperanparasolucionarunproblema,yaseaenunsistemaconunoovariosprocesadores,sedicequeestosprocesostrabajandeformaconcurrente.
¡ Estáclaroqueparaqueexistaconcurrenciaessistemasdeunsoloprocesador,esnecesarialaexistenciadelamultiprogramación.Sinembargolapresenciadelamultiprogramaciónnoescondiciónsuficienteparaqueexistalaconcurrencia.
41 de6
¡ Unprocesopuedeverseafectadoporotrocuandounoomásdelosrecursosdesoftwareodehardwarequenecesitaparaoperarcorrectamente,sonrequeridosocompartidospormásprocesos.
¡ Paraqueexistanprocesoscooperativosesnecesarioqueelsistemaoperativobrindeserviciosdecomunicaciónysincronización,esdecir,quelosprocesospuedan“hablar”paracompartirinformaciónycontrolarelaccesoconcurrente.
¡ LacooperacióndeprocesosnecesitalacomunicaciónentreprocesollamadaIPC porsussiglaseninglés(InterProcessCommunication)
¡ Losmecanismosdesincronizacióntienencomoobjetivo:§ Elcontroldeaccesoalosrecursoscompartidosdehardwareosoftware.
§ Laasignaciónderecursos.
§ Elcontrolarelflujodeejecución(elprocesoPsólodebeejecutarsecuandoseejecutecompletamenteelprocesoQ).
43 de6
¡ Existendosesquemascomplementariosdecomunicaciónentreprocesos:
§ Mensajeríaentreprocesos(Pasodemensajes):Enesteesquemaelsistemaoperativoeselenteresponsabledelacomunicación,porquemuevelainformacióngeneradaporunproceso(mensaje)haciaotro.
§ Memoriacompartida:Enestossistemas losprocesoscompartenunazonadememoriaobufferporelcualellossecomunican.Enesteesquemalacomunicaciónesresponsabilidadexclusivadelosprocesos,esdecir,elsistemaoperativosólobrindalaposibilidaddecompartirmemoria.Laformadeutilizarlaparacomunicarsedependedelosprocesosynodelsistemaoperativo.
44 de6
Seacualseaelmétodoqueseseleccione,debedarsesolucióndemaneramuyclara,entreotros,alossiguientesinterrogantes:
¡ ¿Cuálessonlospasosquesedebenseguirparacomunicardosprocesos?
¡ ¿Sepuedecrearunmediodecomunicacióncompartidopormásdedosprocesos?
¡ ¿Cuántosmediosdecomunicaciónpuedenhaberentredosprocesos?
46 de6
¡ ¿Cualeslacapacidaddealmacenamientodeuncanaldecomunicacióncuandounprocesotrasmiteperoelotronopuedeatenderlo?
¡ ¿Unprocesopuedemantenermásdeuncanaldecomunicaciónabiertoalmismotiempo?
¡ ¿Cualeseltamañomáximodeinformación(porpaquete)quesepuedeenviarporuncanaldecomunicación?
¡ ¿Enunacomunicaciónentredosprocesosusanuncanalsimplex (unidireccional),halfduplex (bidireccionalnosimultáneo),fullduplex(bidireccional)?
47 de6
¡ ¿Comohaceunprocesoparainterrumpiroterminarunenlacedecomunicación?
¡ ¿Quépasaconlainformaciónqueaunnohasidoprocesada,cuandoambosprocesosterminansuejecución,osielcanalesinterrumpido?
¡ ¿Quépasacuandounprocesodeseacomunicarseconotroqueenelmomentonoseestáejecutando?
48 de6
¡ ProcesosIndependientes: Nopuedenafectaroserafectadosporlaejecucióndeotrosprocesos
¡ ProcesosCooperativos:Puedenafectaroserafectadoporlaejecucióndeotrosprocesos
¡ Ventajasdelacooperaciónentreprocesos:§ Intercambiodeinformación§ Incrementarlavelocidaddecómputo§ Modularidad
¡ Paradigma para procesos cooperativos, proceso productor genera información para un proceso consumidor
§ Con buffer no-acotado no impone un límite práctico para el tamaño del buffer
§ Con buffer acotado asume que existe un buffer de tamaño fijo
¡ Datoscompartidos#defineBUFFER_SIZE 10typedefstruct {...
}item;
itembuffer[BUFFER_SIZE];int in=0;intout =0;
¡ LasoluciónescorrectaperosólopuedeutilizarBUFFER_SIZE-1elementos
while (true) {/* Produce an item */while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* do nothing -- no free buffers */buffer[in] = item;in = (in + 1) % BUFFER SIZE;
}
while (true) {while (in == out)
; // do nothing -- nothing to consume
// remove an item from the bufferitem = buffer[out];out = (out + 1) % BUFFER SIZE;
return item;}
¡ Mecanismoparalacomunicaciónentreprocesosylasincronizacióndesusacciones.
¡ Sistemademensajes:Comunicaciónentreprocesossinrecurriravariablescompartidas.
¡ Paralacomunicaciónentreprocesossetienedosoperaciones:§ send(message):Eltamañodelosmensajepuedeserfijoovariable§ receive(message)
¡ SilosprocesosP yQdeseancomunicarse,senecesitalosiguiente:§ Establecerunenlacedecomunicacionesentreellos.§ Intercambiarmensajesvíasend/receive.
¡ Implementacióndelenlacedecomunicaciones§ Físico:Memoriacompartidaohardware(bus)§ Lógico:software
¡ Unmensajeesinformaciónalmacenadaenunformatodeterminado.Esteformatovaríaentrelosdistintossistemasoperativos.Sinembargo,endichoformatodebeirporlomenos:
¡ Fuente:Identificación(ID)delprocesoqueenvíalainformación.
¡ Destino:Identificación(ID)delprocesoreceptordelainformación.
¡ Contenido:Informaciónocuerpodelmensaje.
¡ Paraalgunossistemasoperativos,existemásinformaciónimportantequetienequeirenelmensaje,comoprioridaddelmensaje,longitud,númerodelpaquete,etc.Porotrolado,losprocesosquedeseencomunicarsedebentenerunamaneradereferirseunosaotros.Paraellopuedenusarcomunicacióndirectaoindirecta.
¡ Losprocesosdebenconocerlaidentificacióndelosotrosprocesosdeformaexplícita:§ send (P,mensaje):EnviarunmensajeelprocesoP§ receive(Q,mensaje):RecibirunmensajedelQ
¡ Propiedadesdelenlacedecomunicaciones§ Elenlacedecomunicacionesseestableceautomáticamente.§ Unenlaceesasociadaconexactamenteunparadeprocesos.§ Entrecadaparadeprocesosexisteexactamenteunenlace.§ Elenlacepuedeserunidireccional,perogeneralmenteesbidireccional.
¡ Losmensajessondirigidosyrecibidosdesdebuzonesocasillasdecorreo(tambiénllamadospuertos).§ Cadabuzóntieneunidentificador.§ Losprocesospuedencomunicarsesólosielloscompartenunbuzón.
¡ Propiedadesdelenlacedecomunicaciones§ Enlaceestablecidosólosilosprocesoscompartenunbuzóncomún.
§ Unenlacepuedeestarasociadoconmuchosprocesos.§ Cadapardeprocesospuedecompartirvariosenlacesdecomunicaciones.
§ Losenlacespuedenserunidireccionalesobidireccionales.
¡ Operaciones§ Crearunnuevobuzón§ Enviaryrecibirmensajesatravésdebuzones§ Destruirunbuzón
¡ Lasprimitivassondefinidasasí:
send(A,mensaje):EnviarunmensajealbuzónA
receive(A,mensaje):RecibirunmensajedelbuzónA
¡ Elpasodemensajespuedeserbloqueanteonobloqueante.
¡ Bloqueante: Esconsideradosincrónico.§ EnviarBloqueo:Esenviadoelbloqueohastaqueelmensajeesrecibido.
§ RecibirBloqueo: Esrecibidoelbloqueohastaqueelmensajeestadisponible.
¡ Nobloqueante: EsconsideradoAsincrónico§ EnviarNobloqueohastaqueelemisorenvíeelmensajeycontinúe.
§ EnviarNobloqueohastaqueelreceptorrecibeunmensajeválidoonulo.
¡ Colademensajesrelacionadosconelenlace;implementadaenunadetresformas:
1. CapacidadCero:0mensajesElemisornecesitaesperarpararecibir(cita).
2. Capacidadlimitada:LongitudfinitadenmensajesElemisordebeesperarsielenlaceestalleno
3. Capacidadilimitada:LongitudinfinitaElemisornuncaespera
¡ MemoriacompartidasegúnPOSIX§ Elprimerprocesocreaunsegmentodememoriacompartidasegment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR);
§ Elprocesoesperaaccederalamemoriacompartidasharedmemory = (char *) shmat(id, NULL, 0);
§ Ahoraelprocesopuedeescribirlamemoriacompartidasprintf(sharedmemory, "Writingtosharedmemory");
§ Cuandoserealizaunprocesopuedesepararselamemoriacompartidadesusespaciodedirecciones.
shmdt(sharedmemory);
¡ ElsistemadecomunicacionesdeMachesbasadoenmensajes§ Inclusolasllamadasalsistemasonmensajes
§ Cadatareatienedosbuzonesenlacreación:Elnúcleoynotificaciones.
§ Sólotresllamadasalsistemasonnecesariasparatransferirmensajes
msg_send(), msg_receive(), msg_rpc()
§ Losbuzonesnecesariosparalacomunicaciónsoncreadosvía:
port_allocate()
¡ Elpasodemensajeslocalesesvía“localprocedurecall –LPC”§ Sólotrabajaentreprocesossobreelmismosistema.
§ Utilizapuertos(similarbuzones)paraestablecerymantenerelcanaldecomunicaciones.
§ Lascomunicacionestrabajanasí:▪ Elclienteabreunidentificadorparaelsubsistemadeconexióndepuertoobjetivo.
▪ Elclienteenvíaunasolicituddeconexión.▪ Elservidorcreadospuertosdecomunicaciónprivadosyretornaelidentificadordeunodeellosaelcliente.
▪ Elclienteyelservidorusanelcorrespondienteidentificadordepuertoparaenviarmensajesoescuchar lasrespuestas.
¡ UnSocketestádefinidocomounpuntofinaldelacomunicación
¡ ConcatenacióndedirecciónIPypuerto
¡ Elsocket161.25.19.8:1625 serefierealpuerto1625 sobreelhost161.25.19.8
¡ Lacomunicaciónconsisteenunpardesockects
¡ Remoteprocedurecall (RPC)sonllamadosaprocedimientosabstractosentreprocesossobreunsistemaenred.
¡ Elclienteiniciaelprocesoindicandoalservidorqueejecuteciertoprocedimientoofunciónyenviandoéstedevueltaelresultadodedichaoperaciónalcliente.
¡ Actúancomoconductosotuberíaspermitiendolacomunicaciónentredosprocesos
¡ Consideraciones§ ¿Lacomunicaciónesunidireccionalobidireccional?
§ ¿Enelcasodecomunicacióndedosvías,estaeshalf ofull-duplex?
§ ¿Existeunarelaciónentrelosprocesosquesecomunican(padre– hijo)?
§ ¿Puedenutilizarselastuberíasatravésdelared?
¡ Lastuberíasordinarias permitenlacomunicaciónestándaralestiloproductor-consumidor.
¡ Elproductorescribeenunodelosextremosdelatubería
¡ Elconsumidorleedesdeelotroextremodelatubería.
¡ Lastuberíasordinariassonporlotantounidireccionales.
¡ RequierenunarelaciónPadre-hijoentrelosprocesoscomunicados
¡ Lastuberíasnombradassonmáspoderosasquelastuberíasordinarias.
¡ Lacomunicaciónesbidireccional
¡ Nonecesitaqueexistaunarelaciónpadre-hijoentrelosprocesosacomunicar
¡ Variosprocesospuedenusarlastuberíasnombradasparacomunicarse.
¡ DisponibleensistemasUNIXyWindows
¡ STALLINGW.Operating Systems:Internals andDesignPrinciples.7thEdition.2011.
¡ SILBERSCHATZ A, GALVIN P, GAGNE G. Operating SystemConcepts. 8th Edition. 2009.
¡ VIÑAS R, LLINAS F. Sistema Operativo GNU/Linux básico. UOC. 2003.
¡ ESTEVE J, BOLDRITO R, Administración avanzada de GNU/LINUX. UOC. 2004.