Arquitectura de Computadores Arquitectura de Computadores Departament d’Informàtica de Sistemes i Computadors E.P.S.Alcoi Arquitectura de Computadores 1 Bloque Temático I: Introducción al S.O. UNIX ÖTema 1: Introducción a los Sistemas Operativos ÖTema 2: Introducción al S.O. UNIX Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 2 1 Arquitectura de Computadores Objetivos 1.- Presentar UNIX como ejemplo de SO real. Permite: • Profundizar en los conceptos descritos en el tema anterior • Disponer de un marco de pruebas para aplicar los conceptos que se desarrollan en los temas siguientes. 2.- Presentar sus principales abstracciones: Proceso y Fichero. Fichero 3.- Comentar las interfaces que se pueden encontrar en un sistema UNIX. • Presentar las llamadas al sistema más importantes. • Dar una descripción genérica de su inté intérprete de órdenes. rdenes Arquitectura de Computadores 3 Introducción a UNIX ÖContenido ÖBibliografía • A. Silberschatz, P. Galvin. 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema Sistemas Operativos. 5ª ed. Capítulo 21. • A. Tanenbaum Modern Operating Systems. • Morgan. Introducción al Unix sistema V 3.- El intérprete de órdenes Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 4 2 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 5 Conceptos básicos Unix = S.O. multiusuario y de tiempo compartido muy popular • Reseña histórica: ¾Primera versión: escrita por Ken Thompson en los laboratorios Bell como reacción a MULTICS, finales de los 60. Versión monousuario en lenguaje ensamblador ¾Reescrito en C (código público). Gran difusión entre la comunidad científica. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 6 3 Arquitectura de Computadores Conceptos básicos • Dos líneas comerciales: ¾System V (desarrollada por AT&T) ¾BSD (Berkeley Software Distribution). • Intentos de estandarización: ¾POSIX (Portable Operating System Interface) ¾OSF (Open Software Foundation) ¾UI (Unix International) • Su ámbito se extiende desde los computadores personales hasta los grandes sistemas • Variantes abiertas para computadores personales (ej.Linux, FreeBSD, etc.). Popularidad creciente Arquitectura de Computadores 7 Conceptos básicos ÖCaracterísticas: • Portable: ¾Escrito en C ¾Separación de las rutinas dependientes del hardware. ¾Versiones para arquitecturas diversas (de PCs a grandes sistemas) • Modular: ¾Su concepción estimula la descomposición en módulos – Módulo = componente con funciones bien definidas: fácil de poner a punto e integrar. ¾Evolutivo continuamente se perfecciona y enriquece con nueva funcionalidad ¾Abierto podemos añadir nuevos componentes sin depender de un único fabricante. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 8 4 Arquitectura de Computadores Conceptos básicos ÖCaracterísticas (II): • Sistema multiusuario y multitarea: ¾Garantías de privacidad de los datos almacenados en ficheros ¾Personalización del entorno de ejecución. • Sistema de ficheros jerárquico: ¾Clasificación en directorios anidables. ¾Permite unir al sistema principal otros sistemas de ficheros (ej. en red) Arquitectura de Computadores 9 Conceptos básicos ÖCaracterísticas (III): • Independencia de dispositivo: ¾Trata ficheros y dispositivos de E/S de manera uniforme (con el mismo conjunto de llamadas al sistema). • Interfaz con el usuario simple e interactiva: ¾El intérprete de órdenes (shell) es un programa independiente que el usuario puede sustituir ¾La sintaxis del shell es simple y homogénea. • Proporciona un completo entorno de programación: ¾Filtro = utilidad simple: se concentra en realizar bien una sola función ¾Flexible Los tubos y las redirecciones de E/S permiten combinar filtros según las necesidades y preferencias de cada usuario. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 10 5 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 11 Ficheros Ö Concepto •Abstracción del espacio de almacenamiento secundario. Ö Tipos de fichero • Regular ¾Representa un fichero convencional de datos (programa, texto, ...) • Directorio ¾Utilizados por Unix para asociar nombres a los ficheros • Especial ¾Representa un dispositivo del sistema. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 12 6 Arquitectura de Computadores Ficheros Ö Atributos de ficheros • • • • • • • Tipo de fichero Propietario (owner UID) Grupo propietario (owner GID) Permisos de acceso (permission bits) Número de enlaces Instantes de creación, último acceso y última modificación Tamaño Arquitectura de Computadores 13 Ficheros ÖVisualización de atributos de ficheros $ ls -la drwxr-xr-x drwx------rw-r--r-drwxr-xr-x permisos 3 7 1 2 aespinos aespinos aespinos aespinos gti gti gti gti propietario nº enlaces 1024 1024 1401 24 Oct Oct Oct Oct 7 7 7 7 tamaño grupo Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 10:02 10:02 10:03 10:02 . .. notas tests nombre modificación 14 7 Arquitectura de Computadores Ficheros ÖImplementación de ficheros • Cuando se crea un fichero se le asigna un nodonodo-i • El fichero se identifica por el número del nodonodo-i asignado NODONODO-i = estructura que almacena atributos de un fichero • Los nodos-i se mantienen en un área dedicada, situada al principio del disco o partición. Nodo-i Atributos del Fichero Asignación de espacio NOTA: el nombre de un fichero no se almacena en su nodo-i Arquitectura de Computadores 15 Ficheros regulares Ö Concepto: vector lineal de bytes • Las aplicaciones interpretan esta estructura formando otras estructuras más complejas Registros Unix Texto u n a interpretación Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX l i n e a NL 16 8 Arquitectura de Computadores Directorios Ö Concepto • • Es un tipo de fichero que permite organizar los ficheros jerá jerárquicamente. rquicamente Establece la forma de nombrar los ficheros / dev ttyp1 lp0 usr home dsk010g so1 so101 .profile practica1 etc var so2 so102 problema2 so103 ejemplo1 .profile seg a1 b2 Arquitectura de Computadores 17 Directorios Ö Implementación de directorios • • • • La estructura básica es la del fichero regular Unix interpreta el fichero como si se encontrase organizado en registros A cada registro se le denomina una entrada de directorio Una entrada consta de dos campos ¾ número de nodo-i ¾ nombre del fichero Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 18 9 Arquitectura de Computadores Directorios Ö Implementación de directorios • Siempre existen al menos dos entradas: ¾ . directorio actual ¾ .. directorio superior • Ejemplo: 1 1 4 3 9 456 / dev usr home etc . .. dev usr home etc El directorio raíz será el único en el que la entrada ‘.’ y la ‘..’ tendrán el mismo número de nodo-i Arquitectura de Computadores 19 Directorios Ö Esquema de nombrado de ficheros • • • • • • Un fichero se identifica mediante su ruta de acceso Una ruta es absoluta si comienza por / Si no comienza por / se considera relativa al directorio de trabajo actual Las entradas . y .. pueden utilizarse para formar rutas Los ficheros pueden tener más de un nombre. Cada uno de los nombres de un fichero se denomina un enlace. enlace Existen dos tipos de enlace: físicos y simbó simbólicos. licos Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 20 10 Arquitectura de Computadores Directorios ÖTipos de enlace (i): Enlaces físicos /usr/local –En este caso todos los nombres hacen referencia a un mismo nodo-i –El fichero sólo se elimina del disco abc xyz cuando se borran todos los enlaces (todas las entradas de directorio que lo referencian). –Sólo se permite (salvo al administrador) enlazar ficheros regulares (no directorios) Arquitectura de Computadores 21 Directorios ÖTipos de enlace (ii): Enlaces simbólicos –El fichero se elimina cuando se borra el enlace físico. Si permanece el enlace simbólico provoca errores al tratar de accederlo. –Se puede hacer con ficheros y directorios, existe la posibilidad de ciclos. –Permiten enlazar ficheros que residen en dispositivos físicos distintos. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX /usr/loca l abc xyz /usr/local/abc 22 11 Arquitectura de Computadores Directorios ÖVisualización de enlaces físicos y simbólicos • $ ln notas actas • $ ln -s notas notassim $ ls -li 210000 -rw-r--r-458390 drwxr-x--57609 drwxr-x--210000 -rw-r--r-210001 lrwxrwxrwx notas 210004 -rw-rw-rw657927 drwxr-x--57608 drwxr-x--- 2 6 6 2 1 (físico) (simbólico) agarcia agarcia agarcia agarcia agarcia gti gti gti gti gti 19 1024 1024 19 5 Jun Nov Nov Jun Jun 19 11:33 actas 26 1997 ada 14 1997 concu96 19 11:33 notas 19 11:52 notassim -> 1 agarcia 4 agarcia 2 agarcia gti gti gti 776 Jun 19 12:06 p 1024 Oct 24 1997 planif 1024 Nov 14 1997 practicas nº nodo-i Arquitectura de Computadores 23 Directorios Estructura jerárquica. Punto de vista del usuario / dev ttyp1 lp0 usr home so1 dsk010g so101 .profile practica1 problema2 etc var so2 so102 so103 ejemplo2 ejemplo1 .profile seg a1 b2 $ln /home/so1/so101/problema2 /home/so1/so102/ejemplo2 Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 24 12 Arquitectura de Computadores Directorios Ö Estructura jerárquica. Punto de vista de Unix 1 1 2 3 4 5 6 278 4 842 583 345 . .. dev usr home etc var 2 1 34 108 13 842 278 58 922 28 . .. so101 so102 so103 4 1 278 987 . .. ttyp1 lp0 dsk010g . .. so1 so2 987 . 4 .. 583 278 39 408 922 93 . .. .profile problema2 memoria . .. .profile ejemplo1 ejemplo2 seg Enlace físico Arquitectura de Computadores 25 Directorios Ö Estructura de directorios típica en Unix bin sh cp ln lib libc.a libm.a usr bin lib local man etc passwd dev tty00 tty01 fd0 / tmp home Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX ejecutables básicos bibliotecas de lenguajes mandatos de usuario otras bibliotecas software local manuales ficheros de administración ficheros especiales uno por cada dispositivo de E/S ficheros temporales directorios de usuarios 26 13 Arquitectura de Computadores Ficheros especiales Ö Representan los dispositivos de entrada-salida • • Se encuentran en el directorio /dev La interfaz para los dispositivos es idé idéntica a la de los ficheros regulares. ¾Se utiliza el mismo conjunto de llamadas al sistema para acceder a los dispositivos y a los ficheros regulares. ¾Un dispositivo se considera una secuencia de bytes • Se caracterizan por dos atributos especiales ¾major number : identificativo del manejador de dispositivo asociado. Representa el tipo del dispositivo ¾minor number : identifica una unidad del tipo de dispositivo. (Disco duro D, terminal 34) Arquitectura de Computadores 27 Ficheros especiales Ö Se distinguen dos tipos de ficheros especiales • Los ficheros especiales de bloques ¾sirven para modelar los dispositivos de E/S que consisten en una colección de bloques directamente direccionables como los discos duros, flexibles, CD-ROM, discos RAM, particiones ¾son direccionables: se puede leer o escribir a partir de una cierta posición. ¾/dev/fd0, /dev/hda • Los ficheros especiales de caracteres ¾sirven para modelar los dispositivos de E/S que aceptan o producen flujos de caracteres (líneas serie, interfaces LAN, terminales, impresoras, módems) ¾sólo admiten el acceso secuencial ¾/dev/tty00, /dev/lp0 Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 28 14 Arquitectura de Computadores Ficheros especiales ÖVisualización de atributos de ficheros especiales $ ls -l /dev brw-r----brw-r----brw-r----brw-r----brw-r----crw------crw------crw------crw-r----crw-r----brw-r----brw-r----crw-rw-rw- 1 1 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root disk disk disk floppy floppy root root root lp lp disk disk sys 3, 3, 3, 2, 2, 4, 4, 4, 6, 6, 1, 1, 1, 1 2 3 0 1 0 1 2 0 1 0 1 3 May May May May May Jun Jun Jun May May May May May 28 1997 hda1 28 1997 hda2 28 1997 hda3 28 1997 fd0 28 1997 fd1 9 07:09 tty0 18 15:01 tty1 10 11:36 tty2 28 1997 lp0 28 1997 lp1 28 1997 ram0 28 1997 ram1 28 1997 null major number minor number Arquitectura de Computadores 29 Montaje de directorios Ö Permite añadir un sistema de ficheros a un directorio de otro sistema de ficheros • • • Integra en un único árbol todo el sistema de directorios Hace independiente el nombre del fichero del dispositivo físico en el que reside Integra en un único árbol sistemas de ficheros que residen en dispositivos físicos distintos. Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 30 15 Arquitectura de Computadores Montaje de directorios Ejemplo: mount /dev/fd0 /usr/local /dev/fd0 /dev/disc0 / / usr user bin bin lib bin lib f1 local lib f1 Tras el montaje, el nombre absoluto del fichero f1 es: /usr/local/f1 Arquitectura de Computadores 31 Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 32 16 Arquitectura de Computadores Procesos Ö Concepto • Un programa es una colección de instrucciones y datos que se almacenan en un fichero regular en disco. En su nodo-i el fichero se marca como ejecutable, y el contenido del fichero está organizado según las reglas del sistema operativo. • Un proceso es una abstracción utilizada en los sistemas operativos para poder ejecutar programas. PROCESO = PROGRAMA EN EJECUCIÓ EJECUCIÓN Arquitectura de Computadores 33 Procesos ÖAtributos del proceso • Identidad ¾Identificador del proceso y del proceso padre (PID PID,PPID PPID) ¾Usuario propietario del proceso y grupo al que pertenece. (UID UID,GID GID) • Contexto ¾Directorio actual, máscara de creación de ficheros, descriptores de ficheros abiertos ¾Tratamiento de señales ¾Contexto máquina (contador de programa, puntero de pila, registros de uso general, ...) Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 34 17 Arquitectura de Computadores Procesos ÖAtributos del proceso (ii) • Imagen de memoria: ¾código del programa, área de datos, área de pila • Atributos de planificación: ¾prioridad, tiempos de ejecución Arquitectura de Computadores 35 Procesos Ö Visualización de atributos $ ps -fl F 1 1 1 1 S UID PID PPID S aespino 17682 17681 S root 17681 171 R aespino 17708 17706 S aespino 17706 17698 flags estado UID pid C 0 0 2 0 PRI 158 154 178 158 NI 20 20 20 20 ADDR a2a540 9ff800 9ffa00 a2a6c0 SZ 55 13 20 132 WCHAN STIME TTY 5a3440 10:14:55 ttyp3 29cb30 10:14:55 ttyp3 10:17:36 ttyp3 5a4640 10:17:14 ttyp3 nice pid padre direccion indice consumo tamaño prioridad espera Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX TIME 0:00 0:00 0:00 0:00 COMD -ksh rlogind ps -fl bash inicio terminal uso CPU programa 36 18 Arquitectura de Computadores Procesos Ö Creación de Procesos • • • Unix utiliza un mecanismo de creación por copia El proceso hijo es una réplica exacta de su proceso padre El proceso hijo hereda la mayoría de atributos del proceso padre: ¾ imagen de memoria ¾ UID, GID ¾ directorio actual ¾ descriptores de ficheros abiertos Arquitectura de Computadores 37 Procesos ÖCreación de Procesos • Unix asigna un identificador a cada proceso denominado PID en el momento de la creación del mismo • Todo proceso conoce el identificador de su proceso padre, PPID • La ejecución del hijo es concurrente e independiente Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX PID=32 bash PPID=1 fork( ) PID=283 bash PPID=32 38 19 Arquitectura de Computadores Procesos Ö Ejecución de programas • • • • Unix utiliza un mecanismo de sustitución para la ejecución de programas Las instrucciones y los datos del proceso se sustituyen por las instrucciones y los datos de un nuevo programa ejecutable El programa comienza a ejecutarse desde el inicio Se preserva el resto de su entorno Arquitectura de Computadores 39 Procesos Ö Ejecución de programas PID=4323 PID=4323 PPID=4319 exec(“/bin/ls”, …) PPID=4319 programa /bin/ksh programa /bin/ls datos del programa datos iniciales contador del programa inicio del programa registros del procesador registros del procesador otros atributos otros atributos Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 40 20 Arquitectura de Computadores Procesos ÖFinalización de Procesos • Terminación normal: El proceso invoca su propia terminación. ¾exit • Terminación anormal: El proceso termina por iniciativa del sistema operativo al detectar alguna condición de error (violación de límites, errores aritméticos) o por iniciativa de algún otro proceso. ¾kill y señales ÖEsperar la finalización de procesos • Un proceso padre puede esperar la finalización de un proceso hijo ¾wait Arquitectura de Computadores 41 Procesos • Un proceso termina por completo cuando han sucedido: ¾ El proceso en sí finaliza (normal o anormalmente), y ¾ Su proceso padre ha realizado una llamada al sistema WAIT 1 2 3 wait() PID=32 bash PID=32 wait() bash PPID=1 PID=283 PID=283 cc PPID=32 PID=32 bash PPID=1 cc 4 PPID=32 Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX bash PPID=1 exit( ) PID=32 PPID=1 PID=283 cc PPID=32 42 21 Arquitectura de Computadores Procesos • Un proceso zombie es el resultado de haber finalizado (normal o anormalmente) antes de que su padre haya realizado un WAIT 1 2 3 PID=32 PID=32 bash PID=32 bash bash PPID=1 PID=283 exit() bash PPID=1 PPID=1 PID=283 PID=283 bash bash PPID=32 PPID=32 PPID=32 zombie Arquitectura de Computadores 43 Procesos Ö Jerarquía y herencia • • • Se establece una jerarquía similar a la del sistema de ficheros Init es el patriarca de todos los procesos que se ejecutan en un sistema Unix. Es creado en el arranque del sistema Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX tab /init /etc --- ----- --- - init bash bash UID32 emacs bash UID18 ls -l login UID15 UID0 pc 44 22 Arquitectura de Computadores Procesos Ö tab /init /etc --- Jerarquía y herencia (ii) • • Cada usuario es propietario de una rama del árbol cuya raíz es el intérprete de mandatos Dicha rama se ejecuta con el entorno del usuario gracias al mecanismo de herencia ----- ----- - init bash bash UID32 emacs bash UID18 ls -l Arquitectura de Computadores login UID15 UID0 pc 45 Ejemplos #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main ( ) { pid_t ident; ident = fork ( ); switch (ident) { case -1: printf ("No he podido crear el proceso hijo\n"); break; case 0: printf ("Soy el hijo, mi PID es %d y mi PPID es %d\n", getpid( ), getppid( )); sleep (20); break; default: printf ("Soy el padre, mi PID es %d y el PID de mi hijo es %d\n", getpid( ), ident); sleep (30); } printf ("Final de ejecucion de %d \n", getpid( )); exit (0); } Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 46 23 Arquitectura de Computadores Ejemplos bash-2.01$ gcc -o fo1 fo1.c bash-2.01$ fo1& [2] 27888 bash-2.01$ Soy el hijo, mi PID es 27889 y mi PPID es 27888 Soy el padre, mi PID es 27888 y el PID de mi hijo es 27889 bash-2.01$ ps l FLAGS UID PID 100 2000 27816 0 2000 27818 0 2000 27888 0 2000 27890 40 2000 27889 bash-2.01$ ps l Final de ejecucion PPID PRI 27815 15 27816 0 27816 4 27816 17 27888 4 NI 0 0 0 0 0 SIZE 1852 5080 736 1044 736 RSS 1196 3520 288 544 284 WCHAN build_mmap_ msgget send_sig FLAGS UID PID PPID PRI NI SIZE 100 2000 27816 27815 15 0 1852 0 2000 27818 27816 0 0 5080 0 2000 27888 27816 2 0 736 0 2000 27891 27816 17 0 1044 44 2000 27889 27888 2 0 0 <zombie>) bash-2.01$ Final de ejecucion de 27888 RSS 1196 3520 288 544 0 WCHAN build_mmap_ msgget send_sig send_sig STA S S S R S TTY p5 p5 p5 p5 p5 TIME 0:00 0:01 0:00 0:00 0:00 COMMAND bash emacs fo1.c fo1 ps l fo1 STA S S S R Z TTY p5 p5 p5 p5 p5 TIME 0:00 0:01 0:00 0:00 0:00 COMMAND bash emacs fo1.c fo1 ps l (fo1 de 27889 do_munmap Arquitectura de Computadores 47 Ejemplos bash-2.01$ ps l FLAGS UID PID PPID PRI COMMAND 100 2000 27816 27815 15 0 2000 27818 27816 0 fo1.c 0 2000 27892 27816 17 NI SIZE 0 0 1852 5080 0 1044 Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX RSS WCHAN STA TTY TIME 1196 build_mmap_ S 3520 msgget S 544 R p5 p5 0:00 bash 0:01 emacs p5 0:00 ps l 48 24 Arquitectura de Computadores Ejemplos #include <stdio.h> int main (int argc, char *argv[ ]) { int i; printf ("\n Ejecutando el programa (%s). Sus argumentos son: \n",argv[0]); for ( i = 0; i < argc; i ++ ) printf (" argv[%d] : %s \n", i, argv[i]); sleep(10); if (execvp (argv[1],&argv[1]) < 0) { printf ("Error en la invocacion \n"); exit (1); }; exit (0); } Arquitectura de Computadores 49 Ejemplos bash-2.01$ exe1 ls -l& [1] 27915 Ejecutando el programa (exe1). Sus argv[0] : exe1 argv[1] : ls argv[2] : -l bash-2.01$ ps l FLAGS UID PID PPID PRI NI 100 2000 27906 27905 15 0 0 2000 27915 27906 7 0 0 2000 27916 27906 17 0 bash-2.01$ total 32 -rw-r----1 so2 so2 -rw-r----1 so2 so2 -rwxr-xr-x 1 so2 so2 -rw-r----1 so2 so2 -rwxr-xr-x 1 so2 so2 -rw-r----1 so2 so2 -rw-r----1 so2 so2 -rw-r----1 so2 so2 -rw-r----1 so2 so2 -rwxrwxr-x 1 so2 so2 -rw-r----1 so2 so2 -rw-r----1 so2 so2 bash-2.01$ Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX argumentos son: SIZE 1848 736 1044 RSS WCHAN 1196 build_mmap_ 288 send_sig 544 597 576 4554 427 4770 576 963 2977 3236 4563 463 302 Dec Dec Dec Dec Dec Dec Dec Dec Dec Dec Dec Dec 14 14 14 14 14 14 14 14 14 14 14 14 10:49 10:49 11:29 11:29 11:12 10:59 10:49 10:49 10:49 10:50 10:49 10:49 STA S S R TTY p6 p6 p6 TIME 0:00 0:00 0:00 COMMAND bash exe1 ls -l ps l espe1.c espe2.c exe1 exec.c fo1 fo1.c fo2.c inc-dec-01.c inc-dec-02.c nuevoprog prog1.c prog2.c 50 25 Arquitectura de Computadores Ejemplos bash-2.01$ exe1 ps l & [1] 27917 bash-2.01$ Ejecutando el programa invocador (exe1). Sus argumentos son: argv[0] : exe1 argv[1] : ps argv[2] : l bash-2.01$ ps l FLAGS UID PID COMMAND 100 2000 27906 0 2000 27917 ps l 0 2000 27918 bash-2.01$ bash-2.01$ FLAGS UID PID COMMAND 100 2000 27906 100000 2000 27917 PPID PRI NI SIZE RSS WCHAN STA TTY TIME 27905 27906 15 4 0 0 1848 736 27906 17 0 1044 544 R PPID PRI NI SIZE RSS WCHAN STA TTY TIME 0 0 1848 1040 27905 27906 10 4 [1]+ Done bash-2.01$ 1196 build_mmap_ S 288 send_sig S 1196 lance32_sta S 540 R p6 p6 0:00 bash 0:00 exe1 p6 0:00 ps l p6 p6 0:00 bash 0:00 ps l exe1 ps l Arquitectura de Computadores 51 Procesos Ö Descriptores de fichero • • Representan la asociación del proceso con la entrada-salida que utiliza Todos los ficheros que un proceso tiene abiertos se registran en una tabla indexada por los descriptores de fichero 0 P1 1 2 3 f1.c Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX fd fd==open(“f1.c”, open(“f1.c”,O_RDWR); O_RDWR); ...... read(fd, read(fd,&buffer, &buffer,nbytes); nbytes); ...... write(fd, write(fd,&buffer, &buffer,nbytes); nbytes); ...... close(fd); close(fd); 52 26 Arquitectura de Computadores Procesos ÖDescriptores de fichero • Unix define tres descriptores con un significado especial, los cuales suelen estar asociados con el terminal (gracias al mecanismo de herencia siendo el shell el padre) ¾0 STD_INPUT: entrada normal de datos ¾1 STD_OUTPUT: salida normal de datos ¾2 STD_ERROR: salida normal de errores P1 0 /dev/tty STD_INPUT 1 /dev/tty STD_OUTPUT 2 /dev/tty STD_ERROR 3 f1.c Arquitectura de Computadores 53 Procesos Ö Redirección de la salida estándar $ cat a1 a2 a3 > f1.txt Ö Redirección de la entrada estándar $ mailx so102 < mensaje Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 0 /dev/tty STD_INPUT 1 f1.txt STD_OUTPUT 2 /dev/tty STD_ERROR 0 mensaje STD_INPUT 1 /dev/tty STD_OUTPUT 2 /dev/tty STD_ERROR 54 27 Arquitectura de Computadores Procesos Ö Redirección de la salida estándar de error $ cc programa1.c 2> errores 0 /dev/tty STD_INPUT 1 /dev/tty STD_OUTPUT 2 errores STD_ERROR Arquitectura de Computadores 55 Ejemplos: redir main (int argc, char *argv[ ]) { int fd; printf("Antes de redirigir la salida estándar\n"); close(1); creat(argv[1],0666); printf("Después de redirigir la salida al fichero %s\n",argv[1]); } Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 56 28 Arquitectura de Computadores Ejemplos so2@jerica> cc -o redir redir.c so2@jerica> ls -l total 35 -rwxr-xr-x 1 so2 so2 -rw-r--r-1 so2 so2 33330 sep 26 13:48 redir 225 oct 13 1998 redir.c so2@jerica> redir aa Antes de redirigir la salida estándar so2@jerica> ls -l total 36 -rw-r--r-1 so2 -rwxr-xr-x 1 so2 -rw-r--r-1 so2 so2 so2 so2 49 sep 26 13:49 aa 33330 sep 26 13:48 redir 225 oct 13 1998 redir.c so2@jerica> cat aa Después de redirigir la salida al fichero aa Arquitectura de Computadores 57 Procesos Comunicación y sincronización entre procesos Ö • • • • • La comunicación entre procesos en Unix se realiza mediante tubos Son buffers de capacidad limitada donde cada elemento es un byte Una operación de lectura detiene al proceso si el buffer está vacío Una operación de escritura detiene al proceso si el buffer está lleno Los tubos pueden compartirse gracias al mecanismo de herencia Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 58 29 Arquitectura de Computadores Procesos Ö Ejemplo de uso $ ls | grep txt | sort tubo1 ls tubo2 grep txt STD_OUTPUT STD_INPUT sort STD_OUTPUT STD_INPUT STD_OUTPUT 0 /dev/tty 0 tubo1 0 1 1 tubo2 1 /dev/tty tubo1 2 /dev/tty 2 /dev/tty tubo2 2 /dev/tty Arquitectura de Computadores 59 Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 60 30 Arquitectura de Computadores Protección Ö Concepto • Ö Mecanismo para controlar los accesos que los procesos realizan a los recursos del sistema y de los usuarios (ficheros, memoria, dispositivos de entrada-salida) Protección en Unix • La protección está basada en contrastar los atributos del proceso con los atributos del fichero y determinar si la operación puede efectuarse Atributos del proceso Atributos del fichero UID GID owner UID owner GDI bits permiso Arquitectura de Computadores 61 Protección ÖAsignación de atributos • El proceso recibe los atributos gracias al mecanismo de herencia y a la información recogida en la tabla de usuarios (/etc/passwd) nombre:contraseña_cifrada:UID:GID:descripción:directorio HOME:shell inicial • El fichero recibe los atributos del proceso que lo crea ownerUID := UID Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX ownerGID := GID 62 31 Arquitectura de Computadores Protección ÖBits de permiso • 9 bits de permiso en grupos de tres: (propietario, grupo, otros) ¾formatos: rwxrwxr-x, 0755 ¾Interpretación – Ficheros regulares: lectura, escritura, ejecución – Directorios: listar contenidos, crear o eliminar enlaces, "búsqueda". – Especiales: lectura, escritura, -------- Arquitectura de Computadores 63 Protección Ö Reglas de protección • • • • si UID = 0, se concede permiso (superusuario) si UID = ownerUID, se utiliza el primer grupo de bits; si no si GID = ownerGID, se utiliza el segundo grupo de bits; si no se utiliza el último grupo de bits Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 64 32 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 65 Señales ÖConcepto: • Evento que interrumpe la ejecución normal de un proceso • Una señal puede ser originada por: ¾La expiración de temporizadores ¾La detección de excepciones detectadas por el hardware (direccionamiento ilegal, división por cero …) ¾Un proceso explicitamente al utilizar la llamada KILL ¾Pulsar combinaciones de teclas especiales ctrl-c Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX P1 66 33 Arquitectura de Computadores Señales Ö Las señales están predefinidas en el sistema Número Nombre 1 SIGHUP 2 SIGINT … 8 9 10 14 SIGFPE SIGKILL SIGBUS SIGALRM Origen Conexión de comunicación rota <ctrl> C del teclado Excepción de coma flotante No enmascarable ni manejable Error de bus. Violación de memoria Generada por el reloj del sistema Arquitectura de Computadores 67 Señales Ö Ö Un proceso puede indicar su comportamiento al recibir una Máscara de P1 señal • asuma el tratamiento por defecto: terminación del proceso • ignore la señal • capture la señal: ejecución del manejador asociado • enmascare la señal Proceso P1 Ejecución normal manejador Existen señales que no se pueden ignorar, ni capturar, ni enmascarar (SIGKILL) Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 68 34 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 69 Servicios del sistema Ö Interfaces en Unix Interfaz de Usuario Interfaz de Biblioteca Interfaz de Llamadas al sistema Usuarios Programas de utilidades (shell, editores, compiladores, ...) Biblioteca estándar (open, close, read, write, fork, ...) Sistema Operativo Unix (gestión de procesos, de memoria, el sistema de ficheros, E/S, ...) Modo Usuario Modo kernel Hardware (CPU, memoria, discos, terminales, ...) Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 70 35 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 71 Llamadas al sistema de Unix Gestión de procesos pid = fork ( ) s = waitpid (pid, status, opts) s = execve(name, argv, envp) exit(status) Descripción Crear un proceso hijo Esperar finalización de un hijo Cambiar imagen de memoria Invocar finalización y devolver estado Gestión de señales s = sigaction (sig, act, oact) s = kill (pid, sig) residual = alarm (seconds) s=pause () Descripción Especificar una acción para una señal Enviar una señal a un proceso Planificar una señal SIGALRM al cabo de un tiempo Suspender el que invoca hasta que llegue una señal Gestión de memoria size = brk (addr) Descripción Modificar tamaño seg. de datos (no POSIX) Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 72 36 Arquitectura de Computadores Ejemplo El shell de Unix: estructura simple shell P1 intérprete while(TRUE) { imprimir_prompt(); leer_orden(orden, param); de órdenes fork() p=fork(); shell P2 intérprete /* crear hijo */ shell P1 intérprete de órdenes de órdenes if (p != 0) { waitpid(-1, &status, 0); /* codigo del padre */ /* esperar hijo */ }else { /* codigo del hijo */ exec(orden, params, 0); /* cambiar imagen */ exec("cc", ...) /* de memoria */ cc P2 error(“No se puede ejec. la orden”); exit(1); wait() compilador } } de C exit(1) shell P1 intérprete de órdenes Arquitectura de Computadores 73 Llamadas al sistema de Unix Gestión de ficheros/directorios fd = creat(name, mode) fd = open(file, how) s = close(fd) n = read (fd, buffer, nbytes) n = write (fd, buffer nbytes) pos = lseek (fd, offset, whence) s = stat (name,buf), s = mkdir(name, mode) s = rmdir(name) s = link (name1, name2) s = unlink(name) s = chdir(dirname) s = chmod(name, mode) Descripción Crear un fichero Abrir un fichero para lectura y/o escritura Cerrar un fichero abierto Leer de un desc. de fichero sobre un buffer Escribir de un buffer sobre un desc. de fichero Posicionar el puntero de posición Obtener atributos de un fichero de su nodo-i Crear un directorio Borrar un directorio vacío Crear una entrada de directorio para un fichero existente Borrar una entrada de directorio Cambiar el directorio de trabajo Cambiar bits de protección de un fichero Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 74 37 Arquitectura de Computadores Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores 75 Programas del sistema ÖConcepto • Ö Utilidades del sistema operativo que se ejecutan como procesos de usuario y proporcionan un entorno más cómodo. Clasificación • Tratamiento de ficheros y directorios: mkdir, cp, mv, ls …… • Filtros: grep, sort, head, tail …. • Editores, compiladores, ensambladores, editores de enlace … • Sistemas de ventanas: X11 • Comunicaciones: mail, ftp, rlogin …. • Intérpretes de órdenes: sh, ksh, bash Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 76 38 Arquitectura de Computadores Ejemplos: micp so2@jerica> ls -l total 50 -rw-r--r-1 so2 -rw-r--r-1 so2 -rwxr-xr-x 1 so2 -rw-r--r-1 so2 so2 so2 so2 so2 1010 208 34821 1180 oct oct sep oct 14 1998 excep.c 14 1998 excep.h 26 12:50 micp 14 1998 micp.c so2@jerica> micp f1 f2 f3 Uso: micp forigen fdestino so2@jerica> micp micp.c f2 so2@jerica> micp f1 f2 f1: No existe el fichero o el directorio so2@jerica> micp f2 /etc /etc: Es un directorio so2@jerica> micp f2 /etc/f2 /etc/f2: Permiso denegado Arquitectura de Computadores 77 Contenidos 1.- Conceptos básicos ¾Ficheros ¾Procesos ¾Protección ¾Señales 2.- Servicios ¾Llamadas al sistema ¾Programas del sistema 3.- El intérprete de órdenes Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 78 39 Arquitectura de Computadores El intérprete de órdenes ÖConcepto • Es la interfaz primaria entre el usuario y el sistema operativo. • Es un programa que lee una orden (o un fichero de texto con múltiples órdenes) introducida por un usuario, la analiza y la ejecuta. • En UNIX, el intérprete de órdenes es un programa que se ejecuta como un proceso de usuario. • Ejemplos: sh, bash, ksh, csh, ... Arquitectura de Computadores 79 El intérprete de órdenes ÖEl Shell de Unix: órdenes • Variables / órdenes internas $ $ $ $ $ PATH=/usr/bin:/bin PATH=$PATH:$HOME/bin unset PATH export PATH echo $PATH • Órdenes externas $ $ $ $ $ prog -optn ls -al ps -eaf cat f1 f2 grep hola f1 Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 80 40 Arquitectura de Computadores Ejemplos: micd #include <unistd.h> main (int argc, char *argv [ ]) { printf("cambio el directorio de trabajo a %s\n",argv[1]); chdir(argv[1]); execlp("pwd","pwd",NULL); } Arquitectura de Computadores 81 Ejemplos: micd so2@jerica:~/ana/ejemplos-clase/micd > ls total 36 -rwxr-xr-x 1 so2 so2 33258 -rw-r--r-1 so2 so2 188 drwxr-xr-x 2 so2 so2 1024 -l sep 26 12:47 micd sep 26 12:47 micd.c sep 26 11:50 pepe so2@jerica:~/ana/ejemplos-clase/micd > micd pepe cambio el directorio de trabajo a pepe /home/docente/asignaturas/so2/ana/ejemplos-clase/micd/pepe so2@jerica:~/ana/ejemplos-clase/micd > so2@jerica:~/ana/ejemplos-clase/micd > cd so2@jerica:~/ana/ejemplos-clase/micd/pepe so2@jerica:~/ana/ejemplos-clase/micd/pepe so2@jerica:~/ana/ejemplos-clase/micd/pepe Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX pepe > > > 82 41 Arquitectura de Computadores El intérprete de órdenes ÖEl Shell de Unix: órdenes • Redirecciones $ cat f1 > f2 $ echo hola > f2 $ mailx [email protected] < fichero • Tubos $ cat f1 f2 | more $ cat f1 f2 | grep hola | wc > fitxer • Ejecución en background $ cc -c f1.c f2.c f3.c & $ (inmediato) Arquitectura de Computadores 83 El Shell de Unix: órdenes • Control del flujo/ parámetros $ > > > > for i in dso* do mv $i ./alumnes echo moviendo $i done • Shell scripts: ficheros que contienen órdenes de Shell if cp $1 $2 then echo copiado $1 a $2 else echo No se ha podido hacer la copia fi Arquitectura de Computadores Tema 2: Introducción al Sistema Operativo UNIX 84 42