Introducción de SO Dr. Alonso Ramírez Manzanares 10-Ago-2010 Partes de un sistema de computadoras Como entender un SO Como una maquina extendida. Un programa que oculta la complejidad de los dispositivos y presenta una vista mas sencilla de operación. Como un administrador de recursos. Es un administrador de todos los componentes de un sistema complejo: salidas a impresora, acceso a memoria, temporizadores, discos, etc. Un poco de historia La primera computadora es del matemático ingles Charles Babbage (1792-1871). También la primera programadora Ada Lovelace, se baso en ella. En 1940 se construyeron maquina calculadoras de bulbos, como la ENIAC (50° C en operación). 1955-65, transistores y sistemas por lote EL flujo de operación era mediante operadores (personas), por lo tanto se introdujeron los lotes de IBM. Aquí estaba el antepasado del sistema operativo impresión fuera de linea 1955-65, transistores y sistemas por lote EL flujo de operación era mediante operadores (personas), por lo tanto se introdujeron los lotes de IBM. Aquí estaba el antepasado del sistema operativo impresión fuera de linea 1955-65, transistores y sistemas por lote EL flujo de operación era mediante operadores (personas), por lo tanto se introdujeron los lotes de IBM. Aquí estaba el antepasado del sistema operativo impresión fuera de linea Estructura de trabajo Fortran Monitor System 1965-1980, CI y multiprogramación Había 2 lineas de comp.: científicas y comerciales. Se deseaba ejecutar los mismos programas en las 2. IBM introdujo System/360. Con un sistema operativo enorme y lleno de errores. Se introdujo la multi-programación. Se uso spooling para cargar progs. Concepto de tiempo compartido Cada usuario tiene una terminal (puede depurar su programa con comodidad, usando poco el CPU, editando). El CPU se asigna por turno a trabajos que requieren atención (ordenar un archivo de muchos registros). Al tener protección por HW de datos se popularizo este esquema. MULTICS, con una abstracción de compañía de luz, con servicio a cientos de usuarios, pero muy complejo. Nace Unix Bajo abstracción de un MULTICS mínimo (para un solo usuario) se evoluciona y se convierte en UNIX. 1980-hoy, cuarta generacion de computadoras personales Con el surgimiento de Large Scale Integrated nace la computadora personal. Parecidas pero mas baratas! Software para usuarios que no sabían nada de computación. Unix y MS-DOS (muy primitivo pero luego mejoró). Unix domina en estaciones de trabajo y servidores de red. Minix Unix se hace comercial en la version 7 Tanenbaum escribe desde cero un SO compatible con UNIX desde el punto de vista de usuario. Diferencias Unix-Minix Minix se puede disectar Unix(AT&T) eficiente, Minix Entendible (comentado) Minix fue escrito desde cero y 10 años después -> es mas modular. El minix que vamos a ver se basa en el standar POSIX (Portable Operating System Interface) “P O S I X s p e c i f i c a t i o n is critical to support software interoperability.”. Ejemplo: llamada al SO denominada READ. Minix necesita 30MB de disco duro. Se parecen en que tienen varios comandos iguales. Mas datos Despues Linus Torvalds, hizo un clon de MINIX -> Linux Conceptos de SO Las llamadas al sistema se dividen en 2 categorías amplias las de procesos las de sistemas de archivos Procesos Básicamente un programa en ejecución Tiene asociado un espacio de direcciones Este tiene programa ejecutable, los datos del programa y su pila. Tiene un conjunto de registros Entre otros, contador de programa y apuntador de pila. Pensar en procesos cuando usamos sistemas de tiempo compartido (Un proceso con sus apuntadores de archivos abiertos) Procesos Algunos SO tienen una tabla de procesos que es un arreglo (o lista enlazada) donde se guarda la info. de cada proceso (los registros, entre otras cosas). Entonces un proceso suspendido tiene su espacio de direcciones y su entrada en la tabla de procesos. Entonces ahora podemos entender el concepto de creación y terminación de procesos. El shell crea un proceso para compilar y este se autodestruye al terminar. Jerarquía de Procesos Donde tenemos procesos hijos y comunicación entre procesos. Procesos Hay otras llamadas al sistema como solicitar y liberar memoria. O cuestiones de petición de señales para comunicaciones como señales (pedir al sistema operativo que notifique que ha pasado un cierto tiempo). Parecido a interrupciones de hardware. Ejemplo, si el hardware detecta acceso ilegal a una dirección, puede enviar una señal al proceso culpable. Info adicional: los procesos tiene uid (user id). Llamdas al sistema sobre Archivos Se deben ocultar peculiaridades de los diversos dispositivos. Se necesitan llamadas para crear, eliminar, leer y escribir archivos (o directorios, poner y quitar archivos de el). Llamdas al sistema sobre Archivos Se deben ocultar peculiaridades de los diversos dispositivos. Se necesitan llamadas para crear, eliminar, leer y escribir archivos (o directorios, poner y quitar archivos de el). Archivos y procesos Por lo general, la profundidad de las jerarquia de archivos es mucho mas profunda que la de procesos. El tiempo también es corto (unos pocos segundos.) Las estructuras de jerarquía de archivos son accesibles a muchos usuarios y la de procesos no. Cada proceso tiene un directorio de trabajo actual, ahí se buscan los archivos (cambiarlo requiere una llamada al sistema). Archivos Los archivos y directorios se protegen con un código de protección binario de 9 bits (3 para usuario, 3 para grupo y 3 para todos los demás). Un bit para acceso de lectura, otro para acceso de escritura y otro para acceso de ejecución. Ejemplo rwxr-x--x. En caso de directorios, r significa permiso de búsqueda. Archivos Cuando se abre un archivo, se verifican los permisos y el SO regresa un entero (descriptor de archivo) o un código de error. Otro concepto importante es el sistema de archivos montado. Archivos Archivos especiales, con esto, dispositivos de entrada salida se pueden manejar como archivos. Así la lectura/escritura de dispositivos usan las mínimas llamadas al sistema que con archivos. Existen archivos especiales por bloques (como discos, donde podemos acceder directamente un bloque) y archivos especiales por caracteres (impresoras o modems, donde la entrada son flujos secuenciales). Archivos y procesos Tenemos los pipes o conductos, se pueden comunicar 2 procesos escribiendo y leyendo de un pipe como si fueran archivos de salida/ entrada. Mediante una llamada al sistema un proceso puede saber de donde lee o escribe. El Shell El shell no forma parte del SO pero es muy importante. Utiliza intensivamente las llamadas al SO. Es la interfaz primaria entre el SO y el usuario. Tenemos el prompt $, ejemplos $ date $ date > file1 $ sort <archivo1 > archivo2 $ cat archivo1 arch2 arch3 | sort > /dev/lp (y si agregamos & al final) Llamadas al Sistema Se proporciona una biblioteca para hacer las llamadas desde C. Ejemplo: READ cuenta = read(file,buffer,nbytes) Si hay un error cuenta es -1 y el identificador de error se guarda en la global errno. Ejemplos de llamadas al sistema