Download Tema 1. Introducción

Document related concepts

Proceso de arranque en Linux wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Loop device wikipedia , lookup

Config.sys wikipedia , lookup

Procfs wikipedia , lookup

Transcript
14/10/2009
INGENIERÍA
Chapter 1: INFORMÁTICA
Introduction
SISTEMAS OPERATIVOS
M. Teresa Higuera Toledano
Departamento de Arquitectura de
Computadores y Automática
Facultad de Informática
Universidad Complutense de Madrid
Tema 1
Introducción
1
14/10/2009
Introdución
 ¿Qué es un sistema operativo?
 Tipos de sistema operati
operativos
os
 Arranque del sistema operativo
 Estructura de los sistemas operativos
 Conceptos de los sistemas operativos
 Llamadas al sistema
¿Qué es un sistema operativo?


Un programa que actua como intermediario entre el
usuario y el hardware del computador
computador..
Objectivos del sistema operativo:
•


•
Ejecutar programas y facilitar la solución de los problemas
del usuario
Hacer un uso conveniente del computador
Usar el computador de forma eficiente
Proporcionar una máquina virtual extendida
2
14/10/2009
¿Qué es un sistema operativo?
Usuario
1
Usuario
1
Usuario
1
Ensamblador
Compilador
Editor
Usuario
1
…
…
Bases de datos
PROGRAMAS DEL SISTEMA Y APLICACIONES
SISTEMA OPERATIVO
ARQUITECTURA
SUBYACENTE
¿Qué funciones realiza?



Gestor de recursos (UCP, memoria, ...)
•
•
•
•
Asignación
g
y recuperación
p
de recursos
Protección de los usuarios
Contabilidad/monitorización
Soporte de usuario
Máquina extendida (servicios)
•
•
•
•
Ejecución de programas (procesos)
Órdenes de E/S
Operaciones sobre archivos
Detección y tratamiento de errores
Interfaz de usuario
•
Shell
3
14/10/2009
¿Qué funciones realiza?

Funcionamiento del computador
•
•
Una o más CPUs, controladores de dispositivo conectados a
través de un bús común que proporciona acceso a la memoria
compartida
Ejecución concurrente de la de CPUs y de los dispositivos que
que compiten por los ciclos de memoria
CPU
Control
C
l
sonido
Control USB
adaptador
d
d
gráfico
MEMORIA
Evolución de los sistemas operativos
Primera generación 1945 - 1955
Tubos de vacío, tarjetas cableadas
Segunda generación 1955 - 1965
Transistores, sistemas batch
Tercera generación
1965 – 1980
Circuitos integrados y multiprogramación
Cuarta generación 1980 – hoy
Ordenadores personales
4
14/10/2009
Evolución de los sistemas operativos
Primeros sistemas batch (2ª
( generación)
g
)
Lleva las tarjetas al 1401
Lee tarjetas a la cinta
Monta la cinta en el 7094 que realiza el cálculo
Monta la cinta en el 1401 que imprime los resultados
Evolución de los sistemas operativos
TRABAJO 1
TRABAJO 2
PARTICIONES
DE
MEMORIA
TRABAJO 3
SISTEMA
OPERATIVO
Multiprogramación (3ª generación)
Simultaneous Peripheral Operation On Line
Tiempo compartido: MULTICS, UNIX
5
14/10/2009
Evolución de los sistemas operativos
Sistemas abiertos (4ª generación)
Disk Operating System
MicroSoft Disk Operating System (MS(MS-DOS)
Graphical User Interface
Windows 3.x, 95, 98, NT, 2000, Me, XP
Linux (Red Hat, Debian
Debian,, Caldera, ...)
Sistemas operativos de Red
Sistemas operativos distribuidos
Introdución
 ¿Qué es un sistema operativo?
 Tipos de sistema operati
operativos
os
 Arranque del sistema operativo
 Estructura de los sistemas operativos
Conceptos de los sistemas operativos
 Llamadas al sistema
6
14/10/2009
Tipos de sistemas operativos
Batch: ejecuta los procesos de usuario por “lotes”
Interactivo: ejecuta los procesos interactuando con
el usuario
Tiempo Real: ejecuta procesos de tiempo real
((responden
p
a eventos dentro de un cierto período
p
de
tiempo)
Distribuido: el SO se ejecuta en una red de
ordenadores pero el usuario opera como si el sistema
fuera uno solo.
Tipos de sistemas operativos
Sistemas operativos para mainframes
Batch, transacciones
transacciones,, tiempo compartido:
compartido: OS/390
Sistemas operativos para servidores
Servicios de impresión
impresión,, ficheros,
ficheros, web: Unix, Windows
2000, Linux
Sistemas operativos multiprocesador
Ordenadores paralelos
paralelos,, multicomputador,
multicomputador,
multiprocesador: Encore
multiprocesador:
Sistemas operativos para ordenadores personales
personales::
CPM,
C
MS
MSS-DOS,
OS Windows
Sistemas operativos de tiempo real
Hard realreal-time system, soft realreal-time system: RTEMS
Sistemas operativos empotrados
empotrados:: PalmOS
PalmOS,, Windows CE,
Androide
7
14/10/2009
Tipos de sistemas operativos
Nº procesos
1
Nº usuarios
1
más de 1
Monoproceso
Monousuario
Multiproceso
Monousuario
Multiproceso
Multiusuario
más de 1
Tipos de sistemas operativos
Sistemas operativos para sistemas paralelos
(muy
y acoplados)
p
CPU
CPU
CPU
CPU
RAM
8
14/10/2009
Tipos de sistemas operativos
Sistemas operativos para sistemas distribuidos
(poco
p
acoplados)
p
LAN
WAN
Tipos de sistemas operativos
Sistemas operativos de tiempo real
Control industrial
Misiles
Sistemas multimedia
Si un evento no se trata en el tiempo
especificado (muy pequeño)
¡EL SISTEMA FALLA!
Se requiere un sistema capaz de responder
dentro de un tiempo limitado
9
14/10/2009
Tipos de sistemas operativos
Sistemas de tiempo real
2 niveles de exigencia
TR RIGUROSO
(hard real time)
TR MODERADO
(soft real time)
Poca memoria secundaria
Mezcla de tareas muy distintas
Caché, ROM
No sirven para control industrial
S.O. muy simple
Útiles para:
Multimedia
Realidad virtual
Introdución
 ¿Qué es un sistema operativo?
 Tipos
p de sistema operativos
p
 Arranque del sistema operativo
 Estructura de los sistemas operativos
Conceptos de los sistemas operativos
 Llamadas al sistema
10
14/10/2009
Arranque del computador
• El Reset carga valores predefinidos en registros
• CP <- dirección de arranque del cargador ROM
• Se ejecuta el cargador ROM del sistema
– Test del sistema
– Trae a memoria el boot del SO
Unidad de Memoria
Dirección
0
2.047
Unidad de Memoria
Celdas
Dirección
Celdas
0
Zona
ROM
1.046.528
1.048.575
1.048.575
Zona
ROM
• En el caso del PC la ROM contiene, además, sw de E/S (BIOS)
Arranque del Sistema operativo
•
El SO está almacenado en el disco
Programa cargador
(identificador)
Disco
Sistema Operativo
11
14/10/2009
Arranque del sistema operativo
• El cargador ROM carga el sector de boot del SO y le da control
• El boot del SO carga el SO residente y da control al programa de
arranque del SO
SO, que:
– Comprueba el hardware
– Comprueba el sistema de ficheros
– Establece las tablas del SO
– Crea procesos (según el tipo de SO)
• Proceso INIT
• Procesos o tareas del sistema (demonios)
• Procesos de login (uno por terminal)
– Tras la autenticación, el proceso login se convierte en shell
Parada del sistema
• Parada del sistema: Copia a disco de la información necesaria
mantenida en memoria por razones de eficiencia; si no se efectúa
así,, e
as
el s
sistema
ste a queda co
corrompido
o p do y e
en e
el p
próximo
ó
oa
arranque
a que debe
ser “reparado”.
• Hibernación: copia a disco de la imagen completa de memoria
principal ; rearranque rápido a la misma situación de apagado.
• Suspensión: (Standby): apagado de casi todo excepto la
memoria; reanudación instantánea.
12
14/10/2009
Capítulo 1: Introdución
 ¿Qué es un sistema operativo?
 Tipos
p de sistema operativos
p
 Arranque del sistema operativo
 Estructura de los sistema operativos
Conceptos de los sistemas operativos
 Llamadas al sistema
Niveles de los sistemas operativos
HW
13
14/10/2009
Estructuras de los SO
Sistema monolítico: OS
OS--360, MSMS-DOS, UNIX, LINUX
PROCEDIEMIENTO
PRINCIPAL
PROCEDIEMIENTOS
Llamadas al sistema
DE SERVICIO
PROCEDIEMIENTOS
DE UTILIDAD
Estructuras de los SO
Sistemas por capas: OS/2, Minix
init
Proceso de
usuario
Proceso de Proceso de
usuario
usuario
Gestor de memoria
Kernel
Tarea
de disco
Tarea
de reloj
…
Gestor de ficheros
Tarea
sistema
Tarea
de tty
…
GESTIÓN
Ó DE PROCESOS
14
14/10/2009
Estructuras de los SO
Máquinas virtuales: VM/370, VMWare
VMWare,, KVM
Máquinas virtuales 370
Instrucciones
de E/S
Trap
Llamadas
al sistema
CMS
CMS
CMS
Trap
VM/370
Hardware subyacente
y
del 370
Estructuras de los SO
El modelo cliente
cliente--servidor: Mac OS X
Proceso
Cliente
Proceso
Servidor
Servidor …
Cliente de procesos de terminal
Microkernel
Servidor
Servidor
de fichero de memoria
Modo
usuario
Modo
kernel
15
14/10/2009
Estructuras de los SO
El modelo cliente
cliente--servidor en un sistema distribuido:
Amoeba,
Amoeba,
Middlewere:: Java
Middlewere
Java--RMI, CORBA, DCE, DCOM
Máquina 1
Máquina 2
Máquina 3
Máquina 4
Máquina 5
Proceso
Cliente
Servidor
de procesos
Servidor
de terminal
Servidor
de fichero
Servidor
de memoria
kernel
kernel
Mensaje desde el
cliente al servidor
kernel
kernel
kernel
RED
Capítulo 1: Introdución
 ¿Qué es un sistema operativo?
 Tipos
p de sistema operativos
p
 Arranque del sistema operativo
 Estructura de los sistemas operativos
Conceptos de los sistemas operativos
 Llamadas al sistema
16
14/10/2009
Conceptos de sistemas operativos
GESTIÓN DE PROCESOS
Proceso: Un programa en ejecución
Espacio de direccionamiento
Contexto (entrada a la tabla de procesos)
Operaciones asociadas a un proceso
Identificadores asociadas a un proceso
Conceptos de sistemas operativos
Espacio de direccionamiento
Programa ejecutable (texto)
Datos
Pila
Contexto (entrada a la tabla de procesos)
Registros de la CPU
PC, SP, PSW.
Tabla de ficheros abiertos
Mapa de memoria
.......
17
14/10/2009
Conceptos de sistemas operativos
Los tres segmentos de un proceso: texto, datos, pila
FFFF
Pila
brk (newDirection)
Datos
Texto
0000
Conceptos de sistemas operativos
Operaciones asociadas a un proceso
Crear un proceso (relación padrepadre-hijo)
Terminar un proceso
Comunicación y sincronización entre procesos
Pedir/ liberar memoria
Esperar a que termine uno de los hijos
Cargar una imagen de texto
Establecer/tratar/enviar señales
Identificadores asociados a un proceso
uid
uid,, identificador del propietario del proceso
pid
pid,, identificador del propio proceso
gid
gid,, identificador del grupo al que pertenece el proceso
18
14/10/2009
Conceptos de sistemas operativos
COMUNICACIÓN Y SINCRONIZACIÓN ENTRE
PROCESOS
Proceso
de Usuario
Proceso
de Usuario
Proceso
de Usuario
Proceso
de Usuario
SO
SO
SO
UN COMPUTADOR
DOS COMPUTADORES
Conceptos de sistemas operativos
• Servicios de comunicación:
comunicación:
–
–
–
–
Crear el mecanismo de comunicación
Enviar datos a un proceso
Recibir datos de un proceso
Destruir el servicio de comunicación
• Servicios de sincronización:
sincronización:
–
–
–
–
Crear el mecanismo de sincronización
Bloquear un proceso hasta que ocurra un evento
Despertar a un proceso bloqueado
Destruir el mecanismo de sincronización
19
14/10/2009
Conceptos de sistemas operativos
• Comunicación síncrona
síncrona::
– Los dos procesos han de ejecutar los servicios de
comunicación al mismo tiempo
Proceso B
Avanza la ejecución
Proceso A
Proceso B
Proceso A
enviar
Espera
recibir
recibir
El proceso A espera al B
enviar
Espera
El proceso B espera al A
• Comunicación asíncrona
– Los dos procesos no tiene que ejecutar los servicios de
comunicación al mismo tiempo
Conceptos de sistemas operativos
INTERBLOQUEOS: Se producen por la competencia
entre procesos por conseguir los recursos del
sistema
20
14/10/2009
Conceptos de sistemas operativos
GESTIÓN DE MEMORIA
Asignación/liberación de memoria
Mecanismos de protección
Gestión de huecos y compactación
Gestión de la memoria virtual (paginación, segmentación)
Conceptos de sistemas operativos
• Memoria:
Memoria: vector enorme de palabras o bytes, cada uno con su
propia dirección.
dirección.
– Compartido por UCP y dispositivos E/S.
– Volátil:
V látil: pierde
Volátil
i d su contenido
t id sii ell sistema
i t
f ll .
falla.
falla
• El SO tiene la responsabilidad de gestionar los siguientes
aspectos de la memoria
memoria::
– Mantener un mapa de las partes de memoria en uso y saber
quién las está usando
usando..
– Decidir qué procesos se deben cargar,
cargar, y dónde,
dónde, cuando hay
memoria disponible
disponible..
– Asignar y liberar espacio de memoria cuando sea necesario
necesario..
– Ofrecer servicios para que los procesos puedan compartir
memoria..
memoria
21
14/10/2009
Conceptos de sistemas operativos
GESTIÓN DE DISPOSITIVOS DE E/S
Teclados, monitores, impresoras, discos, ...
Software de entrada salida dependiente del dispositivo
(drivers)
Software de E/S independiente del dispositivo (protección,
buffering,, esquema de nombrado, tamaño de bloque, ...)
buffering
Conceptos de sistemas operativos
• El gestor de E/S está formado por
por::
– Un sistema global de almacenamiento intermedio en memoria
memoria..
– Manejadores genéricos
genéricos,, uno por cada clase
clase,, de dispositivos.
dispositivos.
– Manejadores específicos para cada dispositivo
dispositivo..
• Almacenamiento secundario no volátil en dispositivos rápidos de
E/S (discos) como respaldo de la memoria
memoria..
• El SO tiene la responsabilidad de gestionar los siguientes aspectos
de la E/S y el almacenamiento secundario:
secundario:
– Traducir peticiones a formato de manejador
manejador..
– Copiar
C i memoria
i de/a
d / memoria
i a/de
/d controlador
controlador.
t l d .
– Controlar operaciones por DMA.
– Controlar dispositivos de E/S serie:
serie: teclado
teclado,, ratón,
ratón, etc.
– Asignación y liberación de espacio
espacio..
– Planificación de accesos a los dispositivos.
dispositivos.
22
14/10/2009
Conceptos de sistemas operativos
GESTIÓN DEL SISTEMA DE FICHEROS
 Estructura del sistema de ficheros
 Operaciones sobre ficheros
 Nombres de ficheros
 Descriptor de fichero
 Tipos de ficheros
Conceptos de sistemas operativos
• Archivo:
Archivo: conjunto de información lógicamente relacionada y
definida por su creador
creador..
• Directorio:
Directorio: conjunto de identificadores lógicos de archivos y su
relación con identificadores internos del SO.
• Archivos frecuentes:
frecuentes: programas (fuentes y ejecutables)
ejecutables) y datos
datos..
• El SO tiene la responsabilidad de gestionar los siguientes
aspectos del servicio de archivos
archivos::
– Creación y borrado de archivos y directorios.
directorios.
– Primitivas para manipular archivos y directorios.
directorios.
– Proyectar los ficheros sobre almacenamiento secundario.
secundario.
– Hacer respaldo de archivos sobre dispositivos estables y no
volátiles..
volátiles
23
14/10/2009
Conceptos de sistemas operativos
ABSTRACCIÓN LÓGICA DEL SF
Posición
Visión lógica
Archivo A
Bloques: 13
20
1
8
3
16
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Bloques de la Unidad de Disco
Visión física
Conceptos de sistemas operativos
Estructura: Árbol. Un directorio también es un fichero
24
14/10/2009
Conceptos de sistemas operativos
Operaciones sobre ficheros
 Crear, abrir, cerrar, leer, escribir, posicionar, borrar, ...
Cada fichero tiene un nombre
Absoluto, desde el directorio raíz (root directory)
directory)
/dacya/ssoo/grupoA
Relativo al directorio de trabajo (working directory)
directory)
si wk = /dacya/ssoo,
grupoA
Existe una llamada para establecer el directorio de trabajo
Descriptor de fichero (file descriptor)
descriptor)
Cuando se abre un fichero, el SO devuelve un identificador
Conceptos de sistemas operativos
Tipos de ficheros
 Ficheros ordinarios
 Ficheros especiales. Los dispositivos de E/S se ven como
ficheros ordinarios:
 Especial de bloques (discos /dev
/dev/hd01)
/hd01)
 Especial de caracteres (impresora /dev
/dev//lpt)
lpt)
Pipes
Un pseudofichero
Dos descriptores: para leer y para escribir
Comunican procesos
Proceso A
Proceso B
pipe
25
14/10/2009
Conceptos de sistemas operativos
SEGURIDAD Y PROTECCIÓN
• Protección:
Protección: controlar accesos a los recursos de
usuario y sistema
sistema..
– Distinguir entre uso autorizado y no autorizado.
autorizado.
– Especificar los controles de acceso a llevar a cabo
cabo..
– Proporcionar métodos de control de acceso
acceso..
• Seguridad
Seguridad:: proteger al sistema de un uso indebido.
indebido.
– Autenticar a los usuarios.
usuarios.
– Evitar amenazas al sistema (gusanos
gusanos,, virus, piratas,
piratas,
fuego,, etc.)
fuego
– Evitar la intercepción de comunicaciones
comunicaciones:: cifrado
cifrado,, canales
seguros,, etc.
seguros
Conceptos de sistemas operativos
Shell: Intérprete de comandos
 No es parte del sistema operativo
 sh,
h csh,
h ksh,
k h bash
b h
 Crea procesos para ejecutar comandos
 Gestiona las redirecciones
cat file1 file2 file3 | sort > /dev/lp
Entrada/Salida
Pipes
Ejecución en background
cat file1 file2 file3 | sort > /dev/lp &
Seguridad: Bits rwx de los ficheros
(propietario, grupo, otros) rwx rwx rwx
26
14/10/2009
Conceptos de sistemas operativos
ACTIVACIÓN DEL SO
•
Fuentes de las peticiones
peticiones::
–
–
–
–
Mandatos de los usuarios interpretados por el shell
Llamadas al sistema emitidas por los programas
Interrupciones producidas por los periféricos
Condiciones de excepción o error del hardware
• Forma de solicitar los servicios
servicios::
– Por llamada CALL  problema de seguridad
– Por interrupción o trap
– Rutina de biblioteca
biblioteca::
• Instrucciones de máquina que preparan la llamada
Llamadas al sistema
Llamadas en POSIX: Son invocaciones de rutinas de biblioteca
PROCESOS DE USUARIO Y
PETICIONES E SERVICIO
INTERFAZ
DEL SO
so
27
14/10/2009
Conceptos de sistemas operativos
Avanza la ejecución
FASES EN LA ACTIVACIÓN DEL SO
Proceso A
Se solicita el SO
Salva el estado del proceso A
Sistema
operativo
Realiza la función pedida
Planificador
Activador
Proceso B
Introdución
 ¿Qué es un sistema operativo?
 Tipos
p de sistema operativos
p
 Arranque del sistema operativo
 Estructura de los sistemas operativos
 Conceptos de los sistemas operativos
 Llamadas al sistema
28
14/10/2009
Llamadas al sistema
 Interfaz entre aplicaciones y SO.
 Generalmente son funciones en ensamblador.
nivel
 Actualmente en lenguajes de alto nivel.
 Servicios típicos del sistema operativo
 Gestión de procesos
 Gestión de procesos ligeros (threads
(threads))
 Gestión de señales, temporizadores
 Gestión de memoria
 Gestión de E/S
 Gestión de ficheros y directorios
 Ejemplos de llamada
 read
read:: permite leer datos de un fichero
 fork
fork:: permite crear un nuevo proceso
Llamadas al sistema
• Los servicios se programan mediante sentencias de un
lenguaje (p.e
p.e.. C).
• Estas sentencias son como llamadas a función
• Se convierten,
convierten, mediante una rutina de biblioteca de
sistemas en un conjunto de instrucciones de máquina que
terminan con una instrucción TRAP
TRAP..
• El TRAP
TRAP,, como toda excepción es tratada por el SO
• El SO realiza el servicio pedido y devuelve un valor
• Ejemplo
Ejemplo::
int fork()
() {
int r;
LOAD R8, FOR_SYSTEM_CALL
TRAP
LOAD r, R9
return r;
}
29
14/10/2009
Llamadas al sistema
Aplicación de usuario
fork()
fork
()
Modo
usuario
Modo
kernel
Interfaz de llamadas al sistema
:
i
:
fork()
fork
()
Implementación
de la llamada
fork()
fork
()
.
.
.
RTE
Llamadas al sistema
Ejemplo:
count = read (fd, buffer, nbytes)
30
14/10/2009
Llamadas al sistema
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.
Llamadas al sistema
Resumen
31
14/10/2009
Llamadas al sistema
Usuarios
Programas de usuario
Shell 1
Shell 2
POSIX
Win 32
Gestión de Seguridad Comunicac.
Gestión de Gestión de Gestión de
y
y
archivos y
procesos memoria
la E/S
directorios protección sincroniz.
Varias API
Sistema
operativo
Núcleo
Hardware
Llamadas al sistema
Gestión de procesos
pid = fork
fork()
()
Crea un proceso idéntico al padre
pid = waitpid
waitpid((pid,
pid, &
&statloc
statloc,, options)
options)
Espera la terminación de un hijo
s = kill(
kill(pid,
pid, signal)
signal)
Envía una señal a un proceso
s = execve(
execve(name,
name, argv
argv,, environp
environp))
Reemplaza la imagen del proceso (código+entorno
(código+entorno))
exit(status)
exit(status)
Termina la ejecución del proceso y devuelve el estado
32
14/10/2009
Llamadas al sistema
Gestión de ficheros
fd = open(file
open(file,, how
how,, …)
Abre un fichero com lectura, escritura o ambas
s = close
close((fd
fd))
Cierra un fichero abierto
n = read(
read(fd
fd,, buffer, nbytes)
nbytes)
n = write
write((fd
fd,, buffer, nbytes)
nbytes)
Lee (escribe) datos desde un fichero (buffer) a un buffer (fichero)
position = lseek(
lseek(fd
fd,, offset, whence)
whence)
Mueve el puntero del fichero
s = stat
stat((name,
name, &buf
&buf))
Devuelve información acerca del estado del fichero
s = chmod
chmod((name,
name, mode
mode))
Cambia los bit de protección del fichero
Llamadas al sistema
Gestión de directorios y ficheros
s = mkdir
mkdir((name,
name, mode
mode))
Crea un nuevo directorio
s = rmdir
rmdir((name
name))
Borra un directorio vacío
s = chdir
chdir((dirname)
dirname)
Cambia el directorio de trabajo
s = link(name1, name2)
Crea una nueva entrada, name2, apuntando a name1
s = unlink
unlink((name
name))
Borra una entrada de directorio
s = mount
mount((spsecial,
spsecial, name
name,, flag
flag))
Monta un sistema de ficheros
s = umount
umount((spsecial)
spsecial)
Desmonta un sistema de ficheros
33
14/10/2009
Llamadas al sistema. Ejemplo Unix
/* Programa A. Fichero –
Fichero padre.c
* Manda ejecutar el programa B
* Lee caracteres del terminal y cada vez que detecta “salto de linea”
* envia una señal al proceso B
*/
#include <stdio.h>
#include <signal.h>
<signal h>
#include <unistd.h>
#include <stdlib.h>
pid_t resp;
char buf[1];
main() {
resp = fork();
if (resp == 0)
if (execlp("./hijo","hijo", NULL) == -1) {
perror("exec"), exit(1);
}
while (read(0, buf, 1) == 1) {
if (buf[0] == '\n') {
kill(resp, SIGUSR2);
}
}
}
Llamadas al sistema. Ejemplo Unix
/* Programa B.
Fichero hijo.c
* Crea un fichero y escribe en él
* una línea por cada señal que recibe, hasta un máximo de 5
*/
#include <fcntl.h>
#include <signal.h>
#include <stdlib
<stdlib.h>
h>
int fd, n=5;
void proc(int arg) {
n--;
return;
}
int main() {
signal(SIGUSR2, proc);
if ((fd = open("fichero", O_CREAT|O_TRUNC|O_WRONLY)) == -1) {
perror("open"); exit(1);
}
while (n!= 0) {
pause();
write(fd, "Linea\n", 7);
}
return 0;
}
34
14/10/2009
Llamadas al sistema
Arranque del ordenador en Unix
El HW lee el primer sector de la primera pista:
(programa bootstrap)
bootstrap) y lo ejecuta: cargar el S.O.
 Inicializa kernel,
kernel, GM, FS.
 Cede control al programa init
init..
 init lee /etc/
etc/ttys (número de terminales).
 init crea un proceso hijo por cada terminal.
 Los hijos ejecutan (exec
(exec)) el programa /bin
bin//login.
login.
 Esperan a que un usuario entre al sistema.
 /bin
bin//login ejecuta la shell correspondiente (en /etc/
etc/passwd)
passwd)
 La shell crea un hijo por cada comando.
35