1 - RUA

Anuncio
Sistemas Operativos
Tema 1
-
Definición de sistema operativo
-
Arquitecturas de los Sistemas Operativos.
-
Presentación de MINIX
-
Introducción al IBM PC
-
Conceptos básicos de Sistemas Operativos
- Procesos
- Ficheros
6. Llamadas al sistema
- Para gestión de procesos
- Relacionadas con señales
- Para gestión de ficheros
- Para gestión de directorios
- Para protección
- Para gestión de tiempo
7. El Intérprete de órdenes
SO. Tema 1
TR 2
1. Definición de Sistema Operativo
Programa interfaz entre los programas de aplicación y el
hardware de un sistema de computación con el doble
objetivo de:
-
gestionar los recursos: módulos de administración,
coordinación, control de conflictos, etc.
-
facilitar la labor de los usuarios. Por ello, el sistema
operativo proporciona al usuario una máquina
extendida.
El propio S.O. suele estructurarse en niveles a fin de auto
servirse de las ventajas de la abstracción que proporcionan
los niveles más bajos.
SO. Tema 1
TR 3
2. Arquitectura de los S. O. MINIX
2.1 Sistemas Operativos monolíticos (UNIX)
-
El
Sistema Operativo es un conjunto de
procedimientos
Cada procedimiento puede invocar a cualquier otro
No se obtiene transparencia
Estructura rudimentaria de ejecución
- modo usuario (no se pueden ejecutar algunas
instrucciones)
- modo supervisor (todas las instrucciones están
permitidas)
Nivel 2: Proc
Usuario
Nivel 1:
Nucleo
Init
Proceso de Proceso de Proceso de
usuario
usuario
usuario
SISTEMA OPERATIVO
...
Procedimiento
principal
Procedimiento
de servicio
Procedimientos
auxiliares
Figura: Arquitectura del Sistema Operativo monolítico
SO. Tema 1
TR 4
2.2 Sistemas en niveles
Es la extensión inmediata del caso monolítico
5
4
3
2
1
0
El operador
Programas de usuario
Gestión de entrada/salida
Comunicación operador-procesos
Gestión de la memoria y del tambor
Asignación del procesador y multiprogramación
Fig. Estructura del sistema operativo THE
2.3 Máquinas virtuales
Dos niveles de gestión:
- proporcionar multiprogramación (viene a equivaler a
replicar el hardware emulándolo mediante una capa
software)
- prestar servicios (viene a ser instalar un Sistema
Operativo sobre cada instancia del hardware virtual)
370 virtuales
instrucciones
de E/S
trap
CMS
CMS
CMS
VM/370
Hardware del 370
Figura. Estructura de VM/370 con CMS
llamadas al
sistema
trap
SO. Tema 1
TR 5
2.4 Modelo cliente - servidor
-
Tendencia a que la mayoría del Sistema Operativo esté en
niveles superiores y reducir los niveles básicos a lo mínimo
posible
Los procesos actúan como clientes que envían peticiones a los
procesos servidores
Un servidor realiza la función pedida y envía una respuesta
Es muy tolerante: Un fallo en un módulo no afecta a todo el
sistema
Es muy fácil de adaptar a sistemas distribuídos
-
La separación entre mecanismos básicos y estrategias de gestión
proporciona simplicidad
Proceso
cliente
Proceso
cliente
Proceso Servidor
servidor terminal
...
Servidor Servidor
ficheros memoria
modo
usuario
modo
privilegiado
Núcleo
El cliente obtiene servicio enviando
mensajes a los procesos servidores
Figura. El modelo cliente-servidor
Máquina 1
...
Cliente
Máquina 2
Servidor de
ficheros
Máquina 3
Servidor de
procesos
Núcleo
Núcleo
Núcleo
Máquina 4
Servidor de
terminal . . .
Núcleo
Red de comunicaciones
mensaje del
cliente al servidor
Figura. El modelo cliente-servidor en un sistema distribuido
SO. Tema 1
TR 6
3. Presentación de MINIX
MINIX es, en palabras de su autor, "un nuevo sistema
operativo que, aunque completamente distinto en su
estructura interna, fuera compatible con UNIX desde el
punto de vista del usuario". Está concebido con fines
docentes y por ello es un sistema operativo pequeño:
- tiene estructura muy modularizada
- se ha sacrificado eficiencia en pro de inteligibilidad
- es compatible con la versión 7 de UNIX
- está escrito en C
- puede ejecutarse incluso sin disco duro
- es facilmente portable.
- Primera versión sobre IBM-PC
MINIX es un subconjunto de procesos que se comunica
entre sí y con procesos de los usuarios, todo ello mediante
el uso de una sóla primitiva de comunicación entre
procesos, la transmisión de mensajes. Este diseño ofrece
una estructura mucho más modular:
SO. Tema 1
4
3
2
Procesos
de usuario
Procesos
servidores
Gestión
E/S
1
TR 7
Proceso
Proceso
Proceso
de usuario de usuario de usuario
Init
Gestor de Memoria
Tarea
de disco
Tarea
tty
...
Gestor de Ficheros
Tarea
Tarea
del reloj del sistema
Systems
calls
...
NUCLEO
Figura. Arquitectura de MINIX
Nivel 1:
- Captura las interrupciones y traps.
- Proporciona un modelo de procesos secuenciales que
comunican por mensajes.
- La parte del código que trata con las interuupciones y cambios
de contexto se escribe en lenguaje ensamblador. El resto en
C.
Nivel 2:
- Contiene los procesos de E/S uno por cada tipo de dispositivo.
Se denominan tareas para distinguirlos de los procesos de
usuario.
- En muchos sistemas las tareas de E/S se denominan
manejadores de dispositivos.
- Existe una tarea especial, denominada tarea del sistema, que no
gestiona nada. Su misión es servir de puente entre las capas 1
y 3.
Los niveles 1 y 2 se enlazan en un solo programa binario
denominado kernel.
Nivel 3:
- Proporciona servicios mediante llamadas al sistema
- gestor de memoria
- sistema de ficheros
Nivel 4:
- Resto del sistema y usuarios
SO. Tema 1
TR 8
4. Introducción al IBM PC
El procesador Intel 8088: Utiliza palabras de 16 bits
- Registros aritméticos: AX, BX, CX, DX
- Sobre todo, para operaciones aritméticas.
- CX para contadores de iteración y desplazamientos.
- Los registros se dividen en 2 bytes: H (alto) y L (bajo)
- Registros de puntero: SI, DI, BP, SP
- SI y DI para movimiento y comparación, en algunas
instrucciones
- BP registro puntero de propósito general
- SP puntero de pila hardware
- Registros de segmento: CS, DS, SS, ES
- Conceptualmente: 20 bits con los 4 bits inferiores puestos a 0
- Los segmentos empiezan en direcciones múltiplo de 16 bytes
- Son registros de reubicación.
- CS: base del segmento de código
- DS: base del segmento de datos
- SS: para el segmento pila
- ES: registro auxiliar
- Registro PSW: Para contener el vector de estado de un
proceso.
Registros
aritméticos
Registros
punteros
Registros
de segmento
AH
AL
SI
CS
BH
BL
DI
DS
CH
CL
BP
SS
DH
DL
SP
ES
8 bits
16 bits
16 bits
Figura. El 8088 tiene 12 registros, todos ellos diferentes.
- Modos de operación: Sólo supervisor
SO. Tema 1
TR 9
- Organización de la memoria: Espacio de direcciones de
1 MB (desde 0 hasta 220-1)
Conviene que cada palabra ocupe un byte par para la parte
de menor peso y un byte para la parte de mayor peso (por
compatibilidad)
- 640 KB inferiores: RAM para código y datos de
programas
- 360 KB superiores: ROM y RAM especiales
- Click: fragmento de 16 posiciones de memoria que
comienzan en dirección múltiplo de 16 bytes
Dirección
64 K
SP
Dirección
64 K
b
a
retorno
SP
Dirección
64 K
b
a
retorno
BP anterior
SI
DI
x
y
z
Datos
Datos
Datos
Código
Código
Código
16 bits
16 bits
16 bits
Parámetros
reales
Registros
salvados
Variables
locales
SP
Figura. Efectos de la pila del programa de las llamadas a procedimiento
- Entrada / Salida: Directa entre procesador y controlador.
- No utiliza el módulo BIOS
- Los controladores tienen asignadas direcciones al margen del
espacio de memoria (no hay E/S con interfaz por memoria)
SO. Tema 1
-
TR 10
El procesador envía órdenes a los controladores
– Un controlador, al terminar, envía una interrupción que
provoca:
– tres almacenamientos en la pila: PSW, CS, PC
- inhibición de aceptar interrupciones poniendo a 0 el bit de
interrupciones de PSW
- carga de nuevos valores en CS y PC desde una dirección
dada de memoria, que corresponden al vector de
interrupciones del controlador
SP
(a)
PSW
CS
PC
SP
(b)
Figura. (a) Pila antes de una interrupción.
(b) Pila después de una interrupción.
SO. Tema 1
TR 11
5. Conceptos básicos de Sistemas Operativos
UNIX tiene dos abstracciones fundamentales o principios de
diseño: el concepto de proceso y el de fichero.
5.1 Procesos
- Contienen código ejecutable, datos, pila, contador de programa,
puntero de pila y otros registros e información para
ejecución
- En tiempo compartido: suspensiones temporales
- Tabla de procesos: lista enlazada que contiene toda la
información relativa a un proceso excepto su espacio de
direcciones
- Un proceso suspendido consta de:
- espacio de direcciones
- entrada en la tabla de procesos
- Procesos hijo. Cada proceso tiene uid del usuario que lo creó,
estableciéndose una jerarquía entre procesos padres e hijos
A
C
B
D
E
SO. Tema 1
TR 12
Proceso ligero
Concepto equivalente al de máquina virtual. Es la abstracción de un
procesador físico. Para implementar un proceso se deben crear unos
registros virtuales (Tabla de Control del Procesador) y una pila.
Proceso pesado
Elementos necesarios para la ejecución, es decir, proceso ligero
más memoria
PROCESO (UNIX) = proceso (ligero) + MEMORIA
Registros
PROCESO
UNIX
PILA
DATOS
CODIGO
Zona de memoria para que
la pila pueda crecer.
SO. Tema 1
TR 13
5.2 Ficheros
Abstracción para el manejo de memoria secundaria. Asociada al
concepto de fichero existe una organización característica:
Directorio: fichero con estructura interna especialmente adecuada
para almacenar los datos referentes a ficheros
- Estructura de directorios
- Algunos directorios
- raíz
- propio
- de trabajo de un proceso
- Nombre simbólico de un fichero
- Protección de ficheros. Máscaras de bits
Descriptor de fichero: Valor "short int" que devuelve el sistema en
respuesta a una solicitud de acceso a un fichero si dicho acceso está
permitido. Si no se permite, se devuelve un código de error.
Necesarios para hacer operaciones con ficheros, ya que una vez
asignado será su nombre propio. Los procesos tienen una tabla de
descriptores de ficheros con todos los ficheros que tiene abiertos
0
1
2
...
console
console
console
...
STD_INPUT
STD_OUTPUT
STD_ERR
Otros ficheros abiertos
La redirección consiste en reasignar los ficheros estándar. De forma
que $ a.out > F1 genera una variante sobre la tabla anterior
0
1
2
...
console
F1
console
...
STD_INPUT
STD_OUTPUT
STD_ERR
Otros ficheros abiertos
A este mecanismo se le conoce como independencia de
dispositivo
SO. Tema 1
TR 14
Sistema de ficheros: Sólo son accesibles si están montados porque
no se soportan nombres de ficheros que incluyan nombre de
dispositivo de soporte. Ello a fín de proporcionar transparencia de
dispositivo a los usuarios.
- Al montar un sistema de ficheros en un directorio, el nombre de
ese directorio pasa a referirse al directorio raiz del sistema de
ficheros montado. El contenido anterior de ese directorio queda
oculto.
Estructura de ficheros típica de UNIX:
/
etc
bin
usr
users
juan
lib
dev
pedro
aaI
dso
/users/pedro/dso
Para el nombrado de ficheros hay que dar la trayectoria desde la
raíz. Para evitarlo, se puede utilizar el directorio de trabajo que se
guarda en una variable del sistema llamada HOME y que se denota
por . , el directorio superior al de trabajo es el ..
En este ejemplo el directorio de trabajo de Pedro es
HOME = /users/pedro
Ficheros especiales: Simulación de los dispositivos Entrada / salida
para que se puedan manejar como ficheros.
-Tipos
- De bloques - Para dispositivos organizados en bloques de
caracteres
- De caracteres - Para dispositivos organizados en flujos de
caracteres
SO. Tema 1
TR 15
- Algunos ficheros
- Fichero de entrada estándar: descriptor de fichero 0
- Fichero de salida estándar: descriptor de fichero 1
- Fichero de errores estándar: descriptor de fichero 2
- Números de dispositivo de los ficheros especiales:
- principal (mayor device number): tipo de dispositivo. Todos
los dispositivos con el mismo número principal comparten
el código del manejador de dispositivo (driver)
- secundario (minor device number): dispositivo en concreto
dentro de los de su clase. Se pasa como parámetro al
manejador.
Dentro del directorio /dev están todos los dispositivos del sistema
/dev/hd0
/dev/hd1
/dev/tty0
/dev/tty1
/dev/lpr
/dev/net
...
De esta forma al escribir sobre el dispositivo tty0, estaré
haciéndolo sobre el terminal. De igual modo ocurrirá con la
impresora, que se vemos sus permisos, comprobaremos que no
podemos leer de ella.
Pipes: Fichero intermedio para pasar datos de un proceso a otro.
Ello permite que la comunicación entre procesos sea similar a las
operaciones de lectura y escritura en ficheros. Se utiliza una
llamada al sistema especial (distinta de las de uso normal con
ficheros)
Su implementación consiste en variar las entradas estandar sobre
las tablas de ficheros de cada proceso. $ cat | wc genera
cat:
0
console
STD_INPUT
1 fich_intermed
STD_OUTPUT
io
SO. Tema 1
TR 16
2
...
console
...
STD_ERR
Otros ficheros abiertos
wc:
0
fich_intermed
io
1
console
2
console
...
...
STD_INPUT
STD_OUTPUT
STD_ERR
Otros ficheros abiertos
- Señales: Equivalente software de las interrupciones hardware. Tipos:
(1)
2
3*
(4)*
(5)*
(6)*
(7)*
(8)*
9
(10)*
(11)*
(12)*
13
14
15
16
SIGHUP
SIGINT
SIGQUIT
SIGILL
SIGTRAP
SIGIOT
SIGEMT
SIGFPE
SIGKILL
SIGBUS
SIGSEGV
SIGSYS
SIGPIPE
SIGALRM
SIGTERM
sin asignar
El modem ha detectado apertura de la línea
telefónica
Se ha apretado la tecla DEL
Señal quit del teclado
Instrucción ilegal
Interrupción de traza
Instrucción IOT
Instrucción EMT
Desbordamiento-vaciamiento en coma flotante
Matar proceso
Error en el bus
Violación de la segmentación
Argumente ilegal en la llamada al sistema
Escritura en tubo sin lector conectado
Alarma
Señal de terminación generada por software
MINIX no implementa las representadas entre paréntesis. Los * indican señales que
provocan un volcado a disco de la memoria del proceso si se ignoran o no se capturan
6. Llamadas al sistema.
Están relacionadas con los procesos o con los ficheros.
- Los mecanismos para realizar llamadas al sistema dependen
estrechamente del hardware
- Suele ser necesario expresarlos en ensamblador
- Existe una biblioteca de procedimientos para poder hacer
llamadas al sistema desde C
SO. Tema 1
TR 17
- Hay 41 llamadas al sistema
- Muchas llamadas al sistema devuelven -1 si hay error. El número
de error se almacena en 'errno'
Gestión de procesos:
pid = fork()
s = wait(&estado)
s=
execve(nombre,argv,envp)
exit (estado)
tamanyo = brk(direccion)
pid = getpid()
Crea un proceso hijo idéntico al padre
Espera que un hijo termina y devuelve su
estado
Reemplaza la imagen de memoria de un
proceso
Termina la ejecución del proceso y
devuelve su estado final
Pone el límite superior del segmento de
datos a "direccion"
Devuelve el identificador de proceso del
llamador
Señales
funcant = signal(senyal,func) Especifica que una señal se capture,
ignore, etc.
s = kill(pid,senyal)
Envía una señal a un proceso
residual = alarm(segundos)
Pone una señal SIGALRM para que se
dispare después de un cierto tiempo
s = pause()
suspende al llamador hasta la siguiente
señal
SO. Tema 1
TR 18
Gestión de ficheros
fd = creat(nombre,modo)
fd = mknod(nombre,modo,
direccion)
fd = open(fichero,como)
s = close(fd)
n = read(fd,buffer,nbytes)
n = write(fd,buffer,nbytes)
pos = lseek(fd,posicion,
dedonde)
s = stat(nombre,&buf)
fd = dup(fd1)
s = pipe(&fd[0])
s = ioctl(fd,peticion,argp)
Crea un nuevo fichero o trunca uno existent
Crea un nodo-i normal,especial o
directorio
Abre fichero para lectura,escritura o
ambas
Cierra un fichero abierto
Lee datos de un fichero en un buffer
Escribe datos de un buffer a un fichero
mueve el puntero de posición del fichero
Devuelve el estado leído del nodo-i de un
fichero
Duplica el descriptor de un fichero abierto
previamente
Crea un tubo
Realiza operaciones particulares en
ficheros especiales
Gestión de directorios y de sistemas de ficheros
s = link(nombre1,nombre2)
s = unlink(nombre)
s = mount(especial,nombre,
rwindicadores)
s = umount(especial)
s = chdir(nombredir)
s = chroot(nombredir)
Crea una nueva entrada de directorio,
nombre2, para el fichero nombre1
Borra una entrada de directorio
Monta un sistema de ficheros
Desmonta un sistema de ficheros
Cambia de directorio de trabajo
Cambia el directorio raiz
Protección
s = chmod(nombre,modo)
uid = getuid()
gid = getgid()
s = setuid(uid)
s = setgid(gid)
s = chown(nombre,
propietario, grupo)
s = chroot(nombredir)
Cambia los bits de protección de un fichero
Devuelve el uid del llamador
Devuelve el gid del llamador
Asigna un valor al uid del llamador
Asigna un valor al gid del llamador
Cambia el propietario de un fichero y su
grupo
Cambia el directorio raíz
SO. Tema 1
TR 19
Gestión de tiempo
seg = time(&seg)
s = stime(tp)
s = utime(fichero,
instante)
s = times(buffer)
Devuelve el tiempo transcurrido en seg. desde el
1-1-1970
Especifica tiempo transcurrido desde el 1-1-1970
Pone instante de "último acceso" al fichero
Devuelve tiempos de sistema y usuario usados
hasta ahora
7. El intérprete de órdenes (shell)
- Es el interfaz básico entre el sistema operativo y el usuario
- Una sesión de trabajo de usuario consiste en la ejecución del
shell.
- Su funcionamiento es interactivo y envía un símbolo de
atención cuando espera datos del usuario.
- Los datos que acepta el shell son órdenes al Sistema Operativo.
- Para atender una orden el shell crea un proceso hijo. Entretanto
que se ejecuta el hijo, el shell espera a que ese termine.
- La entrada y la salida estándar del shell están conectadas al
terminal
- Redireccionamiento de la entrada estándar: <
- Redireccionamiento de la salida estándar: >
- Redireccionamiento de la salida de error estándar: 2>
- Realización de un shell simplificado:
while (TRUE) {
leer_comando(comando,parametros);
if (fork() != 0) {
wait(&status);
}
else {
execve(comando,parametros,0)
}
}
// bucle infinito
// lee del terminal
// crea proceso hijo
// código del padre
// código del hijo
donde se supone que TRUE es una constante definida a 1, de
manera que se puede emplear para hacer bucles infinitos.
Descargar