PDF de programación - Sistemas operativos II

Imágen de pdf Sistemas operativos II

Sistemas operativos IIgráfica de visualizaciones

Publicado el 5 de Julio del 2017
595 visualizaciones desde el 5 de Julio del 2017
6,3 MB
163 paginas
Creado hace 17a (20/11/2006)
Sistemas operativos II

Procesos en UNIX

Introducción sistema operativo UNIX
Procesos en UNIX
Planificación
Creación y terminación de procesos
Señales
Comunicación entre procesos

Procesos en UNIX

Introducción sistema operativo UNIX
Procesos en UNIX
Planificación
Creación y terminación de procesos
Señales
Comunicación entre procesos

Procesos en UNIX

Introducción sistema operativo UNIX
Procesos en UNIX
Planificación
Creación y terminación de procesos
Señales
Comunicación entre procesos

Antecedentes

I UNiplexed Information Computing Service (versión

monousuario de MULTICS)

I Primera implementación sobre SEC PDP-7 (1969) por Ken

Thomson y Dennis Ritchie

I portada a PDP-11/20 con runoff. Adoptada por Laboratorios

BELL como procesador de textos en 1970

I 1972 2nd Edition
I 1973 Implementación en C (Thompson y Ritchie)
I 1974 4th Edition
I 1977 5th & 6th Edition
I 1979 7th Edition (ascendiente directo de las versiones

actuales)

System V

I Introducido por ATT en 1983. System V release 1.

Compromiso para mantener compatibilidad ascendente

I System V release 1: vi, biblioteca curses
I System V release 2 (1985): protección y bloqueo de archivos
I System V release 2.1: paginación bajo demanda
I System V release 3 (1987): redes
I System V release 4: unifica versiones de distintos fabricantes

BSD

I Universidad de Berkley entró en contacto un UNIX 4th edition
I Bill Joy en 1977 diseño un añadido para las 6th edition

llamado Berkeley Software Distribution (compilador pascal,
cshell, ex..)
I 1978 2BSD
I 1979 3BSD basada en 2BSD y 7th edition: memoria virtual

(DEV VAX-11/780)

I DARPA(Defence Advanced Research Project Agency)

consolida la 4BSD

I 1983 4.1 BSD
I 4.2BSD: nuevo sistema de archivos
I 1987 4.3BSD
I Sun Microsystems añadió NFS a 4.3 BSD
I Actualmente freeBSD, openBSD netBSD

POSIX

I Término acuñado por Richard Stallman
I Portable Operating System Interface for uniX
I Designada con IEEE 1003, ISO/IEC 9945
I Familia de estándares que definen una API para software

compatible con distintas variantes de UNIX

I Varias extensiones

I POSIX.1: Incorpora estándar ANSI C
I POSIX.1b: Tiempo real
I POSIX.1c: Threads

Relación entre las distintas variedades de UNIX

I El núcleo reside en un fichero (/unix, /vmunix /vmlinuz
/kernel.GENERIC..) que se carga al arrancar la máquina
(procedimiento bootstrap)

I El núcleo (kernel) inicializa el sistema y crea el entorno para

que se ejecuten los procesos y crea unos pocos procesos que a
su vez crearán el resto.

I INIT (proceso con pid 1) es el primer proceso de usuario y

antecesor del resto de procesos de usuario en el sistema
I El núcleo (kernel) de UNIX interactua con el hardware
I Los procesos interactuan con el núcleo a través de la interfaz

de llamadas al sistema

freebsd 4.9

SESS

USER PID PPID PGID
0
root
0 c0326e60
0
1
root
1 c08058c0
0
2
root
0 c0326e60
0
3
root
0 c0326e60
0
4
root
0 c0326e60
0
5
root
0 c0326e60
0
6
root
0 c0326e60
0
7
root
0 c0326e60
0
root 90
1
90 c08509c0
root 107
1 107 c085cd80
root 112
1 112 c0874500
root 115
1 115 c0874600
root 117 115 115 c0874600

JOBC STAT

0 DLs
0 ILs
0 DL
0 DL
0 DL
0 DL
0 DL
0 DL
0 Ss
0 Is
0 Is
0 Is
0 I

TT
??
??
??
??
??
??
??
??
??
??
??
??
??

COMMAND
(swapper)
/sbin/init --
(taskqueue)
(pagedaemon)
(vmdaemon)
(bufdaemon)
(syncer)
(vnlru)
/sbin/natd -n ed0
/usr/sbin/syslogd -s
mountd -r
nfsd: master (nfsd)
nfsd: server (nfsd)

linux 2.4

F S UID PID PPID C PRI
4 S
68
69
1 S
79
1 S
1 S
69
69
1 S
69
1 S
67
4 S
1 S
69
69
1 S
69
1 S
69
5 S
1 S
69
69
5 S

1
0
2
0
3
0
4
0
5
0
0
6
0 229
0 375
0 492
0 1571
0 1574
0 1592
0 1604

0 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0

NI ADDR SZ WCHAN

TTY

0 -
0 -
19 -
0 -
0 -
0 -
-4 -
0 -
0 -
0 -
0 -
0 -
0 -

373 select ?
0 contex ?
0 ksofti ?
0 kswapd ?
0 bdflus ?
0 kupdat ?
369 select ?
0 down_i ?
?
0 ?
561 select ?
547 syslog ?
637 select ?
555 select ?

CMD
init
keventd
ksoftirqd_CPU0
kswapd
bdflush
kupdated
udevd
knodemgrd_0
khubd
syslogd
klogd
dirmngr
inetd

solaris 7 sparc

F S
19 T
8 S
19 S
19 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S
8 S

UID
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0

PID PPID C PRI NI
0
0 SY
0 41 20
0 SY
0
0 SY
0
40 20
279 0
1 0
41 20
41 20
1 0
45 20
1 0
57 20
1 0
1 0
41 20
40 20
1 0
41 20
1 0
1 0
41 20
41 20
1 0
51 20
1 0
41 20
1 0
279 0
46 20

0
1
2
3
282
123
262
47
49
183
174
197
182
215
198
179
283

SZ
0
98
0
0
2115
278
212
162
288
313
230
444
3071
387
227
224
627

TTY
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?

CMD
sched
init
pageout
fsflush
Xsun
rpcbind
sac
devfseve
devfsadm
automoun
lockd
syslogd
in.named
lpsched
cron
inetd
dtlogin

estructura de un sistema UNIX

En UNIX son necesarios dos modos de ejecución

I modo usuario se ejecuta el código de usuario
I modo kernel se ejecutan las funciones del kernel

1. Llamadas al sistema: Los procesos de usuario solicitan

servicios explicitamente a través de la interfaz de llamadas al
sistema.

2. Excepciones: Situaciones excepcionales (división por 0,

errores de direccionamiento..) causan excepciones hardware
que requieren intervención del kernel.

3. Interrupciones: Los dispositivos periféricos interrumpen para

notificar al kernel de diversos sucesos (terminación de e/s,
cambio de estado..)

I Algunas instrucciones hardware solo pueden ser ejecutadas en

modo kernel.

En un sistema UNIX tradicional un proceso viene definido por

I espacio de direcciones: Conjunto de direcciones de memoria

que el proceso puede referenciar.

I punto de control del proceso que indica cual es la siguiente

instrucción a ejecutar utilizando un registro hardware que se
llama C.P.

En un sistema UNIX moderno puede haber varios puntos de
control (threads).
Los procesos manejan direcciones virtuales de memoria. Una parte
de este espacio corresponde al código y los datos del kernel. Se
llama system space o kernel space
El system space solo puede ser accedido en modo kernel
El kernel mantiene

I estructuras de datos globales
I estructuras de datos específicas de cada proceso

El espacio de direcciones del proceso actual es accesible
directamente pues los registros de la MMU tienen la información
necesaria.

Mapa de memoria en linux

0xc0000000 the invisible kernel

initial stack
room for stack grouth
shared libraries
unused
malloc memory
uninitialized data
initialized data
text

0x60000000
brk

end data
end code
0x00000000

Mapa de memoria en solaris

I kernel de unix reentrante
I varios procesos pueden estar ejecutando simultáneamente

distintas funciones del kernel

I varios procesos pueden estar ejecutando simultáneamente la

misma funcion del kernel

I código del kernel es de solo lectura
I datos (variables globales) del kernel protegidos de accesos

cocurrentes

I cada proceso tiene su propia pila del kernel

Procesos en UNIX

Introducción sistema operativo UNIX
Procesos en UNIX
Planificación
Creación y terminación de procesos
Señales
Comunicación entre procesos

I proceso: instancia de un programa en ejecución
I proceso: entidad que ejecuta un programa y proporciona un

entorno de ejecición para él; en concreto un espacio de
direcciones y uno (o varios) puntos de control

I un proceso tiene un tiempo de vida definido

I se crea mediante la llamada fork() (o vfork())
I termina mediante exit()
I puede ejecutar un programa mediante alguna de las llamadas

de la familia exec()

I todo proceso tiene un proceso padre
I un proceso puede tener varios procesos hijos
I estructura jerárquica en forma de arbol con el proceso init

como tronco

I si un proceso termina antes que sus procesos hijos estos pasan

a ser heredados por init

Ejemplo de arbol de procesos

Estados de un procesos en SystemV R2

I inicial (idle): El proceso está siendo creado pero todavía no

está listo para ejecición

I listo (runnable, ready to run)
I en espera (blocked, asleep). Tanto en este estado, como en
el anterior, el proceso puede estar en la memoria principal o
en el intercambio (swapped)

I ejecución modo usuario (user running)
I ejecución modo kernel (kernel running)
I zombie: El proceso ha terminado pero su proceso padre no

ha hecho wait(), con lo que no se ha vaciado su entrada en la
tabla de procesos y para el sistema el proceso sigue existiendo.

I A partir de 4.2BSD hay un nuevo estado: parado (stopped)
I Puede ser parado en espera o parado listo
I Se llega al estado de parado al recibir una de las siguientes

señales

I SIGSTOP
I SIGTSTP ctrl-Z
I SIGTTIN
I SIGTTOU

I Se sale de él mediante la señal SIGCONT

I La ejecución de un proceso comienza en modo kernel
I Las transiciones de ejecución a espera son desde ejecución en

modo kernel

I Las transiciones de ejecución a listo son desde ejecición en

modo kernel

I Un proceso termina desde ejecución en modo kernel
I Cuando un proceso termina queda en estado zombie hasta

que su padre hace una de las llamadas wait

Un proceso se ejecuta dentro de un determinado contexto que
contiene la información necesaria para ejecutar dicho proceso.
Dicho contexto está formado por:

I Espacio de direcciones de usuario. Usualmente formado

por texto (código), datos, pila, regiones de memoria
compartida . . .

I Información de control.

I estructura proc
I u area
I pila del kernel
I mapas de traslación de direcciones

I credenciales
I variables de entorno
I contexto hardware Los contenidos de los registros hardware
(PC, PSW, SP, registros de FPU y MMU . . . ). Cuando hay
un cambio de contexto se guardan en una parte de la u area
llamada PCB (Process Control Block)

estructura proc

I El kernel mantiene un array de estructuras proc llamado

proccess table

I Está en el espacio de datos del kernel
I La estructura proc de un proceso es siempre visible para el

kernel, incluso cuando el proceso no está en CPU

I Contiene la información del proceso que es necesaria en todo

momento

estructura proc

I identificación del proceso
I localización de la u area (mapa de direcciones)
I estado del
  • Links de descarga
http://lwp-l.com/pdf4880

Comentarios de: Sistemas operativos II (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad