Download sistemas unix - hungria berbesi. Sistemas Operativos

Document related concepts
Transcript
SISTEMAS UNIX
Hungria Berbesi
Sistemas Operativos.
UNIX-LINUX
Primera parte.
UNEFA
UNIX
• Unix se desarrolló inicialmente en los
Laboratorios Bell y llegó a ser operativo
en un computador PD-7 en 1970.
• Hay dos sistemas operativos que
influyeron en el UNIX: el Multics, y el
CTSS.
• Primer hito: Cuando llevaron UNIX de
PDP-7 a PDP-11 fue la primera señal de
que podría se r un S.O. para todos los
computadores.
• Segundo hito: Reescritura de todo el
S.O. Unix en Lenguaje C.
• Hoy en día casi todas las
implementaciones del UNIX están en
lenguaje C.
Historia
• Las primeras versiones fueron muy
populares en los laboratorios Bell.
• Se otorgaron licencias de UNIX a
instituciones comerciales y
universidades.
• La primera versión ampliamente
difundida fuera de los laboratorios Bell
fue la versión 6, en 1976.
• La versión 7, lanzada en 1978, es el
antepasado de la mayoría de los
sistemas UNIX modernos.
• UNIX BSD fue desarrollado en la
Universidad de Berkeley en California.
• Hacia 1982, los laboratorios Bell
habían combinado distintas versiones
de UNIX de AT&T en un único sistema
comercializado como Unix SIII.
Descripción
El hardware básico esta rodeado por el
software del sistema operativo. El S.O. se llama
núcleo del sistema, o kernel. Para realzar su
aislamiento de las aplicaciones y del usuario.
Sin embargo UNIX esta equipado con varios
servicios e interfaces de usuario que se
consideran parte del sistema. EL shell. EL nivel
exterior esta formado por aplicaciones de
usuario.
Núcleo del Unix clásico
LA interfaz de llamadas
al sistema es la frontera
con el usuario y le
permite al software de
alto nivel el acceso a las
funciones específicas
del núcleo.
En el otro extremo el S.O.
tiene rutinas primitivas
que interactúan
directamente con el
hardware.
El medio esta formado fundamentalmente por dos partes, una
relativa al control de proceso y otra a la gestión de archivos y
la E/S
• El subsistema de control de
procesos es el responsable de la
gestión de memoria, la
planificación y expedición de los
procesos y la sincronización y
comunicación entre ellos.
• EL sistema de archivos
intercambia datos entre la
memoria y los dispositivos
externos, tanto en flujo de
caracteres como en bloques.
Sistemas unix modernos
• Conforme UNIX evoluciona, el
número de implementaciones
diferentes prolifera y cada una
ofrece características útiles.
Entorno de memoria virutal
Cambio de ejecución
Funcionalidades
comunes
Interfaz vnode/vfs
Cambio de
dispositivos de
bloques
Entorno del
planificador
series
Algunos ejemplos de
sistemas UNIX modernos
• SVR4. Desarrollado conjuntamente
por AT&T y Sun Microsystem.
Incluye soporte para procesos en
tiempo real, clases de planificación
de procesos, estructura de datos
asignadas dinámicamente,
administración de memoria virtual,
sistema de archivos virtual y un
núcleo preferente. SVR4 se usa en
maquinas con procesadores de 32
bits hasta supercomputadores y es
uno de los S.O. mas importantes
jamás desarrollados.
Solarix 2.x, 4BSD
• Solaris es la implementación de
UNIX mas ampliamente utilizada
y de mayor éxito comercial. Es
una distribución de UNIX basada
en SVR4 de Sun.
4BSD se usa ampliamente en
instalaciones académicas y ha
servido de base a varios
productos comerciales.
Linux
• Linux aparece como una variante de UNIX
para la arquitectura IBM PC. La versón
inicial fue escrita por Linus Torvalds, un
estudiante Finlandés de informática.
Torvalds distribuyó una primera versión de
Linux en internet en el año 1991. Un gran
numero de personas ha contribuido con el
desarrollo de Linux, por medio de internet.
Debido a que Linux es libre y su código
fuente esta disponible, muy pronto se
convirtió en una versión muy difundida.
• La clave del éxito de Linux ha sido su
carácter de producto disponible
libremente. Esta bajo el apoyo de la Free
Software Foundation. FSF. EL proyecto GNU
de FSF proporciona herramientas para los
diseñadores de software. Torvalds utilizó
las herramientas de GNU en el desarrollo
del núcleo de LINUX.
Características de LINUX
• Linux es un producto técnico
impresionante. Linux es altamente
modular y fácilmente configurable.
Esto hace que sea fácil obtener el
rendimiento óptimo para múltiples
plataformas de hardware.
• Estructura modular. La mayoría de
los núcleos UNIX son monolíticos.
Hay que recordar que un núcleo
monolítico es aquel que incluye
prácticamente toda la funcionalidad
del sistema operativo en un gran
bloque de código que se ejecuta
como un solo procesos con un único
espacio de direcciones.
Linux
• Para solucionar el problema de núcleo
monolítico, Linux esta organizado como un
conjunto de bloques independientes
denominados módulos cargables, que tienen dos
características:
• Enlace dinámico: Un módulo del núcleo puede
cargarse y enlazarse dentro del núcleo, mientras
el núcleo permanece en memoria y en ejecución.
Un módulo también puede ser también
desenlazado y borrado de memoria en cualquier
momento.
• Módulos apilables: Los módulos se organizan en
una jerarquía. Los módulos individuales actúan
como biblioteca cuando son referenciados por
módulos clientes de mayor nivel en la jerarquía y
como clientes cuando los referencia módulos de
menor nivel.
• EL enlace dinámico facilita la tarea de
configuración y protege la memoria del núcleo.
En linux, un programa de usuario o un usuario
puede cargar y descargar explícitamente
módulos del núcleo usando las órdenes ismod y
rmmod.
Ventajas de la
modularidad
• El código común de un conjunto
de módulos similares puede ser
trasladado a un único módulo,
reduciendo su duplicación.
• EL núcleo puede asegurar que los
módulos necesarios estén
presentes, absteniéndose de
descargar un módulo del que
dependen otros módulos de
ejecución.
Estructuras utilizadas para
administrar módulos.
Cada módulo esta definido por dos tablas, la tabla de módulos
y la tabla de símbolos.
Gestión de procesos en
Unix SVR4
• Son necesarios dos modos: modos de
usuario y modo de núcleo. UNIX emplea
dos categorías de procesos: procesos del
sistema y procesos de usuario.
• Los procesos del sistema ejecutan código
del sistema en modo de núcleo para
realizar funciones administrativas y otras
labores, tales como la reserva de
memoria o el intercambio de procesos.
• Los procesos de usuario operan en modo
de usuario para ejecutar programas y
utilidades de los usuarios y operan en
modo núcleo para ejecutar instrucciones
del núcleo. Un proceso de usuario pasa a
modo de núcleo cuando realiza una
llamada al sistema, cuando se produce
una interrupción o se genera una
excepción.
Estados de un proceso
Ejecución
en modo
usuario
Ejecución en
modo núcleo
Expulsado
Sin memoria
suficiente
Listo para
ejecutar y en
memoria
Dormido en memoria
Dormido y
descargado
El sistema Operativo UNIX SVR4 reconoce un total de nueve
estados del proceso
•
Estados de un proceso en
UNIX SVR4
•
Estados de un proceso en Unix
Ejecución en modo usuario
Ejecutando en modo de usuario
Ejecución en modo núcleo
Ejecutando en modo de núcleo
Listo para ejecutar y en
memoria
Listo para ejecutar tan pronto
como el núcleo lo planifique
Dormido y en memoria
Incapaz de ejecutar hasta que se
produzca un suceso; el proceso
está en memoria principal
Listo para ejecutar y
descargado
El proceso está listo para
ejecutar, pero se debe cargar en
memoria principal antes de que
se planifique su ejecución
Dormido y descargado
El proceso esta esperando un
suceso y ha sido expulsado al dd
Expulsado
Retorna al modo usuario, pero
el núcleo lo expulsa
Creado
El proceso esta recién creado y
no esta listo para ejecutar
Zombie
El proceso ya no existe pero deja
un registro para que lo recoja el
proceso padre
• Unix emplea dos estado de ejecución,
que indican si el proceso está
ejecutándose en modo de usuario o en
modo de núcleo.
• Se hace una distinción entre dos
estados: Listo para ejecutar, y en
Memoria frente al estado de expulsado.
• La expulsión sólo puede producirse
cuando va a moverse un proceso del
modo núcleo al modo usuario. Mientras
un proceso este ejecutándose en modo
núcleo, no puede ser expulsado. Esto
hace que UNIX no sea adecuado para el
procesamiento en tiempo real.
Descripción de procesos
• Un proceso UNIX es un conjunto
mas bien complejo de estructuras
de datos que proporcionan al
sistema operativo toda la
información necesaria para
administrarlo y expedirlo.
• El contexto del usuario contiene los
elementos básicos de un programa
de usuario y puede generarse
directamente a partir un archivo
código compilado. El contexto del
sistema contiene el resto de la
información que el sistema
operativo necesita para administrar
el proceso.
Imagen de un proceso en
UNIX
Contexto del usuario
Código del proceso
Instrucciones de máquina ejecutables del programa
Datos del proceso
Datos del proceso accesibles para el programa
Pila del usuario
Argumentos, variables locales y punteros
Memoria compartida
Utilizada para la comunicación con los procesos.
Contexto de los registros
Contador del programa
Dirección de la próxima instrucción a ejecutar.
Registro de estado del
procesador
Contiene el estado del hardware en el momento de
expulsión
Puntero de pila
Señala la cima de la pila del núcleo o de la pila de
usuario
Registros de propósito
general
Dependientes del hardware
Contexto del sistema
Entrada a la tabla de
procesos
Define el estado de un proceso
Área U
La información de control del proceso, a la que se
necesita acceder sólo en el contexto del proceso
Tabla de regiones del
proceso
Una traducción de direcciones virtuales a físicas.
Pila del Núcleo
Marcos de pila de los procedimientos del núcleo
Control de procesos
• La creación de procesos en UNIX se hace por
medio de la llamada fork() al núcleo del sistema.
Cuando un proceso emite una petición fork, el
sistema realiza las siguientes operaciones:
• 1. Asigna una entrada en la tabla de procesos
para el nuevo proceso.
• 2. Asigna un ID único de proceso al proceso hijo
• 3. Hace una copia de la imagen del proceso
padre, a excepción de la memoria compartida.
• 4. Incrementa los contadores de los archivos que
son propiedad del padre.
• 5. Coloca el proceso hijo en estado listo para
ejecutar.
• 6. Devuelve al proceso padre el número del ID del
hijo y devuelve el valor 0 al proceso hijo.
• Todo este trabajo se realiza en modo núcleo en el
proceso padre.