Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UNIX
INTRODUCCIN
Unix fue creado en 1969 por Dennis Ritchie y Ken Thompson, el
sistema operativo originario fue el sistema Multics, los
laboratorios Bell fue la primera organizacin que utilizo el
sistema unix, sus primeras versiones fueron desarrolladas en
cdigo maquina pero a partir de la tercera versin se realizo en
C, creado para este motivo.
OBJETIVOS DE UNIX
Asegurar la portabilidad de los desarrollos,
eliminando as la dependencia de los sistemas
propietarios.
Permitir a fabricantes independientes de software la
oferta de productos en este entorno, eso aumenta la
oferta de productos y los precios son mas bajos.
Proteger la inversin realizada en aplicaciones.
CLASIFICACIN
POR SU VISIN INTERNA
Multiusuario
Multitarea
Portable
SO de tiempo
ORGANIZACIN FSICA
En UNIX los bloques de
control de archivos tienen
bloques
de
indexacin
directa, de uno, dos y hasta
de
tres
niveles
de
indexacin.
Esto permite representar
archivos muy grandes.
ORGANIZACIN FSICA
El control del espacio libre en el disco se mantiene
mediante una lista ligada de bloques disponibles.
Cada bloque contiene ladireccinen disco del
siguiente bloque en la cadena. El espacio restante
contiene las direcciones degruposde bloques del
disco que se encuentren libres. De esta forma, con
una operacin de E/S, el sistema obtiene un conjunto
de bloques libres y un apuntador para conseguir ms.
ALGORITMOS DE PLANIFICACIN
El mdulo de planificacin (scheduler) asigna el uso de
la CPU a los procesos. Un proceso (A) se ejecutar
hasta que voluntariamente ceda el uso de la CPU. En
ese momento, el planificador seleccionar para
ejecutar al proceso de mayor prioridad de planificacin
que se encuentre listo para ser ejecutado. El proceso
(A) volver a ser ejecutado cuando sea el proceso de
mayor prioridad de planificacin listo para ejecucin.
ALGORITMOS DE PLANIFIACION
La clase de tiempo compartido es la clase por defecto para un proceso.
En ella las prioridades de los procesos se cambian dinmicamente. Se
utiliza un algoritmo de planificacin de tipo round robin para los procesos
con la misma prioridad. Adems utiliza una tabla de parmetro de
distribucin para controlar las prioridades de los procesos y sus
cuantums. El cuantum dado a un proceso depende de su prioridad de
planificacin. La tabla de parmetros define el cuantum para cada
prioridad. Por defecto, cuanto menor es la prioridad de un proceso mayor
es su cuantum. Esto puede parecer una contradiccin pero su explicacin
es que puesto que los procesos de baja prioridad no se ejecutan muy a
menudo es justo darles un cuantum mayor cuando son ejecutados.
SOLUCIN A PROBLEMAS DE
CONCURRENCIA
UNIX es esencialmente un sistema de tiempo compartido, lo que
significa que permite a varios procesos ejecutarse concurrentemente.
En un sistema con un nico procesador, la concurrencia no es ms que
una ilusin, puesto que en realidad solamente se puede estar
ejecutando un nico proceso en un instante de tiempo dado.
Mecanismos de Concurrencia en UNIX
Pipes (encaminadores)
Mensajes
Memoria compartida
Semforos
Seales (signals)
MENSAJES
Conjunto de bytes con un tipo asociado, proporciona las llamadas al
sistema msgsnd y msgrcv.
Usa una cola de mensajes por proceso, y funciona como un buzn.
El emisor especifica el tipo de mensaje que enva, este puede ser un
criterio de seleccin por el receptor. El receptor puede recuperar el
mensaje en orden o por su tipo.
El proceso se bloquea cuando trata de enviar un mensaje a una cola llena.
Un proceso tambin se bloquea si se intenta leer un mensaje de una cola
vaca.
Si un proceso intenta leer un mensaje de un cierto tipo y no es posible
debido a que no est presente ningn mensaje de este tipo, el proceso no
se bloquea.
SEMFOROS
Las llamadas al sistema de semforos en UNIX System V
son una generalizacin de las funciones semWait y
semSignal, se pueden realizar varias operaciones
simultneamente y las operaciones de incremento y
decremento pueden corresponder con valores mayores.
El ncleo realiza todas las operaciones solicitadas
atmicamente; ningn otro proceso puede acceder al
semforo hasta que se hayan completado todas las
operaciones.
SEMFOROS
El semforo consta de los siguientes elementos:
El valor actual del semforo
El identificador del ltimo proceso que opero con el semforo
El nmero de procesos en espera de que el valor del semforo
sea mayor que su valor actual
El nmero de procesos en espera de que el valor del semforo
sea cero
Asociado con el semforo estn las colas de los procesos
bloqueados en ese semforo.
SEMFOROS
SEMFOROS
sem_op > 0
SEMFOROS
Si sem_op <= -1 y sem_op valor absoluto < semforo
El ncleo asigna (un numero negativo) al valor del semforo.
Si el resultado es 0, el ncleo despierta a todos los procesos en
espera de que el semforo tome ese valor.
Si sem_op <=-1 y sem_op valor absoluto > numero de semforo
El ncleo suspende al proceso en espera del evento del valor del
semforo para que se incremente.
Esta generalizacin de los semforos proporciona una considerable
flexibilidad para realizar la sincronizacin y coordinacin de procesos.
ADMINISTRACIN DE MEMORIA
Debido a que unix pretende ser independiente de la mquina, su esquema de gestin
de memoria variara de un sistema a otro. En las primeras versiones, unix utilizaba
particionamiento variable sin ningn esquema de memoria virtual. Las implantaciones
actuales de unix utilizan la memoria virtual paginada.
Para la memoria virtual paginada, unix utiliza varias estructuras de datos que, con
pequeas diferencias, son independientes de la maquina:
Tabla de pginas: Habitualmente, habr una tabla de pginas por proceso, con
una entrada por cada pgina de memoria virtual de dicho proceso.
Descriptor de bloques de disco: Asociado a cada pgina del proceso hay una
entrada en esta tabla que indica la copia en disco de la pgina virtual.
Tabla de datos de los marcos de pgina: Describe cada marco de memoria
real y se indexa por medio de un numero marco. El algoritmo de reemplazo usa
esta tabla.
Tabla de utilizacin de swap: Existe una tabla de uso de swap por cada
dispositivo de intercambio, con una entrada por cada pgina de dicho dispositivo.
PRINCIPIOS DE SW DE E/S
Unix divide el sistema de entrada y salida en dos sistemas:
El sistema de Entrada y salida por bloques
El sistema Entrada y salida por caracteres
Cada dispositivo fsico se identifica mediante un numero de dispositivo menor, un
numero de dispositivos mayor y una clase, ya sea de bloque o de caracteres.
Cada clase tiene una tabla de configuracin que contiene un arreglo de puntos de
entrada a los controladores de dispositivos. Esta tabla es la nica conexin entre
el cdigo del sistema y los controladores de dispositivos; adems, es una
caracterstica importante de Unix, ya que permite a los programadores del
sistema crear con rapidez nuevos controladores de dispositivos para aceptar
diferentes sistemas de configuracin.
Clase
Carcter
Bloque
Numero
mayor de
dispositivo
Numero
mayor de
dispositivo
Lneas de
comunicacin
Cinta de
papel
Numero
menor de
dispositivo
Numero
menor de
dispositivo
CL1
CL2
CL3
PT1
Impresora de
lneas
Numero
menor de
dispositivo
PT2
LP1
Unidad
de disco
Unidad de
cinta
magntica
Numero
menor de
dispositivo
Numero
menor de
dispositivo
LP2
PRINCIPIOS DE SW DE E/S
SEGURIDAD
Unix no se dise para ser seguro [Ritchie, 1986], a finales de los
80 se convirti en el primer sistema operativo en alcanzar niveles
de seguridad casi militares [Hecht, 1988] [Serlin, 1991].
Casi todas las actividades realizadas en un sistema Unix son
susceptibles de ser, en mayor o menor medida, monitorizadas.
Problema [Instalacin por defecto de Unix]
Cuentas sin passwords o passwords por defecto
Servicios abiertos
Sistemas de ficheros susceptibles de ser compartidos.
SEGURIDAD
Proteccin de memoria
Control de acceso a ficheros
Proteccin del uso de los recursos del sistema.
El acceso al sistema se realiza a travs de una
cuenta.
Nombre de usuario
Contrasea
PUERTAS TRASERAS
Mecanismos
implantados
en
los
programas
por
los
desarrolladores, que permiten a stos realizar acciones
determinadas sin tener que pasar por determinadas secciones
del programa, como procesos de autenticacin, mecanismos de
seguridad, etc. Se suelen utilizar preferentemente en tareas de
depuracin.
Un caso que ilustra esto ltimo es el agujero de seguridad que
supona la opcin de depuracin del programa sendmail, del
cual se aprovech el gusano de Internet.
PUERTAS TRASERAS
Muchas veces la existencia de puertas traseras est
provocada por el despiste de los desarrolladores, que olvidan
eliminarlas de sus programas, aunque otras veces las dejan
ah intencionadamente para conseguir de una manera sencilla
el acceso al sistema mediante la ejecucin de una
determinada secuencia de eventos, una secuencia de
pulsaciones de teclado o un nombre de usuario secreto. De
igual manera, los piratas, una vez que han conseguido acceso
a un sistema, suelen crear puertas traseras que les permitan
volver a entrar en el sistema, por ejemplo aadiendo una
entrada en el fichero /etc/passwd.
EL FICHERO /ETC/PASSWD
El fichero /etc/passwd se utiliza para identificar a los usuarios que
pertenecen al sistema. Este fichero est estructurado de forma que
cada lnea representa a un nico usuario, y cada una de estas lneas
se encuentra organizada en siete campos separados por : .
1. Nombre de usuario o login
2. Contrasea cifrada
3. Identificador de usuario o UID
4. Identificador de grupo o GID
5. Informacin sobre el usuario
6. Directorio de entrada o home
7. Shell
login:password:UID:GID:GECOS:home:shell
EL SUPERUSUARIO
El ms importante de todos los usuarios del sistema es, por
supuesto, root. El usuario root se caracteriza porque tiene como
UID el nmero 0, al cual el sistema trata de manera diferente.
El superusuario tiene un control casi completo sobre todo el
sistema.
Puede saltarse todos los mecanismos de seguridad del sistema
y acceder a todos sus recursos.
Por estos motivos, el hecho de la existencia de un superusuario
supone uno de los mayores problemas de seguridad de los
sistemas UNIX.