Download arquitectura de sistemas operativos.

Document related concepts

Proceso (informática) wikipedia , lookup

Hilo de ejecución wikipedia , lookup

Sistema operativo wikipedia , lookup

Proceso de arranque en Linux wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Transcript
ARQUITECTURA DE
SISTEMAS OPERATIVOS.
Unidad I: Introducción.
I.1-Conceptos Básicos.
•
•
•
•
•
•
Sistema Operativo.
Procesos.
Archivos.
Llamadas al Sistema.
Tipos de Sistemas Operativos.
Shell: ✓Linux ✓Unix
✓Windows
Definición: Concepto de Sistema Operativo.
¿Qué es un Sistema Operativo?
• Es una capa de software cuya labor es administrar todos
los dispositivos y proporcionar a los programas de
usuario una interfaz que les permita comunicarse con el
hardware.
El Sistema Operativo tiene dos funciones independientes:
1- Extender la máquina.
Facilita la comunicación hombre – máquina, permitiendo al
programador cierto nivel de abstracción en el manejo de
dispositivos y recursos del sistema de cómputo al “ocultarle la
verdad” acerca del hardware.
2- Administrar recursos.
Administra todos los elementos de un sistema complejo:
procesadores, memoria, temporizadores, discos, interfaces de red,
periféricos de E/S, etc. efectuando un reparto ordenado y
controlado entre los distintos programas que compiten por
obtenerlos.
•
Lenguaje de Máquina:
Hardware+Instrucciones
III
Instruction Set Arquitecture
Usualmente son 50 a 300
instrucciones
que permiten: trasladar datos, realizar
operaciones aritméticas y lógicas, etc
•
Microarquitectura:
Se agrupan los dispositivos físicos para
formar unidades funcionales. Ejemplo:
registros de la CPU y ruta de datos que
contiene una unidad aritmético lógica.
•
Dispositivos Físicos:
Hechos con circuitos integrados,
cables, fuentes de potencia,
tubos de rayos catódicos, etc.
¿Qué es un Proceso?
• Básicamente, es un programa en
ejecución.
Tiene asignado un espacio de direcciones de
memoria donde puede leer y/o escribir. Allí se
encuentra: su código ejecutable, sus datos y
su pila. También tiene asignado un conjunto
de registros (CISC: IP, SP, BP, CS, DS, AX,
BX, CX, DX, etc.) y guarda toda la información
necesaria para ejecutar el programa.
Un sistema consiste en una colección de
procesos que podrían ejecutarse
concurrentemente.
Las obligaciones del SO como gestor de
procesos son:
• Creación y eliminación de procesos.
• Planificación de procesos (procurando la
ejecución de múltiples procesos y
maximizando la utilización del procesador).
• Establecimiento de mecanismos para la
sincronización y comunicación entre procesos.
• Manejo de bloqueos mutuos.
A medida que un proceso se ejecuta cambia de
estado. Cada proceso puede estar en uno de
los siguientes estados:
•
•
•
•
•
Nuevo (new): el proceso se está creando.
En ejecución(running): el proceso está en la CPU
ejecutando instrucciones.
Bloqueado (waiting, en espera): proceso esperando
a que ocurra un suceso (ejemplo: terminación de E/S
o recepción de una señal).
Preparado (ready, listo): esperando que se le asigne
a un procesador.
Terminado (terminated): finalizó su ejecución, por
tanto no ejecuta más instrucciones y el SO le retirará
los recursos que consume.
Diagrama de
estados de un proceso.
Para que un programa se
ejecute, el SO debe crear un
proceso para él. En un sistema
con multiprogramación el
procesador ejecuta código de
distintos programas que
pertenecen a distintos procesos.
Llamamos traza de un
proceso al listado de la
secuencia de
instrucciones que se ejecutan
para el mismo.
Aunque dos
procesos estén
asociados al
mismo programa,
se consideran dos
secuencias de
ejecución
separadas, cada
una de las cuales
se considera un
proceso.
Nota: Sólo un proceso puede estar ejecutándose
en cualquier procesador en un instante dado, pero
muchos procesos pueden estar listos y esperando.
Los sucesos que pueden dar lugar a una transición de
estados en este modelo son los siguientes:
• Ninguno a nuevo: se crea un nuevo proceso para
ejecutar un programa.
• Nuevo a preparado: el sistema está preparado para
aceptar un proceso más porque dispone de recursos
para ello.
• Preparado a ejecución: el sistema elige uno de los
procesos en estado preparado para llevarlo a ejecución.
• Ejecución a terminado: el proceso que se está
ejecutando es finalizado por el SO si indica que terminó,
se abandona o se cancela.
• Ejecución a preparado: el proceso ha agotado su
tiempo de ejecución, cede voluntariamente su tiempo de
ejecución o se interrumpe para atender a otro de mayor
prioridad.
Los sucesos que pueden dar lugar a una transición de
estados en este modelo son los siguientes:
…(Continuación)…
• Ejecución a bloqueado: el proceso solicita algo por lo
que debe esperar.
• Bloqueado a preparado: se produce el suceso por el
que el proceso estaba esperando.
• Preparado a terminado (no aparece en la figura): un
padre puede terminar con un proceso hijo en cualquier
momento, o bien, si el padre termina todos sus hijos se
pueden terminar.
• Bloqueado a terminado: el mismo criterio que el
anterior.
Ejemplo: disposición en memoria de tres procesos.
Ejemplo: estados asociados a la traza de los tres procesos.
Sería necesario disponer (como mínimo) de dos colas: una de
listos y otra de bloqueados. Los procesos nuevos que se van
admitiendo pasan a la cola de listos, el sistema elige de esta cola
alguno para pasarlo a ejecución. Cuando ocurre un suceso, todos
los procesos que esperan por él pasan de la cola de bloqueados a
la cola de listos.
Aspectos importantes a tener en cuenta durante la
ejecución de procesos:
 Asignación o administración de los recursos del
sistema a los procesos.
- ¿Cómo manejar los requerimientos de Entrada/Salida?
- ¿De qué forma se deben administrar los recursos de
memoria necesarios para la ejecución de los procesos?
 Posibilidad de que ocurran interbloqueos.
- ¿Qué problemas puede ocasionar un interbloqueo?
- ¿Cómo evitar los interbloqueos? ¿Cómo asegurar la
comunicación entre procesos?
Sistema de Archivos (o Ficheros)
• El SO oculta a los usuarios
las peculiaridades del manejo
de los discos y otros
dispositivos de E/S,
presentando al programador
un modelo abstracto, bueno y
claro de archivos
independientes de los
dispositivos. De esto se
encarga el SISTEMA DE
FICHEROS (ARCHIVOS).
Sistema de Archivos (o Ficheros)
…(Continuación)…
• Un archivo puede contener un texto, programas
ejecutables, código intermedio, código fuente de
programas, hojas de cálculo, documentos,
imágenes, audio, video, información financiera
y/o económica, información y/o datos en general,
etc.
• Los ARCHIVOS (también conocidos como
FICHEROS) se guardan en memoria externa.
Para ello se les da nombre nemotécnicos y se
agrupan en CARPETAS o DIRECTORIOS.
Sistema de Archivos (o Ficheros)
…(Continuación)…
• Los directorios o carpetas también son
manejados como un tipo especial de
archivos: son archivos que contienen otros
archivos o directorios.
• Mediante llamadas al sistema es posible:
- Crear Archivos. - Eliminar Archivos.
- Leer y/o Escribir (Modificar) Archivos.
Sistema de Archivos (o Ficheros)
…(Continuación)…
Sistema de Archivos (o Ficheros)
…(Continuación)…
Llamadas al Sistema.
•
La interfaz entre el SO y los programas de usuario
está definida por el conjunto de llamadas al sistema
ofrecidas por el SO. Estas llamadas pueden variar de
un SO a otro pero los conceptos tienden a
mantenerse.
•
Generalmente, las llamadas al sistema se invocan
desde programas en C llamando a un procedimiento
de biblioteca que tiene el mismo nombre de la llamada
al sistema.
•
Ejemplos de llamadas al sistema en UNIX:
fd = open(“mifichero”, O_RDONLY);
cuenta = read(fd, buffer, nbytes);
Llamadas al Sistema.
…(Continuación)…
• En general, las interfaces con los servicios del sistema
operativo se distinguen porque:
1. En el caso del programador, las llamadas al sistema se realizan
invocando a un procedimiento de biblioteca en lenguaje de
máquina o en alto nivel.
2. En los casos de los usuarios, las llamadas al sistema se hacen
mediante:
• Intérprete de órdenes.
• Programas del sistema.
• El SO ofrece una gama de servicios a los programas,
que acceden a ellos mediante llamadas al sistema.
• Son la interfaz entre el programa en ejecución y el SO.
• Única forma en la que un programa puede solicitar
operaciones al SO.
Llamadas al Sistema.
…(Continuación)…
• Implantación de las llamadas al sistema:
– ¿Cómo se implanta la llamada?
• Habitualmente, mediante una instrucción especial de la
máquina (syscall, int, trap, ...).
• La instrucción cambia automáticamente a modo privilegiado.
• Si programamos en un lenguaje de alto nivel escribimos la
llamada al sistema como una subrutina, y el compilador la
sustituye por la instrucción de máquina correspondiente.
– Muchas llamadas necesitan parámetros ¿cómo los
pasamos al SO?:
• Usando registros de la máquina.
• En una tabla en memoria principal.
• Poniéndolos en la pila (stack).
SHELL del Sistema Operativo
Sistema Operativo
Windows:
- Entorno gráfico.
- Línea de
comandos.
- Ventana al DOS.
Sistema Operativo Linux:
- Entorno gráfico.
- Consolas / Terminales.
SHELL de LINUX / UNIX
En LINUX / UNIX, el intérprete de órdenes es un programa que se
ejecuta como un proceso de usuario. Ejemplos: sh, bash, ksh, csh,…
SHELL de LINUX / UNIX
SHELL de LINUX / UNIX