SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Ténica Informática Sistemas. Curso 2010-2011

Práctica 2: Procesos en Unix: Ejecución en segundo plano, prioridades y credenciales

Continuar la codificación de un intérprete de comandos (shell) en UNIX. Nótese que los comandos aquí descritos deben interpretarse de la siguiente manera

Además deben tenerse en cuenta las siguientes indicaciones

El shell debe llevar una lista de directorios (análoga al PATH del bash) donde busca los ejecutables, de manera que cuando se indica un orden al shell la ejecutará si

La implementación de dicha lista es libre pero NO DEBE implementarse como una variable de entorno. El comando del shell mipath muestra y/o manipula dicha lista. Los directorios, salvo el raiz ("/") se especificarán sin la barra al final (/usr/bin y no /usr/bin/)

El shell llevará ahora control (mediante una lista) de los procesos que se lanzan desde él en segundo plano. Para cada proceso ha de poder informarnos de su pid, instante de creación, línea de comando que está ejecutando, y estado (activo, parado, terminado normalmente o terminado por señal, y en el caso de los terminados, del valor devuelto, o la señal que lo ha terminado). El comando procesos nos mostrrá dicha lista

Comandos a implementar en esta práctica

prio
[-get|-set] [arg...] Muestra o establece la prioridad de un proceso o del propio shell

uid
[-get|-set] [arg...] Muestra o establece la credencial del shell. En caso de no poder cambiar la credencial, nos lo indicará con el mensaje de error correspondiente. (Recuérdese que los únicos cambios permitidos son cambiar de efectica a real o salvada) y para ello es necesario que la efectica y la salvada sean distintas de la real, lo que se consigue ejecutando un fichero setuid de otro usuario)

splano
prog arg1 ... El shell crea un proceso que ejecuta EN SEGUNDO PLANO el programa prog con sus argumentos. prog representa un ejecutable externo y para poder ser encontrado puede especificarse una trayectoria completa hasta él (comenzando por "/", "./" o "../") o residir en uno de los directorios de la lista (mipath) del shell. Debe usarse la llamada execv. Además añadirá el proceso a la lista de procesos en segundo plano del shell.

 $$
Se modificarán la ejecución en primer plano, segundo plano y ejecución sin crear proceso para que se pueda especificar la prioridad indicándolo mediante el símbolo "@" seguido del valor de la prioridad a continuación de la lista de variables que constituyen en entorno de lo proceso.
[splano |] <#53#>ejecutar
prog arg1 ...* LISTAVARIABLES pri

ejemplos

-> ejecutar ./a.out @10
-> ejecutar ./a.out * TERM HOME DISPLAY NUEVA=nada USER @12
-> splano /usr/bin/xterm -e csh  @6 
-> splano xterm -e csh * TERM HOME DISPLAY USER @-2

procesos
[-del] [all|term|sig|stop|act] Muestra (o manipula) la lista de procesos en segundo plano del shell.

Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (waitpid, setpriority, getpriority, getuid, setuid, getpwent, getpwuid ...)

FORMA DE ENTREGA Va a ser utilizado el servicio de recogida de prácticas suministrado por el Centro de Cálculo de esta Facultad y parte del proceso de corrección de las prácticas va a ser automtico (compilación, listado de practicas entregadas etc) por lo cual deben entregarse exactamente como se indica a continuación:

FECHA DE ENTREGA VIERNES 19 NOVIEMBRE DE 2010