Download conceptos fundamentales - fc

Document related concepts

Proceso de arranque en Linux wikipedia , lookup

RC 4000 wikipedia , lookup

Descriptor de archivo wikipedia , lookup

GNU Hurd wikipedia , lookup

Archivo de dispositivo wikipedia , lookup

Transcript
Sistemas Operativos
Fis. Héctor E. Medellín Anaya
Objetivos
• Analizar el concepto de proceso y su manejo por el
sistema operativo.
• Revisar los problemas clásicos de la comunicación
de procesos.
• Conocer los aspectos fundamentales del software
de entrada y salida.
• Analizar los algoritmos de manejo de memoria.
• Conocer los aspectos fundamentales del sistema de
archivos de algunos sistemas operativos actuales.
• Analizar, utilizar y configurar algunos sistemas
operativos.
Bibliografía
• Andrew S. Tanenbaum, Sistemas
Operativos, diseño e implementación.
Prentice Hall, 1988
• Stuart E. Madnick y John J. Donovan.
Sistemas Operativos. Ed. Diana
• Rachel Morgan y Henry McGilton.
Introducción al UNIX Sistema V. Mc. Graw
Hill
Reseña histórica
Primera generación (1945-1955):
Computadoras de tubos de vacío, programación por tarjetas
perforadas.
Segunda generación (1955-1965):
Computadoras de transistores, sistemas por lotes
Tercera generación (1965-1980)
Circuitos integrados, multiprogramación, sistema 360 (OS/360
en la 7040 de IBM), petición de trabajos, manejo de cola de
impresión, Simultaneous Peripherial Operation On Line
(Splooling), tiempo compartido (CTSS) MIT 1962. MULTICS
(Multiplexed Information and Computing Service).
DEC PDP-1 en 1961, 4kB, $120,000  PDP-11
Brian Kernighan escribió UNICS (Uniplexed Information and
Computing Service) deribó en UNIX, en Bell Laboratories,
Dennis Ritchy escribió C para escribir UNIX.
Cuarta generación (1980-1990)
MS-DOS, UNIX para 68000, sistemas de red y sistemas
distribuidos. MINIX es un UNIX gratis, derivó en LINUX.
Definición
Puede considerarse al sistema operativo como el más
fundamental de todos los programas.
Controla todos los recursos del sistema de cómputo y ofrece la
base sobre la cual pueden escribirse los programas de aplicación.
El sistema operativo es una capa de software que está sobre la
parte superior del hardware descubierto.
De esta manera se manejan todas las partes del sistema y se
presentar al usuario una interfaz o máquina virtual que es más
fácil de entender y programar.
Niveles de software en un
sistema
Programas de aplicación
Programas del
sistema
Reservación
en líneas aéreas
Compiladores
Sistema
bancario
Editores
Sistema operativo
Lenguaje de máquina
Hardware
Microprogramación
Dispositivos físicos
Juegos de
video
Intérprete
de comandos
El sistema operativo como una máquina ampliada
La función del sistema operativo es la de presentar al usuario
con el equivalente de una máquina ampliada o máquina
virtual que sea más fácil de programar que el hardware
implícito.
El sistema operativo como un manejador de recursos
La tarea principal del sistema operativo es llevar el control de
quién utiliza cuál recurso, conceder requisiciones de recursos,
explicar el uso e interceder en requisiciones conflictivas de
diferentes programas y usuarios.
La interfaz entre el sistema operativo y los programas de
usuario se define por medio del conjunto de "instrucciones
extendidas" que el sistema operativo proporciona, estas se
conocen como llamadas al sistema.
Procesos
Un proceso es un programa en ejecución. Consta del programa
ejecutable, los datos y la pila del programa, su contador de
programa, apuntador de pila y otros registros, así como de toda
la información que se necesita para ejecutar el programa.
En muchos sistemas operativos, toda la información referente a
cada proceso se almacena en una tabla del sistema operativo
llamada tabla de procesos, la cual es un arreglo (o lista
enlazada) de estructuras, una para cada proceso en existencia
corriente.
Por lo tanto un proceso consta de su espacio de direcciones,
generalmente llamada imagen del núcleo y su registro de la
tabla de procesos, que contiene sus registros entre otras cosas.
Un proceso puede crear uno o más procesos diferentes
(conocidos como procesos hijos) y estos a su vez generan
nuevos procesos hijos, se llega rápidamente a una estructura de
árbol.
A
B
D
E
C
F
Archivos
Directorio raíz
Un archivo es un
bloque de información
que generalmente
reside en disco. El
directorio es una
forma de guardar
archivos, éste tiene
una estructura de
árbol.
Alumnos
Juan
María
Facultad
Luis
Prof. Peréz
Cursos
Prof. Gómez
Examenes
Archivos
Prof. López
Un concepto importante en los archivos es el de archivo
especial, este permite manejar los dispositivos como si fueran
archivos. Los archivos especiales se dividen en dos tipos,
archivos especiales de bloque y archivos especiales de
caracteres. los archivos especiales de bloque manejan
dispositivos en los que las transferencias se hacen en bloque al
azar, como los discos. Los archivos especiales de caracteres
modelan dispositivos seriales como impresoras de línea,
interfaces de red, etc.
El dispositivo estándar de entrada se reconoce con el
descriptor de archivo 0 y el dispositivo estándar de salida por
el descriptor de archivo 1. El descriptor de archivo 2 se refiere al
dispositivo error estándar.
Se definen dos números, el número de dispositivo mayor y el
número de dispositivo menor, el primero se refiere al tipo de
dispositivo (disco, terminal, impresora, etc.) y el segundo a
cual de esos de dispositivos se refiere. Los número de
dispositivo pueden observarse al listar /dev.
Otro archivo especial es la tubería (pipe), este es un pseudo
archivo que se usa para conectar dos proceso, cuando un
proceso A desea enviar datos a otro proceso B, aquél escribe en
la tubería. El proceso B puede leer los datos al leer la tubería.
Proceso
A
Tubería
Proceso
B
El intérprete de comandos
El intérprete de comandos llamado shell (concha) no es parte del
sistema operativo, pero hace un uso intenso de las llamadas al
sistema.
Cuando un usuario entra al sistema, se inicia un shell.
Una vez activado el shell espera a que el usuario emita un
comando.
Cuando se emite un comando el shell crea un proceso derivado y
espera a que este termine.
LLAMADAS AL SISTEMA
La llamada fork produce una copia idéntica del proceso padre, el valor que
genera es cero en el hijo y pid en el padre.
while (TRUE) { /* repetir por siempre */
/* leer la entrada desde la terminal */
read_command(command, parameters);
if (fork() != 0){
/* ramificar el proceso hijo */
wait(&status);
/*código padre */
}else {
execve(command, parameters, 0);/* código hijo */
}
}
Los procesos tienen tres segmentos: texto, datos y pila. En
este ejemplo, Los tres están en el espacio de dirección, pero
también se soportan espacios para datos e instrucciones
separados.
Dirección (hex)
FFFF
Pila
Interespacio
Datos
Texto
0000
Llamadas al sistema para
señalación
(1)
2
3*
(4)*
(5)*
(6)*
(7)*
(8)*
9
(10)*
(11)*
(12)*
13
14
15
16
SIGHUP El modem ha detectado una conexión telefónica rota
SIGINT Se ha oprimido la llave DEL en el teclado
SIGQUIT Señal de renuncia del teclado
SIGILL Instrucción ilegal
SIGTRAP Trampa de seguimiento
SIGIOT Instrucción IOT
SIGEMT Instrucción EMT
SIGFPE Desbordamiento/insuficiencia de punto flotante
SIGKILL Eliminación
SIGBUS Error de bus
SIGSEGV Violación de la segmentación
SIGSYS Argumento erróneo para la llamada al sistema
SIGPIPE Escritura en tubería sin lector
SIGALRM Alarma
SIGTERM Señal de terminación generada por el software
no asignado
Estructura para STAT y FSTAT:
struct stat {
short st_dev;
/* dispositivo a donde pertenece el nodo i */
unsigned short st_ino;
/* número de nodo i */
unsigned short st_node;
/* palabra de nodo */
short st_nlink;
/* número de enlaces */
short st_uid;
/* id del usuario */
short st_gid;
/* id del grupo */
short st_rdev;/* dispositivo mayor/menor de archivos esp. */
};
long st_size;
/* tamaño del archivo */
long st_atime;
/* igual que st_mtime */
long st_mtime;
/* hora de la última modificación */
long st_ctime;
/* igual que st_mtime */
pipeline(process1, process2)
char *process1, *process2;
/* apuntadores a los nombres del programa */
{
int fd[2];
pipe(&fd[0]);
/* crea una tubería */
if (fork != 0) { /* El proceso padre ejecuta estas proposiciones */
close(fd[0]);/* el proceso 1 no necesita leer de la tubería */
close(STD_OUTPUT);/* prepárese para la nueva salida estándar */
dup(fd[1]);
/* fijar la salida estándar en fd[1] */
close(fd[1]); /* la tubería ya no se necesita */
execl(process1, process1,0);
} else {/* El proceso hijo ejecuta estas proposiciones */
close(fd[1]); /* el proceso 2 no necesita escribir de la tubería */
close(STD_INPUT); /* prepárese para la nueva entrada estándar */
dup(fd[0]);
/* fijar la salida estándar en fd[0] */
close(fd[0]); /* la tubería ya no se necesita */
execl(process2, process2,0);
}
}
struct sgttyb {
char sg_ispeed;/* velocidad de entrada (no se usa ahora) */
char sg_ospeed;/* velocidad de salida (no se usa ahora) */
char sg_erase;
/* borrar carácter */
char sg_kill;
/* eliminar carácter */
int sg_flag;
/* indicaciones de modo */
};
/* campos en sg_flags. */
#define XTABS 0006000/* ocacionar la expansión tabular */
#define RAW
0000040/* actvar el modo no elaborado */
#define CRMOD 0000020/* hacer el mapa lf igual a cr + lf */
#define ECHO 0000010/* activar el eco de la entrada tecleada */
#define CBREAK 0000002 /* activar el modo cbreak */
#define COOKED 0000000 /* ni CBREAK ni RAW */
#define TIOCGETP (('t'<<8) | 8)
#define TIOCSETP (('t'<<8) | 9)
(a) Dos directorios antes de enlazar /usr/jim/memo al
directorio de ast. (b) Los mismos directorios después del
enlace.
/usr/ast
/usr/jim
16 correo
81 juegos
40 prueba
31
70
59
38
(a)
bin
memo
f.c
prog1
/usr/ast
16
81
40
70
/usr/jim
correo
juegos
prueba
nota
31
70
59
38
(b)
bin
memo
f.c
prog1
Mecanismo de llamada al sistema
Memoria principal
Programa del usuario 2
Programa del usuario 3
Llamada a kernel
4
3
1
2
Procedimiento
de servicio
Tabla de despacho
Los programas del
usuario corren en
modo de usuario
El sistema
operativo
corre en
modo kernel
Sistema monolítico
Procedimiento central
Procedimientos de servicio
Procedimientos de uso general
Máquina virtual
370 virtuales
Llamada al sistema aquí
Instrucciones de E/S aquí
Trampa aquí
CMS
CMS
CMS
VM/370
Hardware al descubierto del 370
Trampa aquí
Sistema cliente-servidor
Proceso del Proceso del Servidor del Servidor de
cliente
cliente
proceso
la terminal
Servidor de Servidor de Modo de
archivo
memoria
usuario
Modo kernel
Kernel
El cliente obtiene servicio enviando mensajes
a los procesos servidores
Modelo del cliente servidor en un
sistema distribuido
Máquina 1
Máquina 2
Máquina 3
Máquina 4
Cliente
Servidor de
archivo
Servidor de
procesos
Servidor de
la terminal
Kernel
Kernel
Kernel
Kernel
Red
Mensaje del cliente al servidor