contenido minix kernix-group
TRANSCRIPT
-
8/6/2019 Contenido Minix Kernix-Group
1/19
Introduccin
El siguiente trabajo del grupo Green-Minix de la asignatura de Sistemas Operativos consta en
la modificacin del cdigo fuente del Sistema Operativo Minix en la versin 2.0 que es un clon
del sistema operativo Unix, desarrollado por el profesor Andrew S. Tanenbaum en 1987.
-
8/6/2019 Contenido Minix Kernix-Group
2/19
3. Comandos Bsicos de MINIX/UNIX
3.0. Colocarpassword root a root.
3.1.pwd
Indique qu directorio pasa a ser su currentdirectorysi ejecuta:
3.1.1. # cd/usr/src
En este caso el comando CD (cambiar directorio) establece como
directorio actual la direccin usr/src .
3.1.2.# cd
3.1.3.Cmo explica el punto 3.1.2?
El comando CD sin argumentos establece como directorio actual el
directorio de inicio del usuario logeado.
-
8/6/2019 Contenido Minix Kernix-Group
3/19
3.2. cat
El comando CAT sirve para concatenar el contenido de los archivos y
muestra por la salida estndar (pantalla), en el caso de escoger un so lo
archivo solo se mostrara su contenido.
En el siguiente ejemplo podemos observar que los archivos adolfo ynemias.cexistentes en la carpeta root pueden ser mostrados de forma
individual o colectiva.
Cual es el contenido del archivo/usr/src/.profiley para que sirve.
3.3.find
Este comando nos permite buscar archivos especficos por su nombre o con
comodines como *.jsp
-
8/6/2019 Contenido Minix Kernix-Group
4/19
En que directorio se encuentra el archivo
proc.c
3.4.mkdir
Genere un directorio/usr/
Como ejemplo crearemos la carpeta Kernix en la careta USR
3.5. cp
Este comando que sirve para copiar un archivo de un directrio a otro o en el
mismo.
Copie el archivo/etc/passwdal directorio/usr/
1. Mostramos carpeta actual2. Copiamos el archivo passwd correspondiente3. Verificamos archivo
-
8/6/2019 Contenido Minix Kernix-Group
5/19
3.6. chgrp
El siguiente comando nos brinda la opcin de cambiar grupo de un archivo
Cambie el grupo del archivo/usr//passwdpara que sea other
3.7. chown
El siguiente comando nos rinda la opcin para cambio de propietario.
Cambie el propietario del archivo/usr//passwdpara que sea ast
3.8. chmod
El siguiente comando nos permite cambiar los permisos de lectura,escritutra y ejecucin de un archivo, solo el creador del archivo puede
cambiar los permisos, donde:
U (user) usuario
G (group) grupo
O (other) otro
A todos
Cambie los permisos del archivo/usr//passwdpara que
el propietario tenga permisos de lectura, escritura y ejecucin
el grupo tenga solo permisos de lectura y ejecucin
el resto tenga solo permisos de ejecucin
Comprobacin:
-
8/6/2019 Contenido Minix Kernix-Group
6/19
3.9. grep
El siguiente comando nos permite buscar dentro de un conjunto de
archivos una expresin regular.
Muestre las lineas que tiene el texto includeen el archivo
/usr/src/kernel/main.c
Muestre las lineas que tiene el texto POSIXque se encuentren en todos losarchivos
/usr/src/kernel/
Sabiendo que:
-i es la discriminacin para buscar maysculas o minsculas por igual.
-
8/6/2019 Contenido Minix Kernix-Group
7/19
3.10. su
3.10.1. Para qu sirve?
El siguiente comando nos permite ingresar en el sistema con cualquier
usuario o administrador.
3.10.2. Que sucede si ejecuta el comando su estando logueado como root?
Su ingresamos el comando su se crea una sesin temporal con el mismo
usuario (root).
Para terminar esta sesin colocamos el comando exit, pero como era una
sesin temporal solo termina esta y el minix sigue ejecutandoce.
Si queremos serrar la sesin actual , ingresamos nuevamente el comando exit.
3.10.3. Genere una cuenta de
-
8/6/2019 Contenido Minix Kernix-Group
8/19
3.10.4. Entre a la cuenta generada
3.10.4. Repita los comandos de 3.10.2
3.11.passwd
3.11.1. Cambie la password del usuario nobody
-
8/6/2019 Contenido Minix Kernix-Group
9/19
-
8/6/2019 Contenido Minix Kernix-Group
10/19
3.13. ln
Enlazar el archivo/etc/passwda los siguientes archivos/tmp/contra1
/tmp/contra2
Hacer un ls l para ver cuantos enlaces tiene/etc/passwd
4.Uso de STDIN, STDOUT, STDERR y PIPES
4.1. STDOUT
4.1.1. conserve en el archivo/usr//fuentes.
txtla salida del comandolsque muestra todos los archivos del directorio/usr/srcy de los subdirectorios
bajo/usr/src
4.1.2.Presente cuantas lneas, palabras y caracteres
tiene/usr//tmp/fuentes.txt
4.2. STDOUT
4.2.1. Agregue el contenido, ordenado alfabeticamente, del archivo
/etc/passwdal final del
archivo/usr//fuentes.txt
4.2.2.Presente cuantas lineas, palabras y caracteres tiene
usr//fuentes.txt
4.3. STDIN
4.3.1. Genere un archivo llamado/usr//hora
.
txtusando el comando
echo con el
siguiente contenido:
2355
4.3.2.cambie la hora del sistema usando el archivo/usr//hora.txt
generado en 4.3.1
4.3.3.Presente la fecha del sistema
4.4. STDERR
Guarde el resultado de ejecutar el comandodosdir k en el archivo
-
8/6/2019 Contenido Minix Kernix-Group
11/19
/usr//error.txt. Muestre el contenido de/usr//error.tmp
4.5. PIPES
Posicinese en el directorio/(directorio raz), una vez que haya hecho eso:
4.5.1. Liste en forma amplia los archivos del directorio/usr/binque comiencen
con la letras. Del resultado obtenido, seleccione las lneas que contienen el
texto synce informe la cantidad de caracteres, palabras y lneas.
Nota 1: Est prohibido, en este tem, usar archivos temporales de trabajo
Nota 2: si le da error, es por falta de memoria, cierre el proceso de la otra
sesion, haga un kill sobre los procesos update y getty.
5. Disear y programar un utilitario en shell script
Disear y programar un utilitario en shell script para el administrador del sistema, quepermita
crear, borrar o modificar en forma automtica cuentas de usuarios, por medio de un men.
De forma interactiva pedir todos los parmetros necesarios para lo opcin seleccionada.
Para el alta de una cuenta de usuario, automticamente comprobar y validar el identificador
del nuevo usuario. Crear en caso de que no exista, su directorio asociado o directorio de
trabajo, hacindolo su propietario. Asignar al nuevo usuario un shell particular. Modificar los
archivosgroup y shadow con los nuevos valores. En caso que el grupo no exista deber
generarlo y agregar el usuario al grupo.
El borrado de un usuario llevar consigo la desaparicin de todos sus archivos
ydirectoriosasociados y la modificacin de los archivos group y shadow. En todos los casos
deber controlar la consistencia de la informacin.
La modificacin de una cuenta deber permitir por lo menos cambiar: home,contrasea, shell
y grupo.
6. Ejecucin de procesos en Background
Crear el siguiente programa
/usr/src/loop.c
#include
intmain(){
int i, c;
while(1)
{
c = 48 + i;
printf("%d",c);
i++;
i = i % idgrupo;
}
}
Compilarlo. El programa compilado debe llamarse loop,Indicando a la macro idgrupo
el valor de su grupo.
a) Correrlo en foreground. Quesucede ? Mate el proceso con el comando kill
-
8/6/2019 Contenido Minix Kernix-Group
12/19
Qu sucede?
El programa en ejecucin es un bucle infinito por lo tanto hace que que proceso
utiliza todos los recursos posibles del procesador.
-
8/6/2019 Contenido Minix Kernix-Group
13/19
Terminamos el proceso con Ctrl+c que es como un kill.
b) Ahora ejectelo en background/usr/src/loop> /dev/null&
-
8/6/2019 Contenido Minix Kernix-Group
14/19
Que se muestra en la pantalla ?
El proceso realizado no se muestra en pantalla pero en los recursos del
procesador podremos darnos cuenta que esta funcionando.
-
8/6/2019 Contenido Minix Kernix-Group
15/19
Que sucede si presiona la tecla F1? Que significan esos datos ?
Que sucede si presiona la tecla F2? Que significan esos datos ?
-
8/6/2019 Contenido Minix Kernix-Group
16/19
7. Generacin de kernelminix
a) Generar un nuevo minix manteniendo la versin original.
b) Compilar los fuentes del kernel y construir un nuevo diskette boot.
Bootee alternativamente del original y los originados por Ud.
(ver sugerencias al fondo de los enunciados).
c) Generar un nuevo minix que incluya una variable global (int poltica) al mdulo MM,inicializada con el valor 1.
8. Explique qu tipo de mecanismo utiliza MINIX y LINUX para:
a) Administrar el recurso procesador (scheduler).MINIX
Dentro de las tareas del manejo del procesador destaca la asignacin dinmica (scheduling),
que en Unix resuelve el scheduler mediante un mecanismo de prioridades. Cada proceso tiene
asignada una prioridad; las prioridades de los procesos de usuario son menores que la ms
pequea de un proceso del sistema.
Para asegurar una distribucin adecuada del procesador entre los procesos se calculan
dinmicamente las prioridades de estos ltimos, con el fin de determinar cul ser el proceso
que se ejecutar cuando se suspenda el proceso activo actual.
Nota:
En el sistema operativo Unix los procesos pueden comunicarse internamente entre s, mediante el envo
de mensajes o seales. El mecanismo conocido como interconexin (pipe) crea un canal entre dos procesos
mediante una llamada a una rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmente
entre las imgenes de ambos, como para sincronizarlos, ya que si un proceso intenta escribir en un pipe
ocupado, debe esperar a que el receptor lea los datos pendientes.
LINUX
b) Administrar el recurso memoria.
c) Administrar las operaciones de Entrada/Salida
Realice una comparacin entre MINIX y LINUX para cada punto anterior.
9. Explique cmo se genera un driver de dispositivo
Explique cmo se genera un driver de dispositivo tipo bloque y como se realiza la
vinculacin con el sistema de archivos en MINIX. Adems describa la estructura del
procedimiento de una tarea de E/S (I/O task) e indique para que sirven los comandos
IOCTL.
Sugerencias: Como ayuda busque las respuestas a las siguientes preguntas:Qu es el majornumber de un device. (com.h)
Dnde se declara la entrada a un driver. (table.c)
Cmo se llega desde un proceso usuario al driver. (table.c)
10. Implementar un nuevosystemcallllamado newcall
Implementar un nuevo systemcallllamado newcallque devuelva el valor de la
variabledeclarada en el punto 7.c)y permita modificar su valor si el parmetro es un
-
8/6/2019 Contenido Minix Kernix-Group
17/19
entero positivo. (Ver sugerencias al fondo de los enunciados). No olvide los test de
prueba. (Testsopruebasmencionadosen Formadeentrega).
11. Modificacin de cdigos
a) Modifique el "scheduler" original del MINIX para el nivel de usuarios.
b) Modifique la administracin de memoria original del MINIX, permitiendo lacoexistencia de la administracin original (poltica = 1) y la nueva (poltica != 1), y la
seleccin de una de ellas, por medio del valor de la variable declarada en el punto7.c).
En ambos casos deber describir en el informe cuales fueron las decisiones tomadas,
cules fueron las expectativas y cules fueron los resultados obtenidos e informar el
juego de programas utilizados con los cuales se lleg a alguna conclusin. (testso
pruebasmencionadosen Formadeentrega)
12. Capture, en MINIX, todos los mensajes enviados como
System_Call
Capture, en MINIX, todos los mensajes enviados como System_Calldesde cualquierproceso e imprmalos por pantalla. (testsopruebasmencionadosen Formade
entrega)
13. (Opcional)
Implementar las primitivas para manejo de semfororos y las primitivas P y V (deben
ser implementadas mediante system-call) (ver sugerencias al fondo de los enunciados)
Prubelo con el siguiente caso:Modeloproductor/consumidor.
No olvide los test de prueba. (Testsopruebasmencionadosen Formadeentrega).
14. (Opcional)
Resuelva el problema de dos productores y un consumidor que deber consumir lainformacin generada por los productores, los cuales generarn en forma alternada,
no pudiendo los productores producir informacin si la misma no fue consumida, ni el
consumidor retirar la informacin que ya retir.
15. (Opcional)
Implemente Lista de Control de Accesos para archivos. Se debe generar la lista para
un archivo, adjudicar permisos, revocar permisos, verificar que el usuario que ejecuta
una accin sobre el archivo posee el permiso correspondiente, leer la LCA, guardar
modificaciones, agregar y modificar permisos. Asegure la permanencia de esta
informacin entre dos sesiones distintas. No olvide los test de prueba. (Testso
pruebasmencionadosen Formadeentrega).
16. (Opcional)
Agregue las estructuras necesarias para permitir la seleccin de la administracin de
procesador original y la nueva implementada en el punto 11a, por medio de un
systemcall (testsopruebasmencionadosen Formadeentrega)
Sugerencias sobre:
Implementacin de Semforos a nivelde usuario
-
8/6/2019 Contenido Minix Kernix-Group
18/19
Deber implementar la gestin de semforos a utilizar slo por procesos de usuario.
El administrador de semforos ser el Memory Manager o el File System Manager.
Se sugieren las siguientes llamadas al sistema: semaf = crear_sem(argumento)
Asigna un semforo si ya est creado, en el caso de que no haya disponibles debe
devolver un error. val_sem(semaf , argumento) Retorna el valor del semforo.
nproc_sem(semaf, argumento) Retorna la cantidad de procesos bloqueados en ese
semforo is_sem(semaf, argumento)Retorna si semafes un semforo asignado al proceso
p_sem(semaf, argumento)
Realiza la operacin del operador P
v_sem(semaf, argumento)
Realiza la operacin del operador V
liberar_sem(semaf, argumento)
Libera al semforo y a todos los procesos que an estn bloqueados .
En todos los casos se debe devolver un error cuando corresponda (como por ejemplo
hacer P sobre un semforo no asignado).
Sugerenciadeestructuracomosenecesitartenerporunladodatossobreel
semforo:el valor,sunombre,nrodeprocesos queloestnutilizando,listade
proces
osu
tiliz
nd
olo,lis
tadep
roces
osbl
oquead
os.Dado que un proceso puede utilizar N semforos, por cada semforo debe haber una
lista de hasta M procesos que utilizan el semforo y otra lista de hasta M procesos
bloqueados en el semforo Es decir cada lista la podemos representar por una Matriz
de NxM
Sugerenciasdecmoimplementarunsystemcall
ssrrcc//lliibb//ssyyssccaallll::Crearelarchivoneewccaallll..ss
ssrrcc//lliibb//ssyyssccaallll::ModificarelMakefilepara queincluyasucompilacin.
ssrrcc//lliibb//ppoossiixx:: Crearelarchivo__neewccaallll..cc
ssrrcc//lliibb//ppoossiixx::ModificarelMakefilepara queincluyasucompilacin.
iincclluddee//uniissttdd..h:: Prototipodel
SystemCallneewccaalllliincclluddee//ccaallllnrr..h:: Asignarleelnmerode
SystemCalleincrementarlaCantidaddeSystem
CallsNCALLSsifuesenecesario.
ATENCIION::eessttoopueedeeaaffeeccttaarraassrrcc//mm//ttaabllee..ccyy
ssrrcc//ffss//ttaabllee ..cc queeuttiilliizzaanNCALLSpaarraassussvveecttoorreess..
ssrrcc//mm/pprroottoo..hoossrrcc//ffss//pprroottoo..h ::Agregarelprototipodela
funcin queinvocarelMM/FS
connombreddoo__neewccaallll
ssrrcc//mm//ttaabbllee..cc oossrrcc//ffss//ttaabbllee..cc::insertarunelementoenla
Tabladefuncionesdeatencinde
SystemCallsdelMM/FSconnombreddoo__neewccaallll...
ssrrcc//mm//neewccaallll..cc::Crearestearchivoconelcdigodelanueva
SystemCall.
ssrrcc//mm//Maakkeeffiillee:: Editarestearchivopara queincluyalacompilacinde
neewccaallll..cc..
Sugerenciaparaidentificar versionesde kernel
_Todos los cambios que se hagan al kernel, no debern alterar la compilacin
standard.
Para eso se utilizar en el archivo /usr/include/minix/config.h:
#define UBA_FCEN 1
para forzar la compilacin sobre el cdigo nuevo y si se elimina esta lnea se
compilar con la versin standard.
Cada parte del cdigo que agregue o cambie deber estar realizada con compilacin
-
8/6/2019 Contenido Minix Kernix-Group
19/19
condicional utilizando:
#ifdefUBA_FCEN
---------------Nuevo cdigo-------------
#else
-------------Cdigo original-------------
#endif
_A los efectos de verificar que se est ejecutando un kernel compilado por uno mismocambiar en el archivo /usr/include/minix/config.h:
/* Minix release and version numbers. */
#define OS_RELEASE 2.0
#define UBA_FCEN 1
# ifdefUBA_FCEN
#define OS_VERSION 2 SISTEMAS OPERATIVOS - UBA-FCEN
#else
#define OS_VERSION 2
#endif
Este mensaje se ver al arrancar minix
_Antes de realizar cualquier cambio en el kernel, este seguro de tener un conjunto de
diskettes de emergencia: disco de booteo, backups del kernelminix original y de losarchivos fuentes que fueron modificados. De manera de poder restaurar el sistema en
caso de que algo salga mal con la compilacin del nuevo kernel.
_Como resguardo ante pruebas con distintos kernels es conveniente generar un d
irectorio
/minix2 en el /dev/hd2a, copiar all alguna imagen confiable del kernel desde el /minix.
Cuando el monitor de booteo pregunta con que SO arrancar presiones ESC . All tipear
_image= minix /* Si se quiere bootear con la nueva imagen */
_image= minix2 /*Si se quiere bootear con la imagen vieja */