290 likes | 501 Views
Historia y Sistemas UNIX. Dra. Karina Figueroa. Contenido. Historia Evolución de los S.O. Ambiente del sistema UNIX Ambiente grafico Ambiente de texto Compilando y debug en UNIX/LINUX. Evolución de los S.O. Antes de los S.O. Solo Hardware y aplicaciones Sistemas Batch
E N D
Historia y Sistemas UNIX Dra. Karina Figueroa
Contenido • Historia • Evolución de los S.O. • Ambiente del sistema UNIX • Ambiente grafico • Ambiente de texto • Compilando y debug en UNIX/LINUX
Evolución de los S.O. • Antes de los S.O. • Solo Hardware y aplicaciones • Sistemas Batch • Operación off-line • Buffering • SimultaneousPeripheralOperation On-line: Spooling • Sistemas de multiprogramación • Máquinas o procesadores virtuales • Sistemas de tiempo compartido • Computadoras personales • Redes de computadoras personales • Sistemas distribuídos o redes de estación de trabajo • Sistemas multiprocesadores • El presente
Ambiente de LINUX • Estructura del núcleo • Archivos • Interfaz del usuario • Terminales de texto • Aplicaciones instaladas por defecto
Tipos de archivos • Archivos para el filesystem • Archivo regular • Directorio • Link simbólico • Hardlink (directorio) • Softlink (archivos) • Dispositivos de entrada y salida o drivers • Archivos de dispositivos Block-oriented • Transfiere datos en bloques (DD) • Archivos de dispositivos Character-oriented • Transferencia byte por byte (modem) • Para la intercomunicación de procesos • Pipe • Socket
Directorios • / raíz • /bin • utilidades de sistema de bajo nivel • /usr/bin • utilidades de sistema de alto nivel • /sbin • uitlidades como super usuario • /lib • Librerías de programas • /usr/lib • Librerías de programas de alto nivel • /tmp • Temporal • /home • Directorios personales • /etc • Archivos de configuración • /dev • Dispositivos de hardware • /proc • Un pseudo-filesystem usado como una interfaz con el kernel
Descriptores de archivos • Unix hace una clara distinción entre el contenido de un archivo y la información acerca de un archivo. • Los archivos no tiene ninguna información de control (longuitud, fin de archivo, delimitador). Cada archivo consiste de una secuencia de bytes. • Con la excepción de dispositivo de un archivo y los archivos especiales del filesystem • Toda la información necesaria por el filesystem se mantiene en un archivo llamado inodo. • Cada archivo tiene su propio inodocon el que el filesystem lo identifica.
archivos • Al menos deben tener • Tipo de archivo • Núm de hard links asociados al archivo • Longitud en bytes del archivo • ID dispositivo (i.e., un identificador del dispositivo que contienen al archivo) • Núm de inodo que identifica al archivo • UID del propietario del archivo • ID del grupo del archivo • Timestamps que especifican el estatus del inodo en el tiempo • Fecha de modificación • Permisos de acceso al archivo
Sistema de archivos • El sistema de archivos Unix se sitúa dentro del núcleo del S.O. • Se encarga de darle estructura en archivos a una partición del disco • Implementa el sistema jerárquico de nombres y directorios
Superbloque • Almacena • Tamaño de los bloques • Número de inodos • Número de bloques • Etc • Por ejemplo ver: en Linux (/usr/include/linux/ext2_fs.h) • Definición de superbloque ext2_sb • Definición de inodo, ext2_inode
Inodo • Es la estructura de datos que representa un archivo. Existe un inodo por cada archivo • Almacena: • El largo del archivo • Permisos (12 bits) • Número de usuario • Número de grupo • Fecha y hora de creación, modificación y consulta • Núm de enlaces duros • El tipo: archivo normal, directorio, link simbólico, dispositivo • 12 punteros a bloques en disco que contienen los datos del archivo • Un puntero de indirección simple • Un puntero de indirección doble • Un puntero de indirección triple
Inodos • Los inodos se enumeran como 0,1,2,… • El inodo 0 es el directorio raíz de la petición • Cómo se busca un nombre? • Por ejem /usr/bin/X11/xfig • Ubicar partición /, /usr, /home y /tmp • Buscamos el archivo bin • Buscamos X11 en el inodo donde se encuentra bin • Buscar xfig en el inodo donde se encuentra X11
Acceso a archivos • El usuario propietario del archivo • Los usuarios que pertenecen al grupo • El resto de los usarios • Chmod comando
Comandos de Linux • Abrir una terminal • Comandos “clásicos” • ls • mkdir <directorio> • cd <directorio> • mv <origen> <destino> • Comandos Linux • man • top • ls –l • echo • cat <archivo> • more <archivo> • cp <origen> <destino> • history • last • w • ps • talk • write • wall
Comandos sobre archivos • chmodugo+rwx <archivo> • chown <user>:<group> <archivo> • grep “<expreg>” <archivo> • awk “codigo” <archivo> • diff <archivo1> <archivo2> • wc <archivo> • head <archivo> • tail <archivo> • sed “<expreg>” <archivo> • Redireccionamiento • < entrada • > salida • | pipe
Compilando y debug • Compilar en C • Debug en C
Llamada de sistema • Qué son? • Son llamados a procedimientos del kernel • Necesitan un cambio de privilegios • Básicamente • Se realiza almacenando el num de llamada al sistema en el registo EAX • Almacena los argumentos de la llamada • Ejecuta una excepción (código en ensamblador) • Se usa el num de llamada al sistema como índice para una tabla de apuntadores de código • Obtener la dirección de comienzo del código • Se ejecuta con privilegios de kernel • Como se usan? • Se enumeran en /usr/src/linux-2.x/include/asm-i386/unistd.h • Ejemplos • Close, corresponde a close() • Hay una lista de descriptores entry.S
Modos y llamada de sistema Modo usuario Programa 2 del usuario Programa 1 del usuario 1 4 Tabla de despacho Procedimiento de servicio 3 Modo Kernel 2
Llamada de Sistema • En su mayoría regresan dos tipos de valores: • menor a cero: hubo un error en la ejecución • cero o mayor a cero: todo salió bien • Si hubo error es posible ver la naturaleza del error a través de la página del manual de la llamada y de la variable errnodel archivo de encabezado errno.h
Código escritura en archivo #include <strings.h> #include <fcntl.h> #include <stdio.h> #include <errno.h> main() { intfd; char frase[80]; printf(“Leyendo de un archivo \n"); if( (fd = open(”archivo", O_RDONLY)) < 0) { printf("Error no. %d en open \n",errno); exit(1); } if ( read(fd,fd,sizeof(frase)) < 0 ) { perror("Error en read"); exit(2); } printf("Se leyo: %s \n",frase); close(fd); printf("Fin del ejemplo \n"); }
Compilando y ejecutando • karina@~> gccprueba.c • karina@~>a.out • Escribiendo en un archivo • Error no. 2 en open • karina@~>grep 2 /usr/include/sys/errno.h • #define ENOENT 2 /* No such file ordirectory */ • #define E2BIG 7 /* Arglisttoolong */ • #define ENOMEM 12 /* Notenoughcore */ • #define ENOTDIR 20 /* Not a directory */ : :
Una opción más completa if ( (fd = open(”archivo", O_RDONLY)) < 0) { printf("Error %d en open\n",errno); perror("Mensaje"); exit(1); } if ( read(fd, fd ,sizeof(frase)) < 0 ) { printf("Error %d en read\n",errno); perror("Mensaje"); exit(2); }
Tarea • Investigar el sistema de archivos FAT • Comparar la estructura con la de Linux • Ventajas y desventajas • Investigar el sistema de archivos vFAT • Comparar la estructura con la de Linux • Ventajas y desventajas
Compilar un kernel • /usr/src/linux • makexconfig • makedep • makebzImage • Añada una entra en lilo y grub • Lilo.conf • Image=/boot/bzImage.myKernel • Label=myKernel • root=/dev/hda5 • read-only