Anda di halaman 1dari 7

FACULTAD DE INGENIERIA

PROGRAMA DE INGENIERA DE SISTEMAS


SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

1. Objetivos:
Afianzarlosconceptostericosvistosenclase
IdentificarcomosecreanlosprocesosensistemasoperativoscomoLinux

2. Entregables:
DocumentoPDFconelresultadodelaejecucindelasactividadespropuestasenlaprctica.

3. Requerimientosparalaentregadelasactividades:
Plazomximoparalaentregadelasactividadessonlas23:55horasdelda23de
Noviembrede2012
Silodeseasepuedetrabajarengruposde(2)dospersonas.

4. Actividadesadesarrollar

LasactividadesquevaadesarrollarrequierencompilarcdigoenlenguajeC,tengaencuentaque
Linux esta desarrollado en dicho lenguaje, por lo tanto este sistema provee utilidades que
permitencompilarcdigoescritoenC.UnodeloscompiladoresmscomunesesGCC;laformade
utilizarestecompiladoresmedianteelcomandogcc.

Elcomandogcctienelasiguientesintaxis

gcc[Opciones][nombredeejecutablequegenera][nombredelarchivoencdigoC]

Ejemplo
Supongaquetieneunarchivodenominadoprueba.cconelcdigoquedeseacompilarentonces
paragenerarelejecutableconGCCelcomandoquedebeusareselsiguiente:

gccmiejecutableprueba.c

Detalformaquesielcompiladornoencuentraerroresdesintaxisenlacodificacindelarchivo
prueba.cinmediatamentegeneraraunarchivoejecutablellamadomiejecutable

El compilador ofrece opciones de compilacin las cuales indican a ste como debe realizar el
proceso.PuedeusarlasreferenciasdeWikipediarespectoaestetemaolaayudaqueproveeel
comandoman.

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.1.UsodeFork

En Linux, un proceso es creado mediante la llamada del sistema fork. El proceso que realiza la
llamadasedenominaprocesopadre(parentprocess)yelprocesocreadoapartirdelallamadase
denominaprocesohijo(childprocess).

La llamada fork devuelve un valor distinto a los procesos padre e hijo: al proceso padre se le
devuelve el PID del proceso hijo, y al proceso hijo se le devuelve el valor cero. Las acciones
implicadas por la peticin de un fork son realizadas por el kernel del S.O. Tales acciones son las
siguientes:

Asignacindeunaposicinenlatabladeprocesosparaelnuevoproceso(hijo).
Asignacindeunidentificadornico(PID)alprocesohijo.
Copiadelaimagendelprocesopadre(conexcepcindelamemoriacompartida).
Asignacinalprocesohijodelestado"preparadoparaejecucin".
Dos valores de retorno de la funcin: al proceso padre se le entrega el PID del proceso
hijo,yalprocesohijoseleentregaelvalorcero.

Actividades:
Empleando la maquina virtual Scientific Linux 5.0 realice el procedimiento descrito en la tabla
No.1:

Procedimiento
Comando
1. Conelcomandocdvayaaldirectorio/TallerProcesos

cd/TallerProcesos

2. ConelcomandogcccompileelarchivousoFork.cque
seencuentraeneldirectorio.Comoresultadodeeste
gccWallousoForkusoFork.c
procedimiento debe generarse un archivo ejecutable
llamadousoFork.
3. EjecuteelarchivousoForkensegundoplano

./usoFork&

4. Listelosprocesosconelcomandops.

psl

5. Observe los valores PID y PPID de cada proceso e


identifiquequatributossonheredadosentrepadree
hijoyculesno.
TablaNo.1ProcedimientoparausodeFork

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.1.1Respondalassiguientespreguntas:
a. CulessonlosPIDdelosprocesospadreehijo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

b. Qutamaodememoriaocupanlosprocesospadreehijo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

4.1.2.AnaliceelcdigodelarchivousoFork.cyrespondalassiguientespreguntas:
a. QurealizalafuncinsleepdellenguajeC?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

b. Quprocesoconcluyeprimerosuejecucin?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

c. Quocurrecuandolallamadaalsistemaforkdevuelveunvalornegativo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

4.1.3.EditeelarchivousoFork.c,modifiquelosvaloresdelafuncinsleepenlaslneas16y20del
cdigo coloque 30,20 respectivamente; ejecute los pasos 2,3 y 4 sealados en la tabla No.1 y
respondalassiguientespreguntas:

a. Quprocesoconcluyeprimero?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
b. Coloquevaloresarbitrariosalafuncinsleepdelcdigoeindiquequecambiosobservaenel
comportamientodelprograma.(Argumentesurespuesta)
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.2.CombinacinentreForkyExec
Lallamadaexecproducelasustitucindelprogramainvocadorporelnuevoprogramainvocado.
Mientras fork crea nuevos procesos, exec sustituye la imagen de memoria del proceso por otra
nueva(sustituyetodosloselementosdelproceso:cdigodelprograma,datos,pila,etc).
El PID del proceso es el mismo que antes de realizar la llamada exec, pero ahora, ejecuta otro
programa.Elprocesopasaaejecutarelnuevoprogramadesdeelinicioylaimagendememoria
delantiguoprogramasepierdealversesobrescrita.Laimagendememoriadelantiguoprograma
sepierdeparasiempre,esdecir,todoelcdigoqueescribamosposteriormentealaejecucincon
xitodelallamadaexec,serinalcanzable.
LacombinacindelasllamasforkyexeceselmecanismoqueofreceLinuxparacrearunnuevo
proceso(fork)queejecuteunprogramadeterminado(exec).
Delasseisposiblesllamadastipoexecseusarenlaprcticalallamadaexecv,cuyasintaxises:
intexecv(constchar*filename,char*constargv[]);
Elseguimientodeejecucindelproceso,mediantelaordenpsdelsistemausadaantesydespus
delallamadaexecv,permitecomprobarcmoseefectalasustitucindelaimagendememoria.
El nuevo programa activado mantiene el mismo PID, identificador de proceso, as como otras
propiedadesasociadasalproceso,sinembargo,eltamaodememoriadelaimagendelproceso
cambiadadoqueelprogramaenejecucinesdiferente.

Actividades:
Empleando la maquina virtual Scientific Linux 5.0 realice el procedimiento descrito en la tabla
No.2:

Procedimiento
Comando
1. Conelcomandocdvayaaldirectorio/TallerProcesos cd/TallerProcesos
2. Con el comando gcc compile los archivos Prog1.c y
Prog2.c que se encuentra en el directorio. Como gccWalloProg1Prog1.c
resultadodeesteprocedimientodebengenerarsedos gccWalloProg2Prog2.c
archivosejecutablesllamadosProg1yProg2.
3. Ejecute el archivo Prog1 en segundo plano. Este
programarequiereelenvodeparmetrosporlneade ./Prog1Par1Par2Par3&
comando
4. Liste los procesos con el comando ps. Repita 3 veces
psl
seguidaselcomando.
5. ObservelosvaloresPIDyPPID
TablaNo.2ForkyExec

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.2.1

Respondalassiguientespreguntas:

a. Escribaelcontenidodeloselementosdelvectorargvquerecibeprog1ylosquerecibeprog2
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

b. QuPIDtieneelprocesoqueejecutaprog1?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

c. QuPIDtieneelprocesoqueejecutaprog2?Qusucedi?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

4.3.Recursosentreprocesos
Dos procesos vinculados por una llamada fork (padre e hijo) poseen zonas de datos propias, de
usoprivado(nocompartidas).Obviamente,altratarsedeprocesosdiferentes,cadaunoposeeun
espaciodedireccionamientoindependienteeinviolable.Laejecucindelsiguienteprograma,en
el cual se asigna distinto valor a una misma variable segn se trate de la ejecucin del proceso
padreodelhijo,permitircomprobartalcaractersticadelallamadafork.
Actividades:
Empleando la maquina virtual Scientific Linux 5.0 realice el procedimiento descrito en la tabla
No.3:

Procedimiento
Comando
1. Conelcomandocdvayaaldirectorio/TallerProcesos cd/TallerProcesos
2. ConelcomandogcccompileelarchivoproFork.cque
seencuentraeneldirectorio.Comoresultadodeeste
gccWalloproForkproFork.c
procedimiento debe generarse el archivo ejecutable
llamadosproFork.
3. EjecuteelarchivoproFork.
./proFork
4. Liste los procesos con el comando ps. Repita 3 veces
psl
seguidaselcomando.
5. ObservelosvaloresPIDyPPID
TablaNo.3Recursosentreprocesos

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.3.1.Respondalassiguientespreguntas:
a. Lasvariablesenterasiyjdelprocesopadresonlasmismasquelasdelprocesohijo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

b. EjecuteelprogramaproForkensegundoplanoconelcomando./proFork&.Listelosprocesos
conelcomandopsl.CulessonlosPIDdelosprocesospadreehijo?Qutamaode
memoriaocupanlosprocesospadreehijo?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

4.4.Esperadelprocesopadrealprocesohijo(Ejecucinconespera)
El programa ejeconEspera.c emplea la llamada al sistema wait. Esta llamada provoca que el
proceso invocador quede en suspenso hasta que concluya algn proceso hijo que haya sido
activadoporlmismo.
Actividades:
Empleando la maquina virtual Scientific Linux 5.0 realice el procedimiento descrito en la tabla
No.4:

Procedimiento
Comando
1. Con el comando cd vaya al directorio
cd/TallerProcesos
/TallerProcesos
2. Con el comando gcc compile el archivo
ejeconEspera.c que se encuentra en el
directorio. Como resultado de este gccWalloejeconEsperaejeconEspera.c
procedimiento debe generarse el archivo
ejecutablellamadosejeconEspera.
3. Ejecute el archivo ejeconEspera en segundo
./ejeconEspera&
plano.
4. Liste los procesos con el comando ps. Repita 3
psl
vecesseguidaselcomando.
5. ObservelosvaloresPIDyPPID
TablaNo.4Ejecucinconespera

FACULTAD DE INGENIERIA
PROGRAMA DE INGENIERA DE SISTEMAS
SISTEMAS OPERATIVOS GRUPO 2 CICLO 4 NOCTURNO
TALLER No.2 PROCESOS EN LINUX - POSIX

4.4.1.Esperadelprocesopadrealprocesohijo(Ejecucinsinespera)
El programa ejesinEspera.c no emplea la llamada al sistema wait, por lo tanto el proceso padre
terminasuejecucinsinesperaraqueelprocesohijoterminesuejecucin.
Actividades:
Empleando la maquina virtual Scientific Linux 5.0 realice el procedimiento descrito en la tabla
No.5:

Procedimiento
Comando
6. Con el comando cd vaya al directorio
cd/TallerProcesos
/TallerProcesos
7. Con el comando gcc compile el archivo
ejesinEspera.cqueseencuentraeneldirectorio.
Como resultado de este procedimiento debe gccWalloejesinEsperaejesinEspera.c
generarse el archivo ejecutable llamados
ejesinEspera.
8. Ejecute el archivo ejesinEspera en segundo
./ejesinEspera&
plano.
9. Liste los procesos con el comando ps. Repita 3
psl
vecesseguidaselcomando.
10. ObservelosvaloresPIDyPPID

TablaNo.5Ejecucinsinespera

Respondalassiguientespreguntas
a. A partir de los procedimientos realizados en los numerales 4.4 y 4.4.1 Qu encuentra
diferenteenellistadodeprocesoscuandoseejecutalallamadawaitycuandonoseejecuta
estallamada?
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________

b. Considera que las actividades desarrolladas a partir de este documento refuerzan los
conceptostericosvistosenclase.Argumentesurepuesta
________________________________________________________________________________
________________________________________________________________________________

Anda mungkin juga menyukai