SISTEMAS OPERATIVOS II
Tercer curso Ingeniería Técnica de Sistemas. Curso 2004-2005
Práctica 2: Procesos en UNIX. Entorno, prioridades
Añadir al shell de la práctica anterior las siguientes funciones de manejo de las variables de entorno y control de la prioridad, ademas
tendremos información de los procesos en segundo plano.
- entorno [-e]
- Muestra la lista de todas las variables de entorno. Para cada variable de entorno muestra, en una misma línea la variable (nombre=valor), la dirección de memoria donde se almacena la variable (el valor del puntero, e[i]) y la dirección de
memoria donde se almacena el puntero (&e[i]). Si se indica -e el acceso a las variables será mediante environ, en caso contrario
mediante el tercer argumento de main.
- infoentorno
- Muestra el valor (como punteros) del tercer argumento de main y de environ. Muestra tambien
las direcciones de memoria donde están almacenados el tercer argumento de main y environ.
- set [-e] var valor
- Establece el valor de la variable de entorno var. Si se indica -e el acceso a las variables
será mediante environ, en caso contrario mediante el tercer argumento de main. Si la variable de entorno no existe no la crea.
- putenv var=valor
- Establece el valor de la variable de entorno var. Usa la función de librería putenv.
Si la variable no existe la crea.
- get var1, var2 ...
- Devuelve los valores de las variables de entorno var1, var2 .. obtenidos mediante el tercer argumento
de main, environ y la función de librería getenv. Para cada caso imprime además la dirección
de memoria donde está la variable.
- pri pid valor
- Establece la prioridad del proceso pid a valor. Si no se indica valor informa de la prioridad del proceso pid,
y si no se indican ni valor ni pid informa de la prioridad del shell.
- lim pid valor
- Establece el límite de la prioridad del proceso pid a valor. Si no se indica valor informa del límite
de la prioridad del proceso pid, y si no se indican ni valor ni pid informa de la prioridad del shell.
- procs
- Muestra la lista de los procesos en segundo plano. Una sola línea para cada proceso. La linea debe
indicar: el pid del proceso, el estado (activo, terminado o parado) con el valor devuelto (o en su caso la señal),
el instante en que se ha lanzado el proceso y la línea de comando con sus argumentos.
- clearlist [-s
-n
a]
- Elimina de la lista de procesos en segundo plano aquellos que han terminado debido a
una señal(-s), que han terminado normalmente (-n) o todos los que han terminado (-a).
- $$
- Modificar las funciones de ejecutar comando (en primer y segundo plano y reemplazando el código) de manera que se admitan las
siguientes posibilidades:
- ListaVariables comando
- El programa (con sus argumentos) especificado en comando se ejecuta en un entorno que
SOLO contiene las variables expecificadas en ListaVariables. (se utlizará PARA ESTE CASO execve)
- *inc comando
- El programa (con sus argumentos) especificado en comando se ejecuta con la prioridad aumentada (o disminuida)
en inc. El valor de límite de la prioridad no se alterará.
Estas modificaciones deben ser compatibles entre sí y con back y xec ademas de con la ejecución normal. Ejemplos
$ xec TERM DISPLAY HOME xterm
$ back *15 xterm -e csh
$ back *-8 TERM DISPLAY HOME HZ PATH xterm -e /bin/csh
$ *+12 xclock
$ *-21 TERM HZ ./a.out
Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (pistas: waitpid,
priocntl, putenv).
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 17 DICIEMBRE 2004