contenido minix kernix-group

Upload: yhandy-joseli-esteban-santamaria

Post on 07-Apr-2018

237 views

Category:

Documents


0 download

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 */