Gestión de Procesos

81
Sistemas Operativos M.Sc. Luis Eduardo Sepúlveda Rodríguez

description

Getión de proceso en los sistemas operativos

Transcript of Gestión de Procesos

Sistemas Operativos

M.Sc. Luis Eduardo Sepúlveda Rodríguez

¿Quéesunproceso?

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

33 de6

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

GestióndeProcesos

39

¡ 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

PasodeMensajesMemoriacompartida

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()

Computador 1

Proceso 3

Proceso 2

Procesos 1

¡ Elpasodemensajeslocalesesvía“localprocedurecall –LPC”§ Sólotrabajaentreprocesossobreelmismosistema.

§ Utilizapuertos(similarbuzones)paraestablecerymantenerelcanaldecomunicaciones.

§ Lascomunicacionestrabajanasí:▪ Elclienteabreunidentificadorparaelsubsistemadeconexióndepuertoobjetivo.

▪ Elclienteenvíaunasolicituddeconexión.▪ Elservidorcreadospuertosdecomunicaciónprivadosyretornaelidentificadordeunodeellosaelcliente.

▪ Elclienteyelservidorusanelcorrespondienteidentificadordepuertoparaenviarmensajesoescuchar lasrespuestas.

¡ Sockets

¡ RemoteProcedureCalls (RPC)

¡ Pipes(Canalización)

¡ RemoteMethodInvocation – RMI (Java)

¡ 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

Proceso Padre Proceso Hijo

# ls -Rla / | less

Ejemplo

Pipe

¡ Lastuberíasnombradassonmáspoderosasquelastuberíasordinarias.

¡ Lacomunicaciónesbidireccional

¡ Nonecesitaqueexistaunarelaciónpadre-hijoentrelosprocesosacomunicar

¡ Variosprocesospuedenusarlastuberíasnombradasparacomunicarse.

¡ DisponibleensistemasUNIXyWindows

Computador 1

Proceso n

Proceso 1

Proceso 2

Computador 2

Proceso n

Proceso 2

Proceso 1

¡ 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.

Demostración

¡ Demostraciónendiversossistemasoperativos– EnCLIyGUI

¡ MacOS¡ GNU/Linux¡ MSWindows

SistemastipoUnix

¡ ps¡ pstree¡ top¡ kill¡ ctr+z

§ jobs§ bg§ fg

GRACIAS