Sistemas Operativos
Unidad II
Estructura del Sistema
Estructura del Sistema



Componentes del sistema
Metodología de diseño
Núcleo (Kernel) y niveles del sistema
operativo




Estructura y núcleo de Unix/Linux
Estructura y núcleo de Windows (NT)
Arranque y activación del sistema operativo.
Interfaces de programación para sistemas
operativos.
Componentes del sistema

Los componentes del sistema operativo se
pueden clasificar de la siguiente forma:

Básicos:




Servidores:



Gestor de procesos
Gestor de memoria
Gestor de E/S y almacenamiento secundario
Servidor de archivos
Servidor de protección y seguridad
Utilidades:


Interprete de comandos
Programas del sistema
Componentes del sistema … (2)

Gestor de procesos


Un proceso es un programa en ejecución
que consume recursos (memoria, archivos,
etc.)
El SO debe gestionar lo siguiente de los
procesos:




Creación y destrucción.
Suspensión y reanudación.
Asignación de los recursos al proceso.
Mecanismos de comunicación y sincronización
Componentes del sistema … (3)

Gestor de memoria


La memoria se visualiza como un vector
enorme de bytes (direcciones) y es
compartida por el CPU y dispositivos de
E/S.
El SO debe gestionar lo siguiente:




Qué partes están en uso y quién las esta
ocupando.
Qué procesos se deben cargar y dónde.
Asigna y libera espacio cuando se requiere
Gestiona la memoria virtual
Componentes del sistema … (4)

Gestor de E/S


El SO debe encargarse de gestionar los distintos
dispositivos de E/S: terminales, dispositivos de
almacenamiento secundario y terciario, teclado,
etc.
El SO gestiona, entre otras cosas:




Copiado de memoria hacia y desde el controlador.
Controla transferencias por DMA
Planificación de acceso a los discos
Asignación y liberación de espacio en los dispositivos de
almacenamiento secundario
Componentes del sistema … (5)

Servidor de Archivos y directorios



El archivo es visto como una unidad de
almacenamiento lógico no volátil que agrupa un
conjunto de información relacionada entre sí bajo
un mismo nombre.
Los directorios son objetos que relacionan de
forma unívoca un nombre con un archivo. Es decir
un mismo nombre no puede identificar dos
archivos.
El SO gestiona lo siguiente respecto a los archivos
y directorios:

Creación, apertura, cerrado, borrado y leer archivos y
directorios, así como escritura de archivos.
Componentes del sistema … (6)

Servidor de protección y seguridad

Por el lado de la protección se debe:




Controlar el acceso a los recursos por parte de los
procesos (usuarios)
Distinguir entre el uso autorizado y no autorizado para
acceder a un recurso.
Proporcionar métodos de control de acceso.
Por el lado de la seguridad:




Proteger al sistema de un uso indebido (fraudulento).
Autentificar a los usuarios.
Evitar amenazas al sistema (gusanos, virus, piratas, etc.)
Evitar intercepción de comunicaciones (cifrado, etc.)
Componentes del sistema … (7)

Intérprete de comandos


Programa cuya función es obtener los
comandos del usuario y lanzar su
ejecución.
Existen básicamente dos tipos:


Intérprete de comandos en línea (shell Linux)
Interfaz gráfico de usuario (Windows)
Componentes del sistema … (8)

Programas de sistema


Proporcionan un entorno adecuado para el
desarrollo y ejecución de programas.
Existen diversas categorías:






Manipulación de archivos y directorios: copiar, mover,
renombrar, etc.
Información de estado: monitores, bitácoras.
Programación: compiladores, enlazadores,
ensambladores, bibliotecas, etc.
Carga y ejecución: cargador.
Comunicaciones: ssh, sftp, etc.
Aplicaciones: navegadores, editores, etc.
Metodología de diseño

El tamaño y complejidad de las tareas de un
SO plantea tres problemas:




Los SO prácticamente ya están retrasados cuando
se entregan.
Los SO van a tener fallos durante su vida útil.
Tales fallos deben ser corregidos.
El rendimiento obtenido frecuentemente no es el
esperado.
La metodología empleada en el diseño de la
estructura permite abordar la complejidad de
los SO y también resolver estos problemas
Metodología de diseño … (2)

Objetivos de diseño en un SO

Para el usuario


Internamente



Fácil de usar, fiable, seguro, potente y sencillo.
Fácil de implementar y mantener
Flexible, fiable, eficiente y estar libre de errores
Diferenciar claramente entre:


Mecanismos: qué cosas se pueden hacer.
Políticas: criterios para decidir que hacer.
Metodología de diseño … (3)

Visualización de un sistema de cómputo
desde distintos puntos de vista
Usuario
Final
Programador
Programas de aplicación
(Resuelven problemas para los usuarios)
(Word, Excel, …)
Utilidades
(Shell, Ensamblador, Enlazador, bibliotecas, …)
Sistema Operativo
(Windows, Linux, Mac OS X)
Hardware del computador
(PC, Mac, Sun, …)
Diseñador del
Sistema
Operativo
Metodología de diseño … (4)

Existen diferentes estrategias para
diseñar sistemas operativos:





Sistemas monolíticos
Sistemas modulares
Sistemas por capas
Sistemas con micronúcleo
Máquinas virtuales
Núcleo (Kernel) y niveles del
Sistema Operativo



El núcleo o kernel es la parte fundamental del
SO.
Es el código responsable de controlar y
administrar los servicios y peticiones de
recursos y hardware con respecto a uno o
varios procesos.
Para esquematizar las estrategias de diseño
se suele mostrar el SO como una serie de
niveles partiendo del hecho de que el kernel
esta directamente en contacto con el
hardware.
Núcleo (Kernel) y niveles del
Sistema Operativo … (2)
Niveles de un sistema con kernel
monolítico.




Aplicaciones de Usuario
Es la organización más común, no tiene Programas
Shell
una estructura bien clara y definida.
de Sistema
Todos sus componentes se encuentran
integrados en un único programa (el
Servicios y llamadas al sistema
SO).
Normalmente han surgido de SO
pequeños y fueron haciéndose más
Gestor de
Gestor de
grandes debido a su popularidad (MSprocesos
E/S
DOS, UNIX en sus orígenes).
El problema que plantean estos
Gestor de memoria
sistemas radica en lo complicado que es
modificar el SO para añadir nuevas
Controladores
funcionalidades y servicios. Además no
existe el principio de ocultación de la
información.
Núcleo

Hardware
Núcleo (Kernel) y niveles del
Sistema Operativo … (3)

Niveles en un sistema con diseño
modular.



El núcleo esta dividido en módulos
con interfaces y funcionalidades
claramente definidas.
Son sistemas altamente estructurados
y modulares donde se pueden
sustituir componentes por otros con el
mismo interfaz (controladores,
manejo de archivos, etc.
Estos sistemas se consideran como de
kernel monolítico hibrido debido a la
capacidad de cargar y descargar los
controladores y extensiones del
sistema mientras el sistema continúa
trabajando sin ser interrumpido.
Aplicaciones de Usuario
Programas
de Sistema
Shell
Interfaz de llamadas al sistema
Núcleo
Gestor de
Memoria
Gestor de
E/S
Facilidades
Comunes
Controladores de
disp por bloques
Gestor de
Procesos
Controladores de
disp por flujo
Hardware
Núcleo (Kernel) y niveles del
Sistema Operativo … (4)

Sistemas estructurados en capas


El sistema se organiza en una jerarquía de capas, donde cada
capa ofrece una interfaz clara y bien definida a la capa superior y
solamente utiliza los servicios que ofrece la capa inferior.
La principal ventaja de estos sistemas es la modularidad y
ocultamiento de la información. La desventaja es que una orden
tiene que pasar por varias capas antes de ser ejecutada.
Aplicaciones
de usuario
Gestor de
Procesos
Kernel
Gestor de
E/S
(Administración
del CPU)
Gestor de
Memoria
Interfaz de
Llamadas al
Sistema
Núcleo (Kernel) y niveles del
Sistema Operativo … (5)

Sistemas con micronúcleo



Consiste en implementar la mayor parte de los servicios y funciones
del sistema operativo en procesos de usuario, dejando solo una
pequeña parte del SO ejecutándose en modo núcleo.
A la pequeña parte que del SO que se ejecuta en modo núcleo se
le conoce como micronúcleo y a los procesos que ejecutan el resto
de las funciones se les denomina servidores.
La desventaja radica en que una llamada puede necesitar muchos
mensajes entere los distintos servidores.
Aplicaciones
de Usuario
API
API
Servidor
de
Memoria
Servidor
de
Procesos
Micronúcleo
Hardware
Servidor
de
E/S
Núcleo (Kernel) y niveles del
Sistema Operativo … (6)

Máquina virtual




El corazón del sistema, conocido como
monitor de la máquina virtual, se
ejecuta directamente en el hardware y
realiza la multiprogramación,
presentando no una, sino varias
máquinas virtuales al usuario donde
cada máquina virtual puede estar
ejecutando un SO diferente.
La máquina virtual que se presenta al
usuario pretende ser idéntica a la que
en realidad se tiene. Sin embargo no
es sencillo lograr duplicados exactos.
Compartir recursos se torna
complicado.
Estos principios se utiliza para emular
SO sobre otros SO y en Sistemas
Distribuidos.
Aplicaciones
De
Usuario
Aplicaciones
De
Usuario
Aplicaciones
De
Usuario
Llamadas
al Sistema
Llamadas
al Sistema
Llamadas
al Sistema
Núcleo 1
Núcleo 2
Núcleo 3
Monitor de Máquina Virtual
Hardware
Núcleo (Kernel) y niveles del
Sistema Operativo … (7)

Estrictamente se puede decir que existen cuatro tipos
de núcleos:

Núcleos monolíticos.


Micronúcleos.


El SO ejecuta en modo privilegiado solo lo mínimo
indispensable y el resto del SO en modo usuario.
Núcleos híbridos.


El SO se carga en un mismo espacio de direcciones y es
ejecutado completamente en modo privilegiado.
Son micronúcleos que por razones de rendimiento cargan
algunos servicios no mínimos en modo privilegiado.
Exonúcleos

Son extremadamente pequeños y su función se limita a la
protección y multiplexado de recursos. Permiten el uso de
funcionalidades comunes entre diferentes SO, (actualmente en
fase de estudio).
Estructura y núcleo de
Unix/Linux

Estructura general de un sistema
Unix/Linux
Programas de
Aplicación
Interfaz de
Llamadas al Sistema
Núcleo
Hardware
Hardware
Hardware
Componentes
del compilador
Compilador
Shell
Comandos y
Librerías
Estructura y núcleo de Unix/Linux
… (2)
Programas de usuario
Librerías
Interfaz de llamadas al sistema
Subsistema de
Archivos
Comunicación
entre procesos
Buffer cache
Sistema
de control
de procesos
Caracter
Bloque
Controladores
de dispositivos
Control del hardware
Nivel Hardware
Planificador
Gestor de
memoria
Nivel Kernel

Núcleo Unix/Linux
Nivel Usuario
Hardware


Tomado de Linux device drivers 2ª Ed.
Vista particionada
del kernel
Estructura y núcleo de Unix/Linux
… (3)
Estructura y núcleo de Unix/Linux
… (4)

Subsistema de archivos

Controla los recursos del sistema de archivos, tiene funciones
como:







Reservar espacio para los archivos.
Administrar el espacio libre
Controlar el acceso a los archivos
Permitir el intercambio de datos entre los archivos y el usuario.
Los procesos interaccionan con el subsistema de archivos a través
de unas llamadas específicas (open, read, write, status, etc).
Se comunica con los dispositivos de almacenamiento secundarios a
través de los controladores de dispositivos. Se consideran dos tipos
según el acceso: bloques y caracteres. Un mismo dispositivo puede
ser manejado en modo bloque o en modo carácter, depende del
controlador que se este usando.
Subsistema de control de procesos

Es el responsable de la planificación de los procesos, su
sincronización, comunicación entre los mismos y del control de la
memoria principal.
Estructura y núcleo de Unix/Linux
… (5)

El módulo de gestión de memoria



El planificador



Se encarga de gestionar el tiempo del CPU que tiene asignado cada
proceso.
Entra en ejecución cada cuanto de tiempo y decide si el proceso
actual tiene derecho a seguir ejecutándose o a de conmutarse de
contexto.
La comunicación entre procesos


Se encarga de controlar qué procesos están cargados en la
memoria principal en cada instante.
Cuando no hay memoria suficiente se recurre al swaping
(intercambio).
Puede realizarse de forma asíncrona (señales) o síncrona (colas de
mensajes, semáforos).
El módulo de control de hardware

Es la parte del kernel encargada del manejo de las interrupciones y
de la comunicación con la máquina.
Estructura y núcleo de
Windows (NT)

Arquitectura simplificada de Windows
(NT)
Procesos de
Soporte del
Sistema
Modo
Usuario
Procesos
de
Servicio
Aplicaciones
de
Usuario
Subsistemas
de
Ambiente
Subsistema de DLL’s
Modo
Kernel
Ejecutor
Kernel
Controladores de
Dispositivos
Capa de Abstracción de Hardware (HAL)
Sistema de
Ventanas
y Gráficos
Estructura y núcleo de Windows
(NT) … (2)

Modo Kernel

Capa de Abstracción de Hardware (HAL)


Kernel


Traducen las llamadas de Entrada/Salida provocadas por el usuario en la
información específica que los dispositivos de Entrada/Salida requieren.
Ejecutor


Se encarga entre otras cosas de: (1) Las funciones del S. O. a bajo nivel, (2)
Sincronización de múltiples microprocesadores, y (3) Administración de hilos.
Controladores de dispositivos


(1) Separa al kernel, los controladores de dispositivos y al administrador del
hardware, y (2) Oculta las diferencias específicas de hardware, (tarjetas madre
x86, MIPS, PowerPC, y otras).
Son los servicios del sistema operativo de base, se encarga, entre otras cosas de:
(1) El manejo de memoria, (2) Manejo de procesos he hilos, (3) Seguridad, (4)
Entrada/Salida, (5) Comunicación entre procesos.
Sistema de ventanas y Gráficos.

Funciones de la Interfaz Gráfica de Usuario (GUI), Ventanas, Controles para la
GUI y trazado.
Estructura y núcleo de Windows
(NT) … (3)

Modo Usuario

Procesos de soporte del sistema


Procesos de servicio


Son servicios anfitriones de Windows, como: (1) El planificador de
tareas, (2) Servicios de Spooler (ej. Impresión). Y muchas otras
aplicaciones servidor de Windows.
Subsistema de DLL’s (Librerías de Enlace Dinámico)


Entre otras cosas, tiene las tareas de: (1) Acceso al sistema (nombre
de usuario y contraseña) y (2) Administrar la sesión.
Traduce de una función documentada a una llamada interna del
sistema Windows apropiada (no documentada).
Subsistemas de Ambiente

Maneja los procesos del cliente en su mundo.


Windows API (originalmente de 32 bits, ahora de 64 bits)
POSIX (escasos servicios Unix)
Estructura y núcleo de Windows
(NT) … (4)

MS-DOS, Windows 95, 98 y ME (16 bits) sobre
Windows XP (32 bits).


Windows corre una Máquina DOS Virtual NT
(NTVDM.EXE), la cual es una imagen Windows
de 16 bits montada sobre el Subsistema de
DLL’s. En realidad CMD.EXE es una aplicación
de consola de Windows.
Para aplicaciones de 16 bits NTVDM carga
“WOW”, un traductor de API de 16 a 32 bits.
Procesos de
Soporte del
Sistema
Modo
Usuario
Modo
Kernel
Procesos
de
Servicio
Aplicaciones
de
Usuario
Aplicación MS-DOS
Aplicación de 16 bits
Emulación MS-DOS
Kernel
Controladores de
Dispositivos
Capa de Abstracción de Hardware (HAL)
640 K
1 MB
16 bits
Memoria Extendida de MS-DOS
16 MB
Emulación de MS-DOS a 32 bits
Controladores de dispositivos
Virtuales (COM, LPT, Teclado)
32 bits
Subsistema de DLL’s
7FFFFFFF
Subsistemas
de
Ambiente
Subsistema de DLL’s
Administrador
0K
Sistema de
Ventanas
y Gráficos
Estructura y núcleo de Windows
(NT) … (5)
System Processes
Services
Applications
Service
Control Mgr.
Windows
SvcHost.Exe
LSASS
WinMgt.Exe
Explorer
SpoolSv.Exe
WinLogon
User
Mode
Task Manager
OS/2
User
Application
Services.Exe
Session Manager
POSIX
Subsystem DLLs
Windows DLLs
NTDLL.DLL
System
Threads
Kernel
Mode
System Service Dispatcher
(kernel mode callable interfaces)
Local
Procedure
Call
Configuration Mgr
(registry)
Processes
&
Threads
Virtual
Memory
Power
Mgr.
Plug and
Play Mgr.
Object
Mgr.
File
System
Cache
Device &
File Sys.
Drivers
Security
Reference
Monitor
I/O Mgr
Windows
USER,
GDI
Graphics
Drivers
Kernel
Hardware Abstraction Layer (HAL)
hardware interfaces (buses, I/O devices, interrupts,
interval timers, DMA, memory cache control, etc., etc.)
Original copyright by Microsoft Corporation.
CRK.
Arranque y activación del SO

El arranque de una computadora actual tiene dos fases:


La fase de arranque del hardware
La fase de arranque del SO
Bajo el control del
Inicador ROM
S.O
(Wnd, Linux, Mac OS X)
Bajo el control del
Inicialización bajo el control
Cargador del SO
de la parte residente del SO
S.O.
ROM
Test del Hardware
Carga en memoria del
cargador del SO
HDD
Carga en
memoria
Componentes
del SO
-Test del sistema de
archivos
-Creación de ED internas
- Completa carga del SO
residente
- Creación de proceso
login
CPU
RAM
Arranque del Hardware
Se entra en la fase normal
de funcionamiento del SO
Arranque del SO
Arranque y activación del SO …
(2)

Los programas en ROM en el arranque de la
computadora realizan tres cosas:




Una comprobación del sistema, que sirve para detectar
sus características (cantidad de memoria, periféricos
instalados, etc.) y comprobar si funcionan correctamente.
Fase de lectura y almacenamiento en memoria del
programa cargador del SO.
Finalmente cede el control al programa recién cargado en
memoria. El cargador del SO es independiente del SO.
En el caso de una PC, la ROM también contiene el
software de E/S llamado BIOS.

Firmware que contiene los procedimientos para leer y
escribir de disco, leer caracteres del teclado y escribir en
la pantalla
Arranque y activación del SO …
(3)

En el arranque del SO incluye las operaciones de:

Comprobación del sistema.





Se completan las pruebas del hardware realizadas por la ROM.
Se comprueba si el sistema de archivos tiene un estado
coherente.
Se establecen las estructuras de datos (ED) propias del SO
para almacenar información referente a: tablas de procesos,
tablas de memoria, E/S, etc.
Se carga en memoria principal aquella parte del SO que ha
de estar siempre presente en memoria (SO residente).
Se crea un proceso de login (inicio) por cada sesión en el
sistema
Arranque y activación del SO …
(4)

Una vez cargado el SO, la acciones que
activan su ejecución son:




Llamadas al sistema emitidas por los programas.
Interrupciones emitidas por los periféricos.
Condiciones de excepción o error del hardware.
En todos los casos anteriores se deja de
ejecutar el proceso en ejecución y se entra a
el funcionamiento general de una computadora bajo
ejecutar el SO. (Recuérdese
el control de un programa FuncionamientoGral.ppt).
Arranque y activación del SO …
(4)

Secuencia de sucesos en una llamada al sistema




El programa de usuario entra en el kernel por una trampa (trap) (1).
El SO determina el número de servicio requerido (2).
El SO invoca el procedimiento de servicio (3).
Devuelve el control al programa de usuario (4).
Interfaces de programación
para sistemas operativos



La interfaz del sistema operativo con el
programador es la que recupera los servicios
y llamadas al sistema que los usuarios
pueden utilizar directamente desde sus
programas.
Tiene gran importancia dentro del SO ya que
recupera la visión de máquina extendida del
SO.
Las dos interfaces más utilizadas son:


POSIX
Win32
Interfaces de programación para
sistemas operativos … (2)

POSIX [IEEE96]




Es el estándar de interfaz de sistemas operativos
portables de la IEEE basado en el sistema operativo UNIX.
Surge para estandarizar las distintas implementaciones
(familias) UNIX y con ello lograr la portabilidad de las
aplicaciones (a nivel de código fuente).
En realidad, POSIX también es una familia de estándares,
cada uno de los cuales cubre diferentes aspectos de los
sistemas operativos.
Se encuentra disponible en todas las versiones de UNIX y
Linux. Inclusive Windows NT ofrece un subsistema que
permite programar aplicaciones POSIX.
Interfaces de programación para
sistemas operativos … (3)

Algunas características de POSIX son:




Algunos tipos de datos utilizados por las funciones no se
definen como parte del estándar, pero se definen como
parte de la implementación. Estos tipos se encuentran en
definidos en el archivo de cabecera <sys/types.h>. Estos
tipos finalizan con el subfijo _t (uid_t se utiliza para
almacenar un identificador de usuario.)
Los nombres de las funciones son por lo general cortos y
completamente en minúsculas (fork, read, close, etc).
Las funciones retornan 0 en caso de éxito, -1 si ocurre un
error. Cuando se retorna -1, se almacena en la variable
global errno el código del error.
La mayoría de los recursos gestionados por el sistema
operativo se referencian mediante descriptores. Un
descriptor es un número entero mayor o igual que cero.
Interfaces de programación para
sistemas operativos … (4)

Win32



Es el nombre de una interfaz de programación de
aplicaciones (API) que define los servicios
ofrecidos por los sistemas Windows 9X/NT.
No se trata de un estándar genérico, sino de los
servicios establecidos por la casa comercial
Microsoft.
Define un conjunto de funciones a las que podría
llamar una aplicación y también define cómo se
comportan esas funciones.
Interfaces de programación para
sistemas operativos … (5)

Algunas de las características más importantes de
Win32 son:





Prácticamente todos los recursos gestionados por el SO se
tratan como objetos, que se referencian por medio de
manejadores. Aunque Win32 sigue los principios de la POO
no es POO.
Los nombres de las funciones son largos y descriptivos
(GetFileAttributes, etc).
Tiene una serie de tipos da datos predefinidos (BOOL,
DWORD, TCHAR, LPSTR, etc.), y evita el uso del operador
de indirección de C (*).
Los nombres de las funciones siguen la notación húngara
(lpszName representa un puntero largo a una cadena de
caracteres).
La funciones retornan un true en caso de éxito, false si no.
Interfaces de programación para
sistemas operativos … (6)

Entornos de programación sobre sistemas operativos.

La programación de aplicaciones sobre SO supone conocer y
usar las bibliotecas con las llamadas al sistema operativo.
Para hacer una aplicación con llamadas al SO es necesario:




Incluir la definición de prototipos y tipos de datos. Cuando se
programa en C quiere decir que se deben incluir los archivos de
cabecera necesarios para que puedan compilarse los módulos
del programa.
Los archivos de bibliotecas del sistema deben enlazarse con la
aplicación para crear un archivo ejecutable, incluyendo la ruta
de localización de dichas bibliotecas.
Las opciones de compilación que han de activarse para
compilar y enlazar la aplicación.
Cada compilador proporciona un entrono de programación
más o menos integrado, para simplificar el proceso de
construcción de software.
Interfaces de programación para
sistemas operativos … (7)

MinGW Developer Studio




Es un entorno de
programación que se
distribuye bajo licencia
GNU.
Se trata de un clónico
de Microsoft Visual
C++. La mayoría de sus
herramientas (botones y
menús) son idénticas y
tienen la misma
funcionalidad.
El mismo entrono esta
disponible tanto para
Linux como para
Windows.
Se pueden generar
aplicaciones POSIX y
Win32 bajo este
entorno.
Descargar

Sistemas Operativos - Programas y Utilidades