Arquitectura de Computadores

Anuncio
Arquitectura de Computadores
Arquitectura de
Computadores
Departament d’Informàtica de Sistemes i Computadors
E.P.S.Alcoi
Arquitectura de Computadores
1
Bloque Temático I: Introducción al S.O. UNIX
ÖTema 1: Introducción a los Sistemas
Operativos
ÖTema 2: Introducción al S.O. UNIX
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
2
1
Arquitectura de Computadores
Objetivos
1.- Presentar UNIX como ejemplo de SO real. Permite:
• Profundizar en los conceptos descritos en el tema
anterior
• Disponer de un marco de pruebas para aplicar los
conceptos que se desarrollan en los temas siguientes.
2.- Presentar sus principales abstracciones: Proceso y
Fichero.
Fichero
3.- Comentar las interfaces que se pueden encontrar en
un sistema UNIX.
• Presentar las llamadas al sistema más importantes.
• Dar una descripción genérica de su inté
intérprete de
órdenes.
rdenes
Arquitectura de Computadores
3
Introducción a UNIX
ÖContenido
ÖBibliografía
• A. Silberschatz, P. Galvin.
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
Sistemas Operativos. 5ª ed.
Capítulo 21.
• A. Tanenbaum
Modern Operating Systems.
• Morgan.
Introducción al Unix sistema V
3.- El intérprete de órdenes
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
4
2
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
5
Conceptos básicos
Unix = S.O. multiusuario y
de tiempo compartido muy
popular
•
Reseña histórica:
¾Primera versión: escrita por
Ken Thompson en los
laboratorios Bell como
reacción a MULTICS,
finales de los 60. Versión
monousuario en lenguaje
ensamblador
¾Reescrito en C (código
público). Gran difusión
entre la comunidad
científica.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
6
3
Arquitectura de Computadores
Conceptos básicos
•
Dos líneas comerciales:
¾System V (desarrollada por AT&T)
¾BSD (Berkeley Software Distribution).
•
Intentos de estandarización:
¾POSIX (Portable Operating System Interface)
¾OSF (Open Software Foundation)
¾UI (Unix International)
• Su ámbito se extiende desde los computadores personales
hasta los grandes sistemas
• Variantes abiertas para computadores personales (ej.Linux, FreeBSD, etc.). Popularidad creciente
Arquitectura de Computadores
7
Conceptos básicos
ÖCaracterísticas:
• Portable:
¾Escrito en C
¾Separación de las rutinas dependientes del hardware.
¾Versiones para arquitecturas diversas (de PCs a grandes
sistemas)
• Modular:
¾Su concepción estimula la descomposición en módulos
– Módulo = componente con funciones bien definidas: fácil de
poner a punto e integrar.
¾Evolutivo continuamente se perfecciona y enriquece con
nueva funcionalidad
¾Abierto podemos añadir nuevos componentes sin depender
de un único fabricante.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
8
4
Arquitectura de Computadores
Conceptos básicos
ÖCaracterísticas (II):
• Sistema multiusuario y multitarea:
¾Garantías de privacidad de los datos almacenados en ficheros
¾Personalización del entorno de ejecución.
• Sistema de ficheros jerárquico:
¾Clasificación en directorios anidables.
¾Permite unir al sistema principal otros sistemas de ficheros (ej.
en red)
Arquitectura de Computadores
9
Conceptos básicos
ÖCaracterísticas (III):
• Independencia de dispositivo:
¾Trata ficheros y dispositivos de E/S de manera uniforme (con el
mismo conjunto de llamadas al sistema).
• Interfaz con el usuario simple e interactiva:
¾El intérprete de órdenes (shell) es un programa independiente
que el usuario puede sustituir
¾La sintaxis del shell es simple y homogénea.
• Proporciona un completo entorno de programación:
¾Filtro = utilidad simple: se concentra en realizar bien una sola
función
¾Flexible Los tubos y las redirecciones de E/S permiten
combinar filtros según las necesidades y preferencias de cada
usuario.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
10
5
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
11
Ficheros
Ö
Concepto
•Abstracción del espacio de almacenamiento
secundario.
Ö
Tipos de fichero
•
Regular
¾Representa un fichero convencional de datos
(programa, texto, ...)
•
Directorio
¾Utilizados por Unix para asociar nombres a los
ficheros
•
Especial
¾Representa un dispositivo del sistema.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
12
6
Arquitectura de Computadores
Ficheros
Ö
Atributos de ficheros
•
•
•
•
•
•
•
Tipo de fichero
Propietario (owner UID)
Grupo propietario (owner GID)
Permisos de acceso (permission bits)
Número de enlaces
Instantes de creación, último acceso y última modificación
Tamaño
Arquitectura de Computadores
13
Ficheros
ÖVisualización de atributos de ficheros
$ ls -la
drwxr-xr-x
drwx------rw-r--r-drwxr-xr-x
permisos
3
7
1
2
aespinos
aespinos
aespinos
aespinos
gti
gti
gti
gti
propietario
nº enlaces
1024
1024
1401
24
Oct
Oct
Oct
Oct
7
7
7
7
tamaño
grupo
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
10:02
10:02
10:03
10:02
.
..
notas
tests
nombre
modificación
14
7
Arquitectura de Computadores
Ficheros
ÖImplementación de ficheros
• Cuando se crea un fichero se le asigna un nodonodo-i
• El fichero se identifica por el número del nodonodo-i asignado
NODONODO-i = estructura que almacena atributos de un
fichero
• Los nodos-i se
mantienen en un
área dedicada,
situada al
principio del
disco o
partición.
Nodo-i
Atributos
del
Fichero
Asignación de
espacio
NOTA: el nombre de
un fichero no se
almacena en su nodo-i
Arquitectura de Computadores
15
Ficheros regulares
Ö
Concepto: vector lineal de bytes
•
Las aplicaciones interpretan esta estructura formando
otras estructuras más complejas
Registros
Unix
Texto
u
n
a
interpretación
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
l
i
n
e
a
NL
16
8
Arquitectura de Computadores
Directorios
Ö
Concepto
•
•
Es un tipo de fichero que permite organizar los ficheros
jerá
jerárquicamente.
rquicamente
Establece la forma de nombrar los ficheros
/
dev
ttyp1
lp0
usr
home
dsk010g
so1
so101
.profile
practica1
etc
var
so2
so102
problema2
so103
ejemplo1
.profile
seg
a1
b2
Arquitectura de Computadores
17
Directorios
Ö
Implementación de directorios
•
•
•
•
La estructura básica es la del fichero regular
Unix interpreta el fichero como si se encontrase organizado
en registros
A cada registro se le denomina una entrada de directorio
Una entrada consta de dos campos
¾ número de nodo-i
¾ nombre del fichero
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
18
9
Arquitectura de Computadores
Directorios
Ö
Implementación de directorios
•
Siempre existen al menos dos entradas:
¾ . directorio actual
¾ .. directorio superior
• Ejemplo:
1
1
4
3
9
456
/
dev
usr
home
etc
.
..
dev
usr
home
etc
El directorio raíz será el único en el
que la entrada ‘.’ y la ‘..’ tendrán el
mismo número de nodo-i
Arquitectura de Computadores
19
Directorios
Ö
Esquema de nombrado de ficheros
•
•
•
•
•
•
Un fichero se identifica mediante su ruta de acceso
Una ruta es absoluta si comienza por /
Si no comienza por / se considera relativa al directorio de
trabajo actual
Las entradas . y .. pueden utilizarse para formar rutas
Los ficheros pueden tener más de un nombre.
Cada uno de los nombres de un fichero se denomina un
enlace.
enlace Existen dos tipos de enlace: físicos y simbó
simbólicos.
licos
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
20
10
Arquitectura de Computadores
Directorios
ÖTipos de enlace (i):
Enlaces físicos
/usr/local
–En este caso todos los nombres
hacen referencia a un mismo nodo-i
–El fichero sólo se elimina del disco
abc xyz
cuando se borran todos los enlaces
(todas las entradas de directorio que
lo referencian).
–Sólo se permite (salvo al
administrador) enlazar ficheros
regulares (no directorios)
Arquitectura de Computadores
21
Directorios
ÖTipos de enlace (ii):
Enlaces simbólicos
–El fichero se elimina cuando se
borra el enlace físico. Si
permanece el enlace simbólico
provoca errores al tratar de
accederlo.
–Se puede hacer con ficheros y
directorios, existe la posibilidad
de ciclos.
–Permiten enlazar ficheros que
residen en dispositivos físicos
distintos.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
/usr/loca
l
abc xyz
/usr/local/abc
22
11
Arquitectura de Computadores
Directorios
ÖVisualización de enlaces físicos y simbólicos
• $ ln notas actas
• $ ln -s notas notassim
$ ls -li
210000 -rw-r--r-458390 drwxr-x--57609 drwxr-x--210000 -rw-r--r-210001 lrwxrwxrwx
notas
210004 -rw-rw-rw657927 drwxr-x--57608 drwxr-x---
2
6
6
2
1
(físico)
(simbólico)
agarcia
agarcia
agarcia
agarcia
agarcia
gti
gti
gti
gti
gti
19
1024
1024
19
5
Jun
Nov
Nov
Jun
Jun
19 11:33 actas
26 1997 ada
14 1997 concu96
19 11:33 notas
19 11:52 notassim ->
1 agarcia
4 agarcia
2 agarcia
gti
gti
gti
776 Jun 19 12:06 p
1024 Oct 24 1997 planif
1024 Nov 14 1997 practicas
nº nodo-i
Arquitectura de Computadores
23
Directorios
Estructura jerárquica. Punto de vista del usuario
/
dev
ttyp1
lp0
usr
home
so1
dsk010g
so101
.profile
practica1
problema2
etc
var
so2
so102
so103
ejemplo2 ejemplo1 .profile
seg
a1
b2
$ln /home/so1/so101/problema2 /home/so1/so102/ejemplo2
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
24
12
Arquitectura de Computadores
Directorios
Ö
Estructura jerárquica. Punto de vista de Unix
1
1
2
3
4
5
6
278
4
842
583
345
.
..
dev
usr
home
etc
var
2
1
34
108
13
842
278
58
922
28
.
..
so101
so102
so103
4
1
278
987
.
..
ttyp1
lp0
dsk010g
.
..
so1
so2
987 .
4 ..
583
278
39
408
922
93
.
..
.profile
problema2
memoria
.
..
.profile
ejemplo1
ejemplo2
seg
Enlace físico
Arquitectura de Computadores
25
Directorios
Ö
Estructura de directorios típica en Unix
bin
sh
cp
ln
lib
libc.a
libm.a
usr
bin
lib
local
man
etc
passwd
dev
tty00
tty01
fd0
/
tmp
home
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
ejecutables básicos
bibliotecas de lenguajes
mandatos de usuario
otras bibliotecas
software local
manuales
ficheros de administración
ficheros especiales
uno por cada dispositivo de E/S
ficheros temporales
directorios de usuarios
26
13
Arquitectura de Computadores
Ficheros especiales
Ö
Representan los dispositivos de entrada-salida
•
•
Se encuentran en el directorio /dev
La interfaz para los dispositivos es idé
idéntica a la de los
ficheros regulares.
¾Se utiliza el mismo conjunto de llamadas al sistema para
acceder a los dispositivos y a los ficheros regulares.
¾Un dispositivo se considera una secuencia de bytes
• Se caracterizan por dos atributos especiales
¾major number : identificativo del manejador de dispositivo
asociado. Representa el tipo del dispositivo
¾minor number : identifica una unidad del tipo de dispositivo.
(Disco duro D, terminal 34)
Arquitectura de Computadores
27
Ficheros especiales
Ö
Se distinguen dos tipos de ficheros especiales
•
Los ficheros especiales de bloques
¾sirven para modelar los dispositivos de E/S que consisten en
una colección de bloques directamente direccionables como
los discos duros, flexibles, CD-ROM, discos RAM, particiones
¾son direccionables: se puede leer o escribir a partir de una
cierta posición.
¾/dev/fd0, /dev/hda
• Los ficheros especiales de caracteres
¾sirven para modelar los dispositivos de E/S que aceptan o
producen flujos de caracteres (líneas serie, interfaces LAN,
terminales, impresoras, módems)
¾sólo admiten el acceso secuencial
¾/dev/tty00, /dev/lp0
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
28
14
Arquitectura de Computadores
Ficheros especiales
ÖVisualización de atributos de ficheros especiales
$ ls -l /dev
brw-r----brw-r----brw-r----brw-r----brw-r----crw------crw------crw------crw-r----crw-r----brw-r----brw-r----crw-rw-rw-
1
1
1
1
1
1
1
1
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
root
root
root
disk
disk
disk
floppy
floppy
root
root
root
lp
lp
disk
disk
sys
3,
3,
3,
2,
2,
4,
4,
4,
6,
6,
1,
1,
1,
1
2
3
0
1
0
1
2
0
1
0
1
3
May
May
May
May
May
Jun
Jun
Jun
May
May
May
May
May
28 1997 hda1
28 1997 hda2
28 1997 hda3
28 1997 fd0
28 1997 fd1
9 07:09 tty0
18 15:01 tty1
10 11:36 tty2
28 1997 lp0
28 1997 lp1
28 1997 ram0
28 1997 ram1
28 1997 null
major number
minor number
Arquitectura de Computadores
29
Montaje de directorios
Ö
Permite añadir un sistema de ficheros a un directorio de
otro sistema de ficheros
•
•
•
Integra en un único árbol todo el sistema de directorios
Hace independiente el nombre del fichero del dispositivo
físico en el que reside
Integra en un único árbol sistemas de ficheros que residen
en dispositivos físicos distintos.
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
30
15
Arquitectura de Computadores
Montaje de directorios
Ejemplo: mount /dev/fd0 /usr/local
/dev/fd0
/dev/disc0
/
/
usr
user
bin
bin
lib
bin
lib
f1
local
lib
f1
Tras el montaje, el nombre absoluto
del fichero f1 es: /usr/local/f1
Arquitectura de Computadores
31
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
32
16
Arquitectura de Computadores
Procesos
Ö
Concepto
• Un programa es una colección de instrucciones y datos que
se almacenan en un fichero regular en disco. En su nodo-i el
fichero se marca como ejecutable, y el contenido del fichero
está organizado según las reglas del sistema operativo.
• Un proceso es una abstracción utilizada en los sistemas
operativos para poder ejecutar programas.
PROCESO = PROGRAMA EN EJECUCIÓ
EJECUCIÓN
Arquitectura de Computadores
33
Procesos
ÖAtributos del proceso
• Identidad
¾Identificador del proceso y del proceso padre (PID
PID,PPID
PPID)
¾Usuario propietario del proceso y grupo al que pertenece.
(UID
UID,GID
GID)
• Contexto
¾Directorio actual, máscara de creación de ficheros,
descriptores de ficheros abiertos
¾Tratamiento de señales
¾Contexto máquina (contador de programa, puntero de pila,
registros de uso general, ...)
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
34
17
Arquitectura de Computadores
Procesos
ÖAtributos del proceso (ii)
• Imagen de memoria:
¾código del programa, área de datos, área de pila
• Atributos de planificación:
¾prioridad, tiempos de ejecución
Arquitectura de Computadores
35
Procesos
Ö
Visualización de atributos
$ ps -fl
F
1
1
1
1
S
UID
PID PPID
S aespino 17682 17681
S
root 17681
171
R aespino 17708 17706
S aespino 17706 17698
flags
estado
UID
pid
C
0
0
2
0
PRI
158
154
178
158
NI
20
20
20
20
ADDR
a2a540
9ff800
9ffa00
a2a6c0
SZ
55
13
20
132
WCHAN
STIME TTY
5a3440 10:14:55 ttyp3
29cb30 10:14:55 ttyp3
10:17:36 ttyp3
5a4640 10:17:14 ttyp3
nice
pid padre
direccion
indice consumo
tamaño
prioridad
espera
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
TIME
0:00
0:00
0:00
0:00
COMD
-ksh
rlogind
ps -fl
bash
inicio
terminal
uso CPU
programa
36
18
Arquitectura de Computadores
Procesos
Ö
Creación de Procesos
•
•
•
Unix utiliza un mecanismo de creación por copia
El proceso hijo es una réplica exacta de su proceso
padre
El proceso hijo hereda la mayoría de atributos del
proceso padre:
¾ imagen de memoria
¾ UID, GID
¾ directorio actual
¾ descriptores de ficheros abiertos
Arquitectura de Computadores
37
Procesos
ÖCreación de Procesos
• Unix asigna un identificador
a cada proceso denominado
PID en el momento de la
creación del mismo
• Todo proceso conoce el
identificador de su proceso
padre, PPID
• La ejecución del hijo es
concurrente e
independiente
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
PID=32
bash
PPID=1
fork( )
PID=283
bash
PPID=32
38
19
Arquitectura de Computadores
Procesos
Ö
Ejecución de programas
•
•
•
•
Unix utiliza un mecanismo de sustitución para la ejecución
de programas
Las instrucciones y los datos del proceso se sustituyen por
las instrucciones y los datos de un nuevo programa
ejecutable
El programa comienza a ejecutarse desde el inicio
Se preserva el resto de su entorno
Arquitectura de Computadores
39
Procesos
Ö
Ejecución de programas
PID=4323
PID=4323
PPID=4319
exec(“/bin/ls”, …)
PPID=4319
programa /bin/ksh
programa /bin/ls
datos del programa
datos iniciales
contador del programa
inicio del programa
registros del procesador
registros del procesador
otros atributos
otros atributos
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
40
20
Arquitectura de Computadores
Procesos
ÖFinalización de Procesos
• Terminación normal: El proceso invoca su propia terminación.
¾exit
• Terminación anormal: El proceso termina por iniciativa del
sistema operativo al detectar alguna condición de error (violación
de límites, errores aritméticos) o por iniciativa de algún otro
proceso.
¾kill y señales
ÖEsperar la finalización de procesos
• Un proceso padre puede esperar la finalización de un proceso hijo
¾wait
Arquitectura de Computadores
41
Procesos
• Un proceso termina por completo cuando han sucedido:
¾ El proceso en sí finaliza (normal o anormalmente), y
¾ Su proceso padre ha realizado una llamada al sistema WAIT
1
2
3
wait()
PID=32
bash
PID=32
wait()
bash
PPID=1
PID=283
PID=283
cc
PPID=32
PID=32
bash
PPID=1
cc
4
PPID=32
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
bash
PPID=1
exit(
)
PID=32
PPID=1
PID=283
cc
PPID=32
42
21
Arquitectura de Computadores
Procesos
• Un proceso zombie es el resultado de haber finalizado
(normal o anormalmente) antes de que su padre haya
realizado un WAIT
1
2
3
PID=32
PID=32
bash
PID=32
bash
bash
PPID=1
PID=283
exit()
bash
PPID=1
PPID=1
PID=283
PID=283
bash
bash
PPID=32
PPID=32
PPID=32
zombie
Arquitectura de Computadores
43
Procesos
Ö
Jerarquía y herencia
•
•
•
Se establece una
jerarquía similar a la
del sistema de
ficheros
Init es el patriarca
de todos los
procesos que se
ejecutan en un
sistema Unix.
Es creado en el
arranque del sistema
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
tab
/init
/etc
---
----- --- -
init
bash
bash
UID32
emacs
bash
UID18
ls -l
login
UID15
UID0
pc
44
22
Arquitectura de Computadores
Procesos
Ö
tab
/init
/etc
---
Jerarquía y herencia (ii)
•
•
Cada usuario es
propietario de una rama
del árbol cuya raíz es el
intérprete de mandatos
Dicha rama se ejecuta
con el entorno del
usuario gracias al
mecanismo de herencia
----- ----- -
init
bash
bash
UID32
emacs
bash
UID18
ls -l
Arquitectura de Computadores
login
UID15
UID0
pc
45
Ejemplos
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main ( ) {
pid_t ident;
ident = fork ( );
switch (ident) {
case -1:
printf ("No he podido crear el proceso hijo\n");
break;
case 0:
printf ("Soy el hijo, mi PID es %d y mi PPID es %d\n", getpid( ),
getppid( ));
sleep (20);
break;
default:
printf ("Soy el padre, mi PID es %d y el PID de mi hijo es %d\n",
getpid( ), ident);
sleep (30);
}
printf ("Final de ejecucion de %d \n", getpid( ));
exit (0);
}
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
46
23
Arquitectura de Computadores
Ejemplos
bash-2.01$ gcc -o fo1 fo1.c
bash-2.01$ fo1&
[2] 27888
bash-2.01$ Soy el hijo, mi PID es 27889 y mi PPID es 27888
Soy el padre, mi PID es 27888 y el PID de mi hijo es 27889
bash-2.01$ ps l
FLAGS
UID
PID
100 2000 27816
0 2000 27818
0 2000 27888
0 2000 27890
40 2000 27889
bash-2.01$ ps l
Final de ejecucion
PPID PRI
27815 15
27816
0
27816
4
27816 17
27888
4
NI
0
0
0
0
0
SIZE
1852
5080
736
1044
736
RSS
1196
3520
288
544
284
WCHAN
build_mmap_
msgget
send_sig
FLAGS
UID
PID PPID PRI NI
SIZE
100 2000 27816 27815 15
0
1852
0 2000 27818 27816
0
0
5080
0 2000 27888 27816
2
0
736
0 2000 27891 27816 17
0
1044
44 2000 27889 27888
2
0
0
<zombie>)
bash-2.01$ Final de ejecucion de 27888
RSS
1196
3520
288
544
0
WCHAN
build_mmap_
msgget
send_sig
send_sig
STA
S
S
S
R
S
TTY
p5
p5
p5
p5
p5
TIME
0:00
0:01
0:00
0:00
0:00
COMMAND
bash
emacs fo1.c
fo1
ps l
fo1
STA
S
S
S
R
Z
TTY
p5
p5
p5
p5
p5
TIME
0:00
0:01
0:00
0:00
0:00
COMMAND
bash
emacs fo1.c
fo1
ps l
(fo1
de 27889
do_munmap
Arquitectura de Computadores
47
Ejemplos
bash-2.01$ ps l
FLAGS
UID
PID PPID PRI
COMMAND
100 2000 27816 27815 15
0 2000 27818 27816
0
fo1.c
0 2000 27892 27816 17
NI
SIZE
0
0
1852
5080
0
1044
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
RSS WCHAN
STA TTY TIME
1196 build_mmap_ S
3520 msgget
S
544
R
p5
p5
0:00 bash
0:01 emacs
p5
0:00 ps l
48
24
Arquitectura de Computadores
Ejemplos
#include <stdio.h>
int main (int argc, char *argv[ ])
{
int i;
printf ("\n Ejecutando el programa (%s). Sus argumentos son:
\n",argv[0]);
for ( i = 0; i < argc; i ++ )
printf (" argv[%d] : %s \n", i, argv[i]);
sleep(10);
if (execvp (argv[1],&argv[1]) < 0) {
printf ("Error en la invocacion \n");
exit (1);
};
exit (0);
}
Arquitectura de Computadores
49
Ejemplos
bash-2.01$ exe1 ls -l&
[1] 27915
Ejecutando el programa (exe1). Sus
argv[0] : exe1
argv[1] : ls
argv[2] : -l
bash-2.01$ ps l
FLAGS
UID
PID PPID PRI NI
100 2000 27906 27905 15
0
0 2000 27915 27906
7
0
0 2000 27916 27906 17
0
bash-2.01$ total 32
-rw-r----1 so2
so2
-rw-r----1 so2
so2
-rwxr-xr-x
1 so2
so2
-rw-r----1 so2
so2
-rwxr-xr-x
1 so2
so2
-rw-r----1 so2
so2
-rw-r----1 so2
so2
-rw-r----1 so2
so2
-rw-r----1 so2
so2
-rwxrwxr-x
1 so2
so2
-rw-r----1 so2
so2
-rw-r----1 so2
so2
bash-2.01$
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
argumentos son:
SIZE
1848
736
1044
RSS WCHAN
1196 build_mmap_
288 send_sig
544
597
576
4554
427
4770
576
963
2977
3236
4563
463
302
Dec
Dec
Dec
Dec
Dec
Dec
Dec
Dec
Dec
Dec
Dec
Dec
14
14
14
14
14
14
14
14
14
14
14
14
10:49
10:49
11:29
11:29
11:12
10:59
10:49
10:49
10:49
10:50
10:49
10:49
STA
S
S
R
TTY
p6
p6
p6
TIME
0:00
0:00
0:00
COMMAND
bash
exe1 ls -l
ps l
espe1.c
espe2.c
exe1
exec.c
fo1
fo1.c
fo2.c
inc-dec-01.c
inc-dec-02.c
nuevoprog
prog1.c
prog2.c
50
25
Arquitectura de Computadores
Ejemplos
bash-2.01$ exe1 ps l &
[1] 27917
bash-2.01$
Ejecutando el programa invocador (exe1). Sus argumentos son:
argv[0] : exe1
argv[1] : ps
argv[2] : l
bash-2.01$ ps l
FLAGS
UID
PID
COMMAND
100 2000 27906
0 2000 27917
ps l
0 2000 27918
bash-2.01$
bash-2.01$
FLAGS
UID
PID
COMMAND
100 2000 27906
100000 2000 27917
PPID PRI
NI
SIZE
RSS WCHAN
STA TTY TIME
27905
27906
15
4
0
0
1848
736
27906
17
0
1044
544
R
PPID PRI
NI
SIZE
RSS WCHAN
STA TTY TIME
0
0
1848
1040
27905
27906
10
4
[1]+ Done
bash-2.01$
1196 build_mmap_ S
288 send_sig
S
1196 lance32_sta S
540
R
p6
p6
0:00 bash
0:00 exe1
p6
0:00 ps l
p6
p6
0:00 bash
0:00 ps l
exe1 ps l
Arquitectura de Computadores
51
Procesos
Ö
Descriptores de fichero
•
•
Representan la asociación del proceso con la entrada-salida
que utiliza
Todos los ficheros que un proceso tiene abiertos se
registran en una tabla indexada por los descriptores de
fichero
0
P1
1
2
3
f1.c
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
fd
fd==open(“f1.c”,
open(“f1.c”,O_RDWR);
O_RDWR);
......
read(fd,
read(fd,&buffer,
&buffer,nbytes);
nbytes);
......
write(fd,
write(fd,&buffer,
&buffer,nbytes);
nbytes);
......
close(fd);
close(fd);
52
26
Arquitectura de Computadores
Procesos
ÖDescriptores de fichero
• Unix define tres descriptores con un significado especial, los
cuales suelen estar asociados con el terminal (gracias al
mecanismo de herencia siendo el shell el padre)
¾0 STD_INPUT:
entrada normal de datos
¾1 STD_OUTPUT: salida normal de datos
¾2 STD_ERROR: salida normal de errores
P1
0
/dev/tty
STD_INPUT
1
/dev/tty
STD_OUTPUT
2
/dev/tty
STD_ERROR
3
f1.c
Arquitectura de Computadores
53
Procesos
Ö
Redirección de la salida estándar
$ cat a1 a2 a3 > f1.txt
Ö
Redirección de la entrada estándar
$ mailx so102 < mensaje
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
0 /dev/tty STD_INPUT
1
f1.txt
STD_OUTPUT
2 /dev/tty STD_ERROR
0 mensaje STD_INPUT
1 /dev/tty STD_OUTPUT
2 /dev/tty STD_ERROR
54
27
Arquitectura de Computadores
Procesos
Ö
Redirección de la salida estándar de error
$ cc programa1.c 2> errores
0 /dev/tty STD_INPUT
1 /dev/tty STD_OUTPUT
2 errores STD_ERROR
Arquitectura de Computadores
55
Ejemplos: redir
main (int argc, char *argv[ ])
{
int fd;
printf("Antes de redirigir la salida estándar\n");
close(1);
creat(argv[1],0666);
printf("Después de redirigir la salida al fichero %s\n",argv[1]);
}
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
56
28
Arquitectura de Computadores
Ejemplos
so2@jerica> cc -o redir redir.c
so2@jerica> ls -l
total 35
-rwxr-xr-x
1 so2
so2
-rw-r--r-1 so2
so2
33330 sep 26 13:48 redir
225 oct 13 1998 redir.c
so2@jerica> redir aa
Antes de redirigir la salida estándar
so2@jerica> ls -l
total 36
-rw-r--r-1 so2
-rwxr-xr-x
1 so2
-rw-r--r-1 so2
so2
so2
so2
49 sep 26 13:49 aa
33330 sep 26 13:48 redir
225 oct 13 1998 redir.c
so2@jerica> cat aa
Después de redirigir la salida al fichero aa
Arquitectura de Computadores
57
Procesos
Comunicación y sincronización entre procesos
Ö
•
•
•
•
•
La comunicación entre procesos en Unix se realiza mediante
tubos
Son buffers de capacidad limitada donde cada elemento es
un byte
Una operación de lectura detiene al proceso si el buffer está
vacío
Una operación de escritura detiene al proceso si el buffer está
lleno
Los tubos pueden compartirse gracias al mecanismo de
herencia
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
58
29
Arquitectura de Computadores
Procesos
Ö
Ejemplo de uso
$ ls | grep txt | sort
tubo1
ls
tubo2
grep txt
STD_OUTPUT
STD_INPUT
sort
STD_OUTPUT
STD_INPUT
STD_OUTPUT
0 /dev/tty
0
tubo1
0
1
1
tubo2
1 /dev/tty
tubo1
2 /dev/tty
2 /dev/tty
tubo2
2 /dev/tty
Arquitectura de Computadores
59
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
60
30
Arquitectura de Computadores
Protección
Ö
Concepto
•
Ö
Mecanismo para controlar los accesos que los procesos
realizan a los recursos del sistema y de los usuarios
(ficheros, memoria, dispositivos de entrada-salida)
Protección en Unix
•
La protección está basada en contrastar los atributos del
proceso con los atributos del fichero y determinar si la
operación puede efectuarse
Atributos del proceso
Atributos del fichero
UID
GID
owner UID
owner GDI
bits permiso
Arquitectura de Computadores
61
Protección
ÖAsignación de atributos
•
El proceso recibe los atributos gracias al mecanismo de
herencia y a la información recogida en la tabla de usuarios
(/etc/passwd)
nombre:contraseña_cifrada:UID:GID:descripción:directorio
HOME:shell inicial
•
El fichero recibe los atributos del proceso que lo crea
ownerUID := UID
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
ownerGID := GID
62
31
Arquitectura de Computadores
Protección
ÖBits de permiso
• 9 bits de permiso en grupos de tres: (propietario, grupo,
otros)
¾formatos: rwxrwxr-x, 0755
¾Interpretación
– Ficheros regulares: lectura, escritura, ejecución
– Directorios: listar contenidos, crear o eliminar enlaces,
"búsqueda".
– Especiales:
lectura, escritura, --------
Arquitectura de Computadores
63
Protección
Ö
Reglas de protección
•
•
•
•
si UID = 0, se concede permiso (superusuario)
si UID = ownerUID, se utiliza el primer grupo de bits; si no
si GID = ownerGID, se utiliza el segundo grupo de bits; si no
se utiliza el último grupo de bits
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
64
32
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
65
Señales
ÖConcepto:
• Evento que interrumpe la ejecución normal de un proceso
• Una señal puede ser originada por:
¾La expiración de temporizadores
¾La detección de excepciones detectadas por el hardware
(direccionamiento ilegal, división por cero …)
¾Un proceso explicitamente al utilizar la llamada KILL
¾Pulsar combinaciones de teclas especiales
ctrl-c
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
P1
66
33
Arquitectura de Computadores
Señales
Ö
Las señales están predefinidas en el sistema
Número Nombre
1
SIGHUP
2
SIGINT
…
8
9
10
14
SIGFPE
SIGKILL
SIGBUS
SIGALRM
Origen
Conexión de comunicación rota
<ctrl> C del teclado
Excepción de coma flotante
No enmascarable ni manejable
Error de bus. Violación de memoria
Generada por el reloj del sistema
Arquitectura de Computadores
67
Señales
Ö
Ö
Un proceso puede indicar su
comportamiento al recibir una Máscara de P1
señal
• asuma el tratamiento por
defecto: terminación del
proceso
• ignore la señal
• capture la señal: ejecución
del manejador asociado
• enmascare la señal
Proceso P1
Ejecución normal
manejador
Existen señales que no se
pueden ignorar, ni capturar, ni
enmascarar (SIGKILL)
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
68
34
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
69
Servicios del sistema
Ö
Interfaces en Unix
Interfaz de
Usuario
Interfaz de
Biblioteca
Interfaz de
Llamadas
al
sistema
Usuarios
Programas de utilidades
(shell, editores, compiladores, ...)
Biblioteca estándar
(open, close, read, write, fork, ...)
Sistema Operativo Unix
(gestión de procesos, de memoria,
el sistema de ficheros, E/S, ...)
Modo
Usuario
Modo
kernel
Hardware
(CPU, memoria, discos, terminales, ...)
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
70
35
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
71
Llamadas al sistema de Unix
Gestión de procesos
pid = fork ( )
s = waitpid (pid, status, opts)
s = execve(name, argv, envp)
exit(status)
Descripción
Crear un proceso hijo
Esperar finalización de un hijo
Cambiar imagen de memoria
Invocar finalización y devolver estado
Gestión de señales
s = sigaction (sig, act, oact)
s = kill (pid, sig)
residual = alarm (seconds)
s=pause ()
Descripción
Especificar una acción para una señal
Enviar una señal a un proceso
Planificar una señal SIGALRM al cabo de un tiempo
Suspender el que invoca hasta que llegue una señal
Gestión de memoria
size = brk (addr)
Descripción
Modificar tamaño seg. de datos (no POSIX)
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
72
36
Arquitectura de Computadores
Ejemplo
El shell de Unix: estructura simple
shell
P1
intérprete
while(TRUE) {
imprimir_prompt();
leer_orden(orden, param);
de órdenes
fork()
p=fork();
shell
P2
intérprete
/* crear hijo */
shell
P1
intérprete
de órdenes
de órdenes
if (p != 0) {
waitpid(-1, &status, 0);
/* codigo del padre */
/* esperar hijo */
}else {
/* codigo del hijo */
exec(orden, params, 0); /* cambiar imagen */
exec("cc", ...)
/* de memoria */
cc
P2
error(“No se puede ejec. la orden”);
exit(1);
wait()
compilador
}
}
de
C
exit(1)
shell
P1
intérprete
de órdenes
Arquitectura de Computadores
73
Llamadas al sistema de Unix
Gestión de ficheros/directorios
fd = creat(name, mode)
fd = open(file, how)
s = close(fd)
n = read (fd, buffer, nbytes)
n = write (fd, buffer nbytes)
pos = lseek (fd, offset, whence)
s = stat (name,buf),
s = mkdir(name, mode)
s = rmdir(name)
s = link (name1, name2)
s = unlink(name)
s = chdir(dirname)
s = chmod(name, mode)
Descripción
Crear un fichero
Abrir un fichero para lectura y/o escritura
Cerrar un fichero abierto
Leer de un desc. de fichero sobre un buffer
Escribir de un buffer sobre un desc. de fichero
Posicionar el puntero de posición
Obtener atributos de un fichero de su nodo-i
Crear un directorio
Borrar un directorio vacío
Crear una entrada de directorio para un fichero existente
Borrar una entrada de directorio
Cambiar el directorio de trabajo
Cambiar bits de protección de un fichero
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
74
37
Arquitectura de Computadores
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de órdenes
Arquitectura de Computadores
75
Programas del sistema
ÖConcepto
•
Ö
Utilidades del sistema operativo que se ejecutan como
procesos de usuario y proporcionan un entorno más
cómodo.
Clasificación
• Tratamiento de ficheros y directorios: mkdir, cp, mv, ls ……
• Filtros: grep, sort, head, tail ….
• Editores, compiladores, ensambladores, editores de enlace …
• Sistemas de ventanas: X11
• Comunicaciones: mail, ftp, rlogin ….
• Intérpretes de órdenes: sh, ksh, bash
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
76
38
Arquitectura de Computadores
Ejemplos: micp
so2@jerica> ls -l
total 50
-rw-r--r-1 so2
-rw-r--r-1 so2
-rwxr-xr-x
1 so2
-rw-r--r-1 so2
so2
so2
so2
so2
1010
208
34821
1180
oct
oct
sep
oct
14 1998 excep.c
14 1998 excep.h
26 12:50 micp
14 1998 micp.c
so2@jerica> micp f1 f2 f3
Uso: micp forigen fdestino
so2@jerica> micp micp.c f2
so2@jerica> micp f1 f2
f1: No existe el fichero o el directorio
so2@jerica> micp f2 /etc
/etc: Es un directorio
so2@jerica> micp f2 /etc/f2
/etc/f2: Permiso denegado
Arquitectura de Computadores
77
Contenidos
1.- Conceptos básicos
¾Ficheros
¾Procesos
¾Protección
¾Señales
2.- Servicios
¾Llamadas al sistema
¾Programas del sistema
3.- El intérprete de
órdenes
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
78
39
Arquitectura de Computadores
El intérprete de órdenes
ÖConcepto
• Es la interfaz primaria entre el usuario y el sistema
operativo.
• Es un programa que lee una orden (o un fichero de texto
con múltiples órdenes) introducida por un usuario, la analiza
y la ejecuta.
• En UNIX, el intérprete de órdenes es un programa que se
ejecuta como un proceso de usuario.
• Ejemplos: sh, bash, ksh, csh, ...
Arquitectura de Computadores
79
El intérprete de órdenes
ÖEl Shell de Unix: órdenes
• Variables / órdenes internas
$
$
$
$
$
PATH=/usr/bin:/bin
PATH=$PATH:$HOME/bin
unset PATH
export PATH
echo $PATH
• Órdenes externas
$
$
$
$
$
prog -optn
ls -al
ps -eaf
cat f1 f2
grep hola f1
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
80
40
Arquitectura de Computadores
Ejemplos: micd
#include <unistd.h>
main (int argc, char *argv [ ])
{
printf("cambio el directorio de trabajo a %s\n",argv[1]);
chdir(argv[1]);
execlp("pwd","pwd",NULL);
}
Arquitectura de Computadores
81
Ejemplos: micd
so2@jerica:~/ana/ejemplos-clase/micd > ls
total 36
-rwxr-xr-x
1 so2
so2
33258
-rw-r--r-1 so2
so2
188
drwxr-xr-x
2 so2
so2
1024
-l
sep 26 12:47 micd
sep 26 12:47 micd.c
sep 26 11:50 pepe
so2@jerica:~/ana/ejemplos-clase/micd > micd pepe
cambio el directorio de trabajo a pepe
/home/docente/asignaturas/so2/ana/ejemplos-clase/micd/pepe
so2@jerica:~/ana/ejemplos-clase/micd >
so2@jerica:~/ana/ejemplos-clase/micd > cd
so2@jerica:~/ana/ejemplos-clase/micd/pepe
so2@jerica:~/ana/ejemplos-clase/micd/pepe
so2@jerica:~/ana/ejemplos-clase/micd/pepe
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
pepe
>
>
>
82
41
Arquitectura de Computadores
El intérprete de órdenes
ÖEl Shell de Unix: órdenes
• Redirecciones
$ cat f1 > f2
$ echo hola > f2
$ mailx peter@cs.uu.edu < fichero
• Tubos
$ cat f1 f2 | more
$ cat f1 f2 | grep hola | wc > fitxer
• Ejecución en background
$ cc -c f1.c f2.c f3.c &
$ (inmediato)
Arquitectura de Computadores
83
El Shell de Unix: órdenes
• Control del flujo/ parámetros
$
>
>
>
>
for i in dso*
do
mv $i ./alumnes
echo moviendo $i
done
• Shell scripts: ficheros que contienen órdenes de Shell
if cp $1 $2
then
echo copiado $1 a $2
else
echo No se ha podido hacer la copia
fi
Arquitectura de Computadores
Tema 2: Introducción al Sistema Operativo UNIX
84
42
Descargar