clase01

Anuncio
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
Descargar