Publicado el 13 de Julio del 2019
812 visualizaciones desde el 13 de Julio del 2019
250,4 KB
57 paginas
SISTEMAS OPERATIVOS:
INTRODUCCIÓN Y
CONCEPTOS BÁSICOS
Servicios del Sistema Operativo
ADVERTENCIA
2
¨ Este material es un simple guión de la clase: no son
los apuntes de la asignatura.
¨ El conocimiento exclusivo de este material no
garantiza que el alumno pueda alcanzar los
objetivos de la asignatura.
¨ Se recomienda que el alumno utilice los materiales
complementarios propuestos.
Sistemas Operativos - Introducción y servicios
Objetivos
3
¨ Comprender qué es un servicio del sistema
operativo.
¨ Comprender los mecanismos que intervienen en una
llamada al sistema.
¨ Conocer las características de la interfaz POSIX.
¨ Conocer los principales servicios ofrecidos por
POSIX.
Sistemas Operativos - Introducción y servicios
Ejecución del sistema operativo
4
¨ Una vez finalizado el arranque, el sistema
operativo solamente se ejecuta en respuesta a
interrupciones.
¨ El sistema operativo se activa cuando debe
responder a:
¤ Una petición de servicio de un proceso.
¤ Una interrupción (periférico o reloj).
¤ Excepción hardware.
Sistemas Operativos - Introducción y servicios
Fases en la activación del Sistema
Operativo
5
n Proceso A
i
ó
c
u
c
e
e
a
j
Sistema
operativo
Proceso B
l
a
z
n
a
v
A
Se solicita el SO
Salva el estado del proceso A
Realiza la función pedida
Planificador
Activador
Sistemas Operativos - Introducción y servicios
Activación de servicios
6
¨ Una invocación directa a una rutina del sistema
operativo plantea problemas de seguridad.
¤ ¿Cómo realizar cambios en el modo de ejecución de modo
seguro?
¨ Utilizando una interrupción software (trap) se consigue
la activación del sistema operativo de modo seguro.
¤ Rutina de biblioteca:
n Instrucciones de máquina que prepara la llamada al SO.
n Instrucción de trap.
n Instrucciones de proceso posterior de los resultados de la llamada
al sistema operativo.
Sistemas Operativos - Introducción y servicios
Servicios del sistema operativo:
Llamadas al sistema
¨ Interfaz entre aplicaciones y SO.
7
¤ Generalmente disponibles como funciones en ensamblador.
¤ Actualmente en otros lenguajes de alto nivel (C, C++, …).
¨ Servicios típicos del sistema operativo
¤ Gestión de procesos
¤ Gestión de procesos ligeros
¤ Gestión de señales, temporizadores
¤ Gestión de memoria
¤ Gestión de ficheros y directorios
¨ Ejemplos de llamada
¤ read: permite leer datos de un fichero
¤ fork: permite crear un nuevo proceso
Sistemas Operativos - Introducción y servicios
Invocación de la llamada
8
¨ Cada función de la interfaz de programación (API)
se corresponde con algún servicio del sistema
operativo.
¤ La función es un envoltorio para el código que invoca el
servicio del sistema operativo.
¨ Incluye la ejecución de una instrucción de trap que
transfiere el control al sistema operativo mediante
la generación de una interrupción.
¨ El sistema operativo trata la interrupción y devuelve
el control al programa de usuario.
Sistemas Operativos - Introducción y servicios
Invocación de la llamada
9
Programa
de usuario
read
__asm__(“
lw $a0, fd
lw $a1, b
lw $a2, lo
li $v0, 14
syscall
sw $v0, r”
);
return r;
Biblioteca
de sistema
1
2
Sistema
Operativo
14 - > read_syscall
Código de
usuario
read(fd,b,lo)
3
4
Sistemas Operativos - Introducción y servicios
Selección de servicio
10
¨ Al existir una única instrucción de trap y múltiples
servicios se hace necesario establecer algún
mecanismo de paso de parámetros entre el proceso
de usuario y el núcleo.
¨ Como mínimo siempre se debe pasar una
especificación del servicio que se desea ejecutar.
¤ Típicamente un identificador numérico.
Sistemas Operativos - Introducción y servicios
Paso de parámetros
11
¨ Tres métodos genéricos para pasar parámetros a las
llamadas al sistema:
¤ En registros.
¤ En una tabla de memoria, cuya dirección se pasa al SO en
un registro.
¤ Poner los parámetros en la pila del programa y dejar que
el SO los extraiga.
¨ Cada SO proporciona sus propias llamadas al sistema:
¤ Estándar POSIX en UNIX y LINUX.
¤ Win32 en Windows NT.
Sistemas Operativos - Introducción y servicios
Rutina de tratamiento
12
¨ La rutina de tratamiento debe:
¤ Recuperar los parámetros enviados por el proceso de
usuario.
¤ Identificar el servicio que se desea ejecutar.
¤ Determinar la dirección de la rutina de servicio
adecuada (indexación en una tabla de rutinas de
servicio).
¤ Transferir el control a la rutina de servicio.
Sistemas Operativos - Introducción y servicios
int r;
__asm__(“
lw $a0, fd
lw $a1, b
lw $a2, lon
li $v0, 14
syscall
sw $v0, r”
READ_SYSCALL
TRAP
Invocación de llamada
int read(int fd, char * b, int lon) {
13
);
return r;
}
Sistemas Operativos - Introducción y servicios
Interfaz del programador
14
¨ Esta interfaz ofrece la visión que como máquina
extendida tiene el usuario del sistema operativo
¨ Cada sistema operativo puede ofrecer una o varias
interfaces:
¤ Linux: POSIX
¤ Windows: Win32, POSIX
Sistemas Operativos - Introducción y servicios
Estándar POSIX
15
¨ Interfaz estándar de sistemas operativos de IEEE.
¨ Objetivo: portabilidad de las aplicaciones entre
diferentes plataformas y sistemas operativos.
¨ NO es una implementación. Sólo define una interfaz
¨ Diferentes estándares
¤ 1003.1 Servicios básicos del SO
¤ 1003.1a Extensiones a los servicios básicos
¤ 1003.1b Extensiones de tiempo real
¤ 1003.1c Extensiones de procesos ligeros
¤ 1003.2 Shell y utilidades
¤ 1003.2b Utilidades adicionales
Sistemas Operativos - Introducción y servicios
UNIX03
16
¨ Single Unix Specification UNIX 03.
¨ Es una evolución que engloba a POSIX y otros
estándares (X/Open XPG4, ISO C).
¨ Incluye no solamente la interfaz de programación, sino
también otros aspectos:
¤ Servicios ofrecidos.
¤ Intérprete de mandatos.
¤ Utilidades disponibles.
Sistemas Operativos - Introducción y servicios
Características de POSIX
17
¨ Nombres de funciones cortos y en letras minúsculas:
¤ fork
¤ read
¤ close
¨ Las funciones normalmente devuelve 0 en caso de
éxito o –1 en caso de error.
¤ Variable errno.
¨ Recursos gestionados por el sistema operativo se
referencian mediante descriptores (números enteros)
Sistemas Operativos - Introducción y servicios
Ejemplo: Ejecución de un mandato
18
#include <sys/types.h>
#include <stdio.h>
int main(int argc, char** argv) {
pid_t pid;
pid = fork();
switch (pid) {
case -1: /* error */
exit(-1);
case 0: /* proceso hijo */
prog cat f1
if (execvp(argv[1], &argv[1])<0) { perror(“error”); }
printf(“Proceso padre”);
break;
default:
}
return 0;
}
Sistemas Operativos - Introducción y servicios
Servicio fork
19
¨ pid_t fork(void);
¨ Duplica el proceso que invoca la llamada.
¨ El proceso padre y el proceso hijo siguen ejecutando el mismo programa.
¨ El proceso hijo hereda los ficheros abiertos del proceso padre.
¨ Se copian los descriptores de archivos abiertos.
¨ Se desactivan las alarmas pendientes.
¨ Devuelve:
¤ -1 el caso de error.
¤ En el proceso padre: el identificador del proceso hijo.
¤ En el proceso hijo: 0
Sistemas Operativos - Introducción y servicios
Servicio fork
20
Proceso A
Proceso A’
FORK
Sistemas Operativos - Introducción y servicios
Servicio exec
21
¨
¨ Servicio único pero múltiples funciones de biblioteca.
int execl(const char *path, const char *arg, ...);
int execv(const char* path, char* const argv[]);
int execve(const char* path, char* const argv[], char* const envp[]);
int execvp(const char *file, char *const argv[])
¨ Cambia la imagen del proceso actual.
¤ path: Ruta al archivo ejecutable.
¤ file: Busca el archivo ejecutable en todos los directorios especificados por PATH.
¨ Descripción:
¤ Devuelve -1 en caso de error, en caso contrario no retorna.
¤ El mismo proceso ejecuta otro programa.
¤ Los ficheros abiertos permanecen abiertos.
¤ Las señales con la acción por defecto seguirán por defecto, las señales con
manejador tomarán la acción por defecto.
Sistemas Operativos - Introducción y servicios
Servicio fork
22
Proceso A
Proceso B
Proceso A’
EXEC
Sistemas Operativos - Introducción y servicios
Servicio exit
23
¨ Finaliza la ejecución del proceso.
¨ void exit(status);
¨ Se cierran todos los descriptores de ficheros abiertos.
¨ Se liberan todos los recursos del proceso.
¨ Se libera el BCP del proceso.
Sistemas Operativos - Introducción y servicios
Ejemplo: Ejecución de un mandato
24
#include <sys/types.h>
#include <stdio.h>
int main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0) { /* proceso hijo */
execlp("ls","ls","-l",NULL);
exit(-1);
/* proceso padre */
printf(“Fin del padre\n”);
retunr 0; /* Invoca a exit(0) */
}
else
}
Sistemas Operativos - Introducción y servicios
Operaciones genéricas sobre ficheros
25
¨ crear: Crea un fichero con un nombre y unos atributos.
¨ borrar: Borra un fichero a partir de su nombre.
¨ abrir: Abre un fichero a partir de su nombre para
permitir operaciones de acceso.
¨ cerrar: Cierra un fichero abierto.
¨ leer: Lee datos de un fichero abierto a un almacén en
memoria.
¨ escribir: Escribe datos a un fichero abierto desde un
almacén en memoria.
¨ posicionar: Mueve el apuntador usado para acceder
al fichero, afectando a operaciones posteriores.
¨ control: Permite manipular los atributos de un fichero.
Sistemas Operativos - Introducción y servicios
Servicios POSIX para ficheros
26
¨ Visión lógica:
¤ Un fichero
¨ Se mantiene un puntero asociado a cada fichero abierto.
¤ El puntero indica la posición a partir de la cual se realizará la siguiente
operación.
¨ La mayor parte de las operaciones trabajan con descriptores
de ficheros:
¤ Un número entero entre 0 y 64K.
¤ Se obtiene al abrir el fichero (open).
¤ El resto de operaciones identifican el fichero por su descriptor.
¨ De
Comentarios de: Servicios del Sistema Operativo (0)
No hay comentarios