Está en la página 1de 281

Introducción a los Sistemas

Operativos
Objetivos

Al finalizar el capítulo el estudiante


deberá manejar los conceptos básicos de
los S.O.; así como conocer la historia de
los mismos y una breve reseña de los
más importantes S.O.
Introducción a los Sistemas
Operativos

Conceptos Básicos
¿Qué es un Sistema Operativo?

Es un Programa que realiza lo siguiente:


◼ Controla la ejecución de las demás

aplicaciones.
◼ Actúa como intermediario entre el
usuario y el hardware.
Funciones de los S.O.
◼ Gestión de los recursos de la computadora.
◼ Ejecución de servicios para los programas.
◼ Ejecución de los mandato: de los usuarios.
Funciones de los S.O.
◼ Gestión de los recursos de la computadora.
◼ Ejecución de servicios para los programas.
◼ Ejecución de los mandato: de los usuarios.
Funciones de los S.O.
➢ La capa mas cercana al hardware se denomina
núcleo (kernel).

➢ La capa de servicios o llamadas al sistema ofrece a


los programas unos servicios en forma de una
interfaz de programación o API (application
programming interface)

➢ La capa de intérprete de mandatos o shell


suministra una interfaz a través de la cual el
usuario puede dialogar de forma interactiva con la
computadora.
Enfoque SO según su función
➢ El sistema operativo como gestor de recursos
➢ Asignación de recursos
➢ Protección
➢ Contabilidad
➢ El sistema operativo como máquina extendida:
➢ Ejecución de programas
➢ Órdenes de E/S
➢ Operaciones sobre archivos
➢ Detección y tratamiento de errores
➢ El sistema operativo como interfaz de usuario:
➢ Shell
➢ Interfaz Gráfica
Introducción a los Sistemas
Operativos

Estructura
COMPONENTES Y ESTRUCTURA DEL
SISTEMA OPERATIVO

El sistema operativo está formado por tres capas:

◼ Nucleo
◼ Servicios
◼ intérprete de mandatos o shell.
COMPONENTES DEL SISTEMA
OPERATIVO
EL NUCLEO

El Núcleo Es la parte del sistema operativo que


interacciona directamente con el hardware de la
máquina. Las funciones del núcleo se centran:
En la gestión de recursos, como el procesador,
tratamiento de interrupciones y las funciones
básicas de manipulación de memoria.
COMPONENTES DEL SISTEMA
OPERATIVO
EXOKERNEL
Es un sistema operativo de MIT (y una clase de sus
variantes) que maneja relativamente poca abstracción de
hardware. En exokernel, las responsabilidades de bajo
nivel de controlar el hardware (particularmente la
asignación de memoria ) a menudo quedan en manos
del desarrollador. Muchos desarrolladores probablemente
preferirían que el sistema operativo se responsabilice más
de esas tareas de bajo nivel, porque la mayoría de los
desarrolladores solo escriben aplicaciones.
COMPONENTES DEL SISTEMA
OPERATIVO
EXOKERNEL
Un exokernel simplemente asigna recursos de
hardware físico a los programas . Esto permite que el
programa use los sistemas operativos de la biblioteca, que
están vinculados para proporcionar parte de la abstracción
que el exokernel no está proporcionando.
Dada la aplicación, esto puede tener grandes beneficios de
rendimiento. En el caso de exokernel, Podemos programar
directamente "al metal", pero también elegir vincular en
un modelo de abstracción cuando lo deseemos. Es un
concepto muy poderoso.
COMPONENTES DEL SISTEMA
OPERATIVO
MICROKERNEL Y VARIANTES
El término nanokernel se usa para describir
un tipo específico de kernel . El prefijo "pico-" o "nano-",
"micro-" generalmente denota el "tamaño" del núcleo. Los
núcleos más grandes están más construidos con más
funciones y manejan más abstracción de hardware .
Los nanokernels son núcleos relativamente pequeños
que proporcionan abstracción de hardware ,
pero carecen de servicios del sistema . Los
microkernels modernos también carecen de servicios del
sistema, por lo que los términos se han vuelto análogos.
COMPONENTES DEL S.O.
SERVICIOS

Los servicios se suelen agruparse según su


funcionalidad en varios componentes, cada uno de
cuales se ocupa de las siguientes funciones:
◼ Gestión de procesos. Encargada de la creación,

planificación y destrucción de procesos.


◼ Gestión de memoria. Componente encargada de

saber qué partes de memoria están libres y


cuáles ocupadas, así como de la asignación y
liberación de memoria según la necesiten los
procesos.
Proceso
◼ Un programa en ejecución.
◼ Una instancia de un programa funcionando
en un computador.
◼ La entidad que puede ser asignada al
procesador y ejecutada por él.
◼ Una unidad de actividad caracterizada por
un sencillo tratamiento de ejecución
secuencial, un estado actual, y asociada a un
conjunto de recursos del sistema.
Estructura del S.O.
◼ El S.O. se encuentra entre el hardware y los
programas de aplicación.
◼ El diseño y estructura de un S.O. dependerá
de las perspectivas que se tienen del mismo.
◼ El siguiente glosario nos será de mucha
ayuda en este capítulo:
• Módulos: Las principales abstracciones y Servicios
de los S.O.
• Interfaces: Operaciones específicas dadas por los
módulos.
• Estructura: Forma en que los módulos se conectan
entre sí.
Estructura del S.O.
intérprete de mandatos o shell

◼ Todos estos componentes ofrecen una serie de


servicios a través de una interfaz de llamadas
sistema. Como se muestra en la Figura un
sistema operativo puede incluir más de una
interfaz de servicios (en la figura se han
considerado las interfaces Win32 y POSIX)
COMPONENTES Y ESTRUCTURA DEL
SISTEMA OPERATIVO

Glosario
POSIX es el acrónimo de Portable Operating System
Interface, y X viene de UNIX como seña de identidad de la
API. El término fue sugerido por Richard Stallman en la década
de 1980, respuesta a la demanda de la IEEE, que buscaba un
nombre fácil de recordar.
WIN32 API de Microsoft proporciona un kit de desarrollo de
software en el que se incluyen la documentación y las
herramientas necesarias para que los programadores puedan
crear sus aplicaciones y aprovechar los recursos del sistema.
Las versiones modernas de Windows utilizan la API de 32 bits
llamada Win32.
COMPONENTES DEL SISTEMA
OPERATIVO
Estructura del S.O.
◼ Ejemplos de perspectivas desde las
que se puede analizar un S.O. son:
• Examinar los servicios que proporciona
• Explorar la interfaz que ofrece a los
usuarios y programadores.
• Desglosar el sistema en sus componentes y
estudiar sus interconexiones.
Componentes Comunes del S.O.
◼ No existe una división única de componentes
de un S.O.
◼ Las siguiente división de componentes es una
propuesta general
• Administración de Procesos
• Administración de Memoria
• Administración de Archivos
• Administración de E/S
• Administración de almacenamiento secundario
• Networking
• Sistema de Seguridad
• Interprete de órdenes
Administración de Procesos
◼ Un proceso necesita ciertos recursos para su
ejecución como: tiempo del CPU, memoria,
archivos y operaciones de E/S para hacer su
tarea.
◼ El S.O. es responsable de la siguientes
actividades asociadas a los procesos:
• Creación y Eliminación de procesos
• Suspensión y Reanudación de procesos
• Provisión de mecanismos para:
✓ Sincronización de procesos

✓ Comunicación entre procesos.


Administración de Memoria
◼ Memoria Principal es un conjunto de palabras y
bytes, cada uno con su propia dirección.
◼ Es un repositorio de datos de acceso rápido,
tanto para el CPU como para los dispositivos de
E/S
◼ El S.O. es responsable de la siguientes
actividades asociadas a la administración de la
memoria:
• Llevar un control de las partes de la memoria que están
siendo usadas y por quién son usadas.
• Decidir que procesos cargar en memoria cuando hay
espacio disponible
• Reservar y liberar espacio en memoria
Administración de Archivos
◼ Un archivo es una colección de información
relacionada definida por su creador.
◼ El S.O. es responsable de la siguientes
actividades asociadas a la administración de los
archivos:
• Creación y eliminación de archivos
• Soporte de funciones para acceso a los archivos y
directorios
• Mapeo de archivos en los dispositivos de
almacenamiento secundario
• Respaldo de archivos sobre medios de almacenamiento
no volátil
Administración de E/S
◼ El sistema de E/S consiste de:
• Un sistema de buffers, caches y spool para gestión
de memoria
• Una interfase general con los controladores de los
dispositivos
• Drivers para dispositivos de hardware específico
◼ El S.O. es responsable de ocultar las
peculiaridades de dispositivos de hardware
específicos.
Administración de
almacenamiento Secundario
◼ El S.O. debe contar con algún almacenamiento
secundario para respaldar la memoria principal.
◼ La mayoría de los S.O. modernos usan discos
como el principal medio de almacenamiento en
línea, tanto para datos como para los programas.
◼ El S.O. es responsable de la siguientes
actividades asociadas a la administración de los
archivos:
• Administración del espacio libre
• Asignación de almacenamiento
• Planificación del disco
Networking
◼ Un S.O. distribuido es una colección de
procesadores que no comparten ni la memoria, ni
el reloj.
◼ Los procesadores en el sistema están conectados
a través de una red de comunicación.
◼ Para establecer la comunicación se usa un
protocolo.
◼ Un sistema distribuido provee acceso a servicios
y recursos remotos
◼ El S.O. es responsable de proveer los canales de
comunicación apropiados para conectarse a una
red de comunicaciones.
Sistema de Seguridad
◼ Seguridad se refiere a un mecanismo para
controlar el acceso de procesos o usuarios
a los recursos del computador.
◼ El Sistema de seguridad de un S.O. debe:
• Distinguir entre uso autorizado y no
autorizado
• Especificar los controles que se impondrán
• Especificar la forma en que se hará cumplir
con los controles.
Intérprete de Ordenes
◼ Uno de los programas más importantes del S.O.
es el intérprete de órdenes o de comandos (Shell).
◼ Es la interfaz entre el usuario y el S.O.
◼ La mayoría de las órdenes que se dan al S.O.
vienen en enunciados de control
◼ La función del shell es muy sencilla: obtener la
siguiente orden y ejecutarla
◼ En general los enunciados de control (orden)
tienen que ver con:
• Administración y creación de procesos
• Manejo de E/S
• Administración de almacenamiento secundario, etc
Servicios del S.O.
◼ Ejecución de programas – capacidad del S.O.
para cargar un programa en memoria y
ejecutarlo
◼ Operaciones de E/S – por cuestiones de
seguridad los usuarios no pueden controlar
los dispositivos de E/S directamente. El S.O.
debe incluir un mecanismo para realizar estas
operaciones
◼ Manipulación del sistema de archivos –
capacidad de crear, leer, escribir, actualizar y
borrar archivos.
Servicios del S.O.
◼ Comunicaciones – intercambio de
información entre procesos que se están
corriendo al mismo tiempo, ya sea en el
mismo CPU o en la misma red. Hay 2 formas
de hacerlo y es compartiendo memoria o
enviandose mensajes.
◼ Detección de Errores – Asegura que para
todos los posibles errores que puedan darse
(E/S, errores de computo, desbordamiento de
memoria, etc) el S.O. emprenda una acción
apropiada.
Servicios del S.O.
Además de estos servicios, existen otros cuya
función principal no es ayudar al usuario; sino
asegurar el funcionamiento eficiente del S.O.
◼ Asignación de recursos – Reserva de recursos
para múltiples usuarios o múltiples procesos
corriendo al mismo tiempo
◼ Contabilización (Estadísticas) – guarda datos
históricos de información acerca de qué tantos
usuarios usan cuántos recursos, y de qué tipo
◼ Protección – Asegura que el acceso a los
recursos del sistema sean siempre controlados
Secuencia de arranque PC
Secuencia de arranque
Computador
Secuencia de arranque
Computador
El arranque del computador tiene 2 fases:

◼ Arranque hardware (Verde)


◼ Arranque del sistema operativo (Amarillo)
Secuencia de arranque PC
Arranque hardware

◼ La Memoria principal es volatil.


◼ Se tiene un programa permanente grabado en
la memoria ROM (Memoria no volatil)
◼ Memoria ROM tiene programa de arranque.
Conocido Iniciador ROM.
◼ Arranque de la PC, senal electrica carga valores
predefinidos en los registros. (en el contador
de programa la dirección de comienzo del
iniciador ROM)
Nota: La computadora solamente es capaz de realizar actividades útiles si
cuenta con el correspondiente programa cargado en memoria principal.
Secuencia de arranque PC
Arranque hardware

Iniciador ROM realiza tres funciones:


◼ Hace una comprobación del sistema.(detecta

características y comprueba funcionamiento).


◼ Fase de lectura y almacenamiento en memoria

del programa cargador del sistema operativo.


◼ Finalmente da control a este programa.
Bifurcando a la dirección de memoria en la que
esta almacenado.
Nota: Programa iniciador ROM sea independiente del sistema operativo
Secuencia de arranque PC
Arranque hardware

En las PC la memoria ROM contiene, además del


programa iniciador, software de E/S denominado
BIOS (basic input-output system).

Nota: La BIOS la proporciona el fabricante y suele contener procedimientos


para leer y escribir caracteres del teclado y escribir en la pantalla.
Secuencia de arranque PC
Arranque hardware

◼ El S.O. se encuentra almacenado en una


unidad de disco, una parte de el es el cargador
del S.O. o boot del S.O.
◼ Este programa está almacenado en una zona
predefinida del disco (p.ej.: los cuatro primeros
sectores del disco) y tamaño prefijado.
◼ El iniciador ROM trae a memoria principal el
programa cargador del sistema operativo
Secuencia de arranque PC
Arranque hardware

◼ El programa iniciador ROM y el sistema operativo


tienen un convenio: sobre la ubicación, dirección
de arranque y tamaño del cargador del sistema.
Este convenio garantiza que se puedan cargar mas
de un sistema operativo.

◼ El sistema operativo incluye, en una posición


prefijada por el iniciador ROM, una contraseña
(palabra mágica). Verifica que contiene
efectivamente programa cargador de un sistema
operativo.
Secuencia de arranque
Computador
El arranque del computador tiene 2 fases:

◼ Arranque hardware (Verde).


◼ Arranque del sistema operativo
(Amarillo)
Secuencia de arranque PC
Arranque S.O.

Cargador de S.O trae a memoria principal algunos


los componentes del S.O. Este realiza fase de
iniciación:
◼ Comprobación del sistema. (Completa la pruebas de

HW, Sistemas de Ficheros).


◼ Se establecen las estructuras de información propias
del S.O. (Tabla de procesos, las tablas de memoria y
las de E/S).
◼ Se carga en memoria principal parte del sistema

operativo que ha de estar siempre memoria, parte


que se denomina sistema operativo residente.
Secuencia de arranque PC
Arranque S.O.

◼ Se crea un proceso de inicio o login por cada


terminal definido en el sistema, así como una serie
de procesos auxiliares y de demonios (p. ej.; el
demonio de impresión o el demonio
comunicaciones).
◼ Los procesos de inicio presentan en su terminal el
mensaje de bienvenida y esperan login del usuario.
◼ Usuario se conecta y se lanza un proceso Shell. (el
«autoexec.bat» en MS-DOS o los «.login» y «.cshrc»
en UNIX). Este shell puede generar uno o varios
procesos.
Tipos Estructura del Sistema
Operativo
Un sistema operativo es un programa grande y complejo
que está compuesto, como se ha visto en la sección
anterior, por una serie de componentes con funciones bien
definidas.
◼ Sistemas operativos monolíticos.

◼ Sistemas operativos estructurados

◼ Sistemas por capa.


◼ Modelo cliente-servidor
Estructura del Sistema Operativo
Sistemas operativos monolíticos

Un sistema operativo de este tipo no tiene una estructura


clara y bien definida. Todos sus componentes se
encuentran integrados en un único programa (el sistema
operativo) que ejecuta en un único espacio de direcciones.
En este tipo de sistemas todas las funciones que ofrece el
sistema operativo se ejecuta en un modo núcleo.
Estructura del Sistema Operativo
Sistemas operativos Estructurados

Cuando se quiere dotar de estructura a un sistema


operativo, normalmente se recurre a dos tipos de
soluciones: sistemas:

◼ Por capas
◼ Sistemas cliente-servidor.
Estructura del Sistema Operativo
Sistemas operativos Estructurados por capas

◼ En un sistema por capas, el sistema operativo se


organiza como 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 le ofrece la
capa inferior.
◼ La principal ventaja es la modularidad y la ocultación
de la información. Una capa no necesita conocer como
se ha implementado la capa sobre la que se construye,
únicamente necesita conocer la interfaz que ofrece.
◼ Esto facilita enormemente la depuración y verificación
del sistema, puesto que las capas se pueden ir
construyendo y depurando por separado.
Estructura del Sistema Operativo
Sistemas operativos Estructurados por capas
Estructura del Sistema Operativo
Sistemas operativos Modelo Cliente Servidor

En este tipo de modelo, el enfoque 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 sistema operativo ejecutando en
modo núcleo.
A esta parte se le denomina micronúcleo y a los procesos
que ejecutan el resto de funciones se les denomina
servidores.
No hay una definición clara de las funciones que debe
llevar a cabo un micronúcleo (gestión interrupciones,
procesos y comunicación entre procesos)
Estructura del Sistema Operativo
Sistemas operativos Modelo Cliente Servidor
Clasificación de los Sistemas
Operativos
◼ ADMINISTRACIÓN DE TAREAS:
◼ MONOTAREA: los que permiten sólo ejecutar un

programa a la vez
◼ MULTITAREA: los que permiten ejecutar varias
tareas o programas al mismo tiempo
◼ ADMINISTRACIÓN DE USUARIOS
◼ MONOUSUARIO: aquellos que sólo permiten

trabajar a un usuario, como es el caso de los


ordenadores personales
◼ MULTIUSUARIO: los que permiten que varios
usuarios ejecuten sus programas a la vez.
Clasificación de los Sistemas
Operativos
◼ ORGANIZACIÓN INTERNA O ESTRUCTURA
◼ Monolítico

◼ Jerárquico (Sistemas por capa)

◼ Cliente-servidor

◼ MANEJO DE RECURSOS O ACCESO A SERVICIOS


◼ CENTRALIZADOS: si permite utilizar los recursos de

un solo ordenador
◼ DISTRIBUIDOS: si permite utilizar los recursos
(CPU, memoria, periféricos...) de más de un ordenador
al mismo tiempo
BASH WINDOWS

Programación en consola y
ejecución de comandos
INTRODUCION AL SHELL
WINDOWS
◼ Creando mi primer script
◼ Estructuras del lenguaje. (cmd)
◼ Trabajando con variables
◼ Operaciones aritméticas
◼ Usando comandos propios de windows
CREANDO MI PRIMER SCRIPT
◼ Abrir el editor de texto (bloc de notas o
notepad ++)
◼ Escribir las lineas de condigo
◼ Guardar archivo en una ruta:
ejemplo.bat
◼ Abrir la consola de ejecucion (CMD o
POWERSHELL) en la ruta especifica.
◼ Ejecutar el script
Ejemplo
Ejemplo
COMANDOS BASICOS
◼ cd
◼ mkdir
◼ cp
◼ mv
◼ dir *.bat /s /p
◼ > or >> or |
◼ rmdir /S /Q move
◼ SETX ADIVINA "BARZA/ADIVINA" /M
COMANDOS BASICOS
• help
• env
• find
• d:
• cd ..
• cd /
• @
• pause
• set /p
• Set /a
Ejemplo
Variables de Entorno
◼ Nivel de Usuario
◼ Nivel de Sistema
◼ Dinámicas
Trabajando con variables y
parámetros
Variables de Entorno
◼ Nivel de Usuario
◼ Nivel de Sistema
◼ Dinámicas
GNU/Linux
Comandos básicos
◼ La mayor parte de los usuarios de
GNU/Linux terminan prefiriendo los
comandos a la gestión gráfica del sistema.
◼ Múltiples razones:
◼ Rapidez.
◼ Comodidad (a veces es más cómodo escribir 3
palabras que hacer 27 veces clic en un
asistente).
Comandos básicos
◼ Comandos en una terminal o shell:
◼ Existen muchas shells: sh, csh, ksh, bash, etc.
◼ Entorno de trabajo:
◼ Case sensitive: sensible a mayúsculas (ECHO !=
echo).
◼ Sintáxis: comando arg1 arg2... argn
◼ Si un programa no está en el PATH: ./programa
◼ Prompt:
◼ $: usuario normal
◼ #: usuario administrador/a (root)
Comandos básicos
◼ ¿Dónde están los comandos
normalmente?
◼ /bin: comandos estándar para todos los
usuarios (ls, cat, cp, mv, etc.).
◼ /sbin: comandos estándar para root
(shutdown, mkfs, etc.)
◼ /usr/bin: comandos o programas para todos
los usuarios no presentes en todo sistema
UNIX-like.
◼ /usr/sbin: comandos para root no presentes
Comandos básicos
◼ Movimientos por el árbol de directorios:
◼ ls: listado del contenido del directorio
◼ ls -alh /etc

◼ cd: cambiar de directorio


◼ directorio actual = .
◼ directorio anterior = ..
◼ cd .
◼ cd ..
◼ cd /usr/sbin
◼ cd
Comandos básicos
◼ echo: mostrar un mensaje por pantalla
◼ echo hola mundo
◼ man: manual
◼ dentro del man:
◼ q: salir
◼ espacio: avance de página
◼ intro: avance línea a línea
◼ /termino: buscar “termino” dentro del manual
◼ man ls
Comandos básicos
◼ Manejo de ficheros:
◼ touch: crear un fichero vacío o abrir uno
existente.
◼ touch fichero
◼ touch /etc/motd
◼ rm: borrar ficheros.
◼ rm fichero1 fichero2
◼ rm *.* (!= rm *)
◼ rm -Rf /home
Comandos básicos
◼ Manejo de ficheros:
◼ cp: copiar ficheros.
◼ cp fichero1 fichero2
◼ cp fichero1 fichero2 directorio
◼ cp -a fichero1 fichero2
◼ cp -aR directorio1 directorio
Comandos básicos
Comandos básicos
◼ Manejo de ficheros:
◼ mv: mover/renombrar ficheros.
◼ mv fichero1 fichero2
◼ mv fichero1 fichero2 directorio
◼ mv directorio1 directorio2
◼ ln: crear enlaces entre ficheros.
◼ ln -s origen destino
◼ ln -s /usr/bin/games
/home/usuario/juegos
Comandos básicos
◼ Manejo de directorios:
◼ mkdir: crear un directorio.
◼ mkdir directorio
◼ mkdir /home/usuario/documentos
◼ rmdir: borrar un directorio.
◼ El directorio tiene que estar vacío (se vacía con
rm).
◼ rmdir directorio
◼ rmdir /home/usuario/documentos
Comandos básicos
◼ Mostrar información de un fichero:
◼ cat: muestra el contenido de un fichero.
◼ cat /etc/passwd
◼ more: muestra el contenido de un fichero
parando cada pantalla para poder leerlo
detenidamente.
◼ Es lo que se conoce como un PAGER o paginador.
◼ “less” es otro comando similar pero más potente
◼ more /etc/passwd
◼ file: muestra información acerca del fichero.
Comandos básicos
◼ date: muestra la fecha del sistema
$ date
dom jul 11 22:21:48 CEST 2004
$ date +”Dia %d de %m de %Y. Son las
%H:%M”
Dia 11 de 07 de 2004. Son las 22:23
◼ Comando muy útil en scripts para generar
logs, ficheros temporales, etc.
Comandos básicos
◼ Gestión de usuarios y permisos:
◼ ¿Quién soy? ¿Hay alguien ahí fuera?
◼ whoami: indica el usuario con el que estamos
ejecutando los comandos.
◼ id: credenciales, similar a whoami pero más
preciso.
◼ w, who: indican los usuarios conectados en este
momento y qué están haciendo.
Comandos básicos
◼ Gestión de usuarios y permisos:
◼ Cambiar propietario y grupo:
◼ chown: cambia el propietario del fichero
◼ chown root /var/tmp/fichero
◼ chgrp: cambia el grupo del fichero
◼ chgrp audio /dev/dsp
◼ chown -R nobody:nobody /tmp/*
Comandos básicos
◼ Gestión de usuarios y permisos:
◼ Cambiar el modo de acceso a ficheros:
◼ chmod: cambia el modo de acceso al fichero.
◼ dos sintáxis: octal y con letras:
◼ con letras: [ugoa] [+-=] [rwx]
◼ chmod u=rwx fichero

◼ chmod a+rx fichero

◼ octal:
◼ R W X R W X R W X
◼ 1 1 1 1 0 1 1 0 1
◼ 7 5 5
◼ chmod 755 fichero (= rwxr-xr-x)
Comandos básicos
◼ Buscar ficheros y dentro de ficheros:
◼ find: busca ficheros.
◼ find DondeEmpezar –name NombreFichero
◼ find /home/ubuntu –name cancion.mp3
◼ grep: busca dentro del contenido de los
ficheros:
◼ grep “palabra” fichero
◼ Patrones:
◼ . (un carácter cualquiera)
◼ * (cero o más ocurrencias del carácter anterior)
◼ ^ (principio de línea)
◼ $ (fin de línea)
◼ [a-f] (cualquier carácter del rango)
Comandos básicos
◼ Salida y tuberías:
◼ La salida de un comando se puede guardar en
un fichero con >:
◼ dpkg –l > listadepaquetes.txt
◼ La entrada de un comando puede alimentarse
con el contenido de un fichero con <:
◼ tr a A < fichero.txt
◼ La entrada de un comando puede ser la salida
del anterior, utilizando una tubería |:
◼ cat fichero.txt | tr a A
SERVIDORES
En la tecnología de la información, un servidor es un sistema
informático que proporciona servicios a otros sistemas informáticos
llamados clientes -más de una red. El servidor término puede referirse
a hardware (como un sistema informático Sun) o software (como un
servidor RDBMS).

Servidores de hoy en día son físicamente similares a la mayoría de los


PC de escritorio, aunque sus configuraciones de hardware pueden ser
especialmente optimizados para adaptarse a sus funciones de
servidor. Muchos utilizan hardware idéntica a los usados en las PC de
escritorio estándar. Sin embargo, los servidores ejecutan un software
que es a menudo muy diferente a los usados en los equipos de
escritorio y estaciones de trabajo.
Comunicación entre Computadoras
Paradigma Cliente/Servidor

◼ Principios de la comunicación
◼ Emisor/Cliente

◼ Nombre emisor (IP) y puerto


◼ Solicita/Recibe Información
(send/read)
◼ Receptor/Server (Escucha)

◼ Nombre del Receptor(IP y


Puerto)
◼ Recibe/Responde
Información(read/send)
◼ Mensaje
◼ Pedido o solicitud que realiza el emisor
◼ Respuesta que realiza el receptor
Socket
Socket: Una puerta entre procesos de aplicación y el protocolo de transporte (UDP or
TCP).

Controlado por Controlado por


el desarrollador process el desarrollador
process
de aplicaciones de aplicaciones
socket
socket
TCP with Controlado por
Controlado por TCP with
buffers, el sitema
el sitema buffers, internet variables operativo
operativo variables

host or host or
server server
Aplicaciones Cliente/Servidor

◼ Implementación de un protocolo standard definido en el RFC. (FTP, HTTP, SMTP…)


◼ Conforme a la reglas dictadas por el RFC.
◼ Debe usar un número de Puerto asociado con el protocolo.

◼ Aplicacion cliente/Servidor Propietaria:


◼ Un desarrollador (o equipo) crea un programa cliente y servidor.
◼ El desarrollador tiene el control Total.
◼ Debe tener cuidado de no usar uno de los puertos standards definidos en el RFC.

* Puertos standards definidos en el RFC: Administrados por “Internet Assigned Numbers


Authority”(IANA)
./etc/services (primeras líneas)
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
SERVIDORES DHCP
DHCP : Asigna y desasigna direcciones IP a los equipos de una red
SERVIDORES FIREWALL
Controla el flujo de datos de las redes.
SERVIDOR DE ACTUALIZACIONES
Permite la descarga de actualizaciones tanto del Sistema operativo como el
antivirus.
SERVIDOR DE DOMINIOS
El proceso de traducción de los nombres de dominio en direcciones
numéricas que las máquinas puedan entender es lo que se conoce como
resolución de nombres, una labor que realiza el Domain Name System.
SERVIDOR DE IMPRESION
Controla una o mas impresoras y acepta trabajo de impression de otros
clientes de la red, poniendo en cola los trabajos de impression.
SERVIDOR DE ARCHIVOS
Almacena varios tipos de archive y los distribuye a otros clientes de la red
SERVIDOR DE CORREOS
Almacena, envia recibe, enruta y realiza otras operaciones realacionadas
con el correo electronico para los clientes de la red.
SERVIDOR DE FAX
Almacena, envia recibe, enruta y realiza otras funciones necesarias para la
transmision, la recepcion y la distribucion apropiadas de los fax.
SERVIDOR DE TELEFONIA
Realiza funciones con la telefonía como es la de contestador automático,
realizando las funciones de un sistema interactivo para la respuesta de la
voz, almacenando los mensajes de voz, encaminando las llamadas y
controlando también la red o el internet.
SERVIDOR PROXY
Realiza un cierto tipo de funciones a nombre de otros clientes en la red para
aumentar el funcionamiento de ciertas operaciones, también proporciona
servicios de seguridad, incluyendo un cortafuegos..
SERVIDOR CLUSTER
Se aplica a los conjuntos o conglomerados de computadoras unidos entre si
normalmente por una red de alta velocidad y que se comportan como si
fuesen una única computadora.
SERVIDOR WEB
Almacena documentos HTML, imágenes, archivos de texto, escrituras y
demás material Web compuesto por datos y distribuye este contenido a los
clientes que lo soliciten en la red.
SERVIDOR BASE DE DATOS
Provee servicios de base de datos a otros programas u otras computadoras,
como es definido por el modelo cliente servidor.
SERVIDOR DE SEGURIDAD
Tiene software especializado para detener intrusiones maliciosas,
normalmente tienen un antivirus, antispyware, antimalware, además de
contar con cortafuegos redundantes de diversos niveles.
SERVIDOR LDAP
LDAP (Lightweight Directory Access Protocol), (Protocolo Ligero de Acceso a
Directorios) es un protocolo a nivel de aplicación que permite el acceso a un
servicio de directorio ordenado y distribuido para buscar diversa información
en un entorno de red. LDAP también es considerado una base de datos
(aunque su sistema de almacenamiento puede ser diferente) a la que
pueden realizarse consultas.
SERVIDOR LDAP
Habitualmente, almacena la información de login (usuario y
contraseña) y es utilizado para autentificarse aunque es posible
almacenar otra información (datos de contacto del usuario, ubicación
de diversos recursos de la red, permisos, certificados, etc).
En conclusión, LDAP es un protocolo de acceso unificado a un
conjunto de información sobre una red. Implementaciones mas
conocidas:
• Active Directory • Red Hat Directory
• Novell Directory Server
Services • Apache Directory
• iPlanet Server
• OpenLDAP • Open DS
CLASIFICACION DE LOS
SERVIDORES
Servidores dedicados: Son aquellos que le dedican toda su
potencia a administrar los recursos de la red, es decir, a atender
las solicitudes de procesamiento de los clientes

Servidores no dedicados: son aquellos que no dedican toda


su potencia a los clientes, sino también pueden jugar el rol de
estaciones de trabajo al procesar solicitudes de un usuario local.
Máquinas Virtuales

◼ Una máquina virtual lleva la estructura por


capas a su conclusión lógica. Trata al
hardware y al kernel del S.O. como una sola
cosa.
◼ Una máquina virtual provee un interfaz que
es idéntica al hardware desnudo subyacente
◼ El S.O. crea la ilusión de que c/usuario posee
su propio procesador, y su propio espacio de
memoria; sobre los que puede correr sus
procesos.
Máquinas Virtuales

◼ Los recursos de la máquina real son


compartidos para crear las máquinas virtuales
◼ Planificación del CPU crea la apariencia de que
c/usuario tiene su propio procesador
◼ El spooling y un sistema de archivos pueden
proporcionar lectores de tarjetas virtuales e
impresoras de línea virtuales
◼ Una terminal normal de usuario de tiempo
compartido hace las veces de consola del
operador de máquina virtual
Máquinas Virtuales

Modelos de Sistemas (a) Máquina no virtual (b) Máquina Virtual


Tipos de Máquinas Virtuales

◼ Máquinas virtuales de proceso (en inglés


Process Virtual Machine)

◼ Máquinas virtuales de sistema (en inglés


System Virtual Machine).
Tipos de Máquinas Virtuales
Maquinas virtuales de proceso

◼ Este tipo de máquinas virtuales se sitúan por encima del


sistema operativo y tratan de aislar a las aplicaciones del
entorno sobre el que se ejecutan.

◼ Proporcionan una capa entre las aplicaciones y el


sistema operativo que captura todas las llamadas al
sistema y las traduce al sistema concreto de ejecución.

◼ La máquina virtual de Java o la máquina virtual del


entorno .NET son dos claros ejemplos de máquinas
virtuales software.
Tipos de Máquinas Virtuales
Maquinas virtuales de proceso

Este tipo de máquinas se crean para ejecutar


directamente aplicaciones que necesitan un
entorno determinado de ejecución sobre otro
entorno totalmente diferente.
Tipos de Máquinas Virtuales
Maquinas virtuales de sistema

◼ Tipo de aplicaciones tratan de emular directamente


el hardware. Las llamadas al hardware del S.O.
instalado serán capturadas y convertidas
en llamadas al sistema del hardware emulado.

◼ La emulación del hardware recibe el nombre


de virtualización.

◼ Permite ejecutar varias máquinas virtuales con


distintos sistemas operativos sobre el mismo
hardware de manera simultánea
Tipos de Máquinas Virtuales
Maquinas virtuales de sistema
◼ Se pueden copiar o mover a otra máquina
física de manera muy sencilla (backups o
reutilización de máquinas existentes).

◼ Las máquinas virtuales tienen discos duros virtuales


que para la máquina anfitriona son simplemente
ficheros de datos que se pueden copiar y manejar.

◼ La propia máquina virtual no es mas que un fichero


de configuración.
Tipos de Máquinas Virtuales
Maquinas virtuales de sistema
◼ Existen en Internet muchas máquinas virtuales
listas para ser ejecutadas.

◼ Estas maquinas ya vienen configuradas con un


servidor especifico o un entorno de desarrollo web
(con Linux con Apache, PHP y mySQL), o bien una
solución wiki lista para ser usada simplemente
descargando una máquina virtual
Aplicaciones de virtualización más
conocidas – Tipo 2 (Hospedada)
◼ Bochs
◼ Microsoft Virtual PC
◼ Parallels Workstation
◼ QEMU
◼ Virtual Iron
◼ VMWare
◼ Xen
◼ VirtualBox

QEMU, VMWare , VirtualBox, Microsoft Virtual PC


son las tres herramientas más utilizadas
Aplicaciones de virtualización Tipo
2 (Hospedada)
Bochs: Un emulador de procesadores x86 y
AMD64 con licencia de software abierto. Bochs
puede ejecutarse en distintos sistemas operativos,
incluyendo Linux, Windows o incluso la XBox.
Puede además simular varios sistemas operativos
como DOS, Windows o Linux.

Microsoft Virtual PC: suite de virtualización de


Microsot para Windows y para MacOS. VirtualPC
emula un PC estándar y todo el hardware
asociado.
Aplicaciones de virtualización Tipo
2 (Hospedada)

Parallels Workstation: software de virtualización


de la empresa Parallels Incorporation para
procesadores Intel x86.

QEMU: aplicación de software libre que


implementa un emulador de procesador y que
incluye un acelerador que permite incrementar la
velocidad de las máquinas virtuales.
Aplicaciones de virtualización Tipo
2 (Hospedada)

Virtual Iron: otra aplicación de virtualización que


ha sido de las primeras en aprovechar las
capacidades específicas de virtualización de los
nuevos procesadores Intel y AMD.

VMWare: Una completo conjunto de aplicaciones


de virtualización, con herramientas de pago
orientadas a la empresa y otras gratuitas más
orientadas al uso personal.
Aplicaciones de virtualización Tipo
2 (Hospedada)

VMWare: Hasta hace poco tiempo solo se ofrecía


de manera gratuita la aplicación VMWare Player,
que permitía ejecutar distintas máquinas virtuales
ya creadas y que se podían descargar desde
Internet. Desde fechas recientes se ofrece VMWare
Workstation, que permite no sólo ejecutar
máquinas ya creadas sino crear las máquinas
desde el comienzo.
Aplicaciones de virtualización Tipo
2 (Hospedada)
Xen: Una herramienta muy usada en la comunidad
Linux puesto que hasta hace poco tiempo sólo
podía usar Linux/Unix como sistema anfitrión. Con
la versión Xen 3.0 ya se puede instalar en
Windows.

VirtualBox: una herramienta para Windows y


para Linux (la versión para MAC actualmente está
en desarrollo en fase pre-alfa) liberada bajo
licencia GPL y con un rendimiento similar al de
otras aplicaciones como VirtualPC o VMWare.
Aplicaciones de virtualización Tipo
2 (Hospedada)
Hyper V: Hyper-V Es un programa de
virtualización de Microsoft basado en un hipervisor
para los sistemas de 64 bits1​ con los procesadores
basados en AMD-V o Tecnología de virtualización
Intel (el instrumental de gestión también se puede
instalar en sistemas x86). Una versión beta de
Hyper-V se incluyó en el Windows Server 2008 y la
versión definitiva se publicó el 26 de junio de
2008.2
Virtualización
Hypervisor o VMM (Virtual Machine Monitor)
Es un Software que crea una capa de
abstracción entre el hardware de la máquina
física (host) y el sistema operativo de la
máquina virtual (virtual machine, guest) .
Sirve para crear una versión virtual de un
dispositivo o recurso, como un servidor, un
dispositivo de almacenamiento, una red o
incluso un sistema operativo, donde se divide
el recurso en uno o más entornos de ejecución.
Virtualización
Términos usados
Hypervisor o VMM (Virtual Machine Monitor)
Software que crea una capa de abstracción
entre el hardware de la máquina física (host) y
el sistema operativo de la máquina virtual
(virtual machine, guest), siendo un medio para
crear una versión virtual de un dispositivo o
recurso.
Host: Máquina física donde se ejecuta la
maquina virtual.
Guest: Sistema operativo residente en el Host
Tipos de Virtualización
Virtualización
Tipos de Virtualización
Sistemas y/o aplicaciones de software que permiten el
aislamiento de las aplicaciones entre sí en una misma
máquina, y se encarga de asignar los recursos a éstos y
permitir su ejecución de manera simultánea, siempre y
cuando los recursos de hardware así lo permitan.

◼ Virtualización nativa Tipo 1: El sistema virtualizador


es un sistema operativo, y se encuentra instalado
directamente sobre el metal.
◼ Virtualización Alojada Tipo 2 : El virtualizador debe
instalarse sobre un S.O, en el equipo para poder
virtualizar (es una aplicación más en el sistema)
Virtualización
Tipos de Virtualización
◼ Virtualización nativa Tipo 1:

EJEMPLO 1 EJEMPLO 2
Virtualización
Tipos de Virtualización
◼ Virtualización Hospedada Tipo 2:
Tipos de Virtualización
Virtualización Nativa
Virtualizadores nativos utilizados
para virtualizar servidores
Principales sistemas virtualizadores nativos utilizados para virtualizar
servidores. Fuente: Schoelten, 2012

Nota: La cantidad entre paréntesis en la última columna, es el tamaño de los


bloques de archivos, para soportar la cantidad figurada al lado
Historia de Virtualización
Infraestructura Física
Infraestructura Virtual
Física vs Virtual
Propiedades de la Virtualización
◼ Particionamiento
◼ Aislamiento
◼ Encapsulamiento
◼ Independencia del hardware físico
Ventajas de la virtualización
Compartición de Recursos
Compartición de Recursos
CPU
Compartición de Recursos
Memoria

• Memory Over-Commitment (Usar memoria Virtual


para tener mas memoria RAM.
Compartición de Recursos
Red Física vs Virtual

• Cada Switches virtual posee 4088 puertos para atender


requerimiento de Red dentro del Host
• Cada Maquina Host hasta 10 puertos de Red Virtual.
Compartición de Recursos
Discos Duro
Compartición de Recursos
Dispositivos E/S
Diseño FileSystem Vmware
Archivos Virtual Machine
Virtualización
Técnicas:

• Full virtualización.
• Paravirtualización.
• Virtualización asistida por
hardware.
Virtualización
◼ Esta capa de software maneja, gestiona y arbitra los
cuatro recursos principales de una computadora
(CPU, Memoria, Red, Almacenamiento) .
◼ Actualmente existen diversas soluciones de
Virtualizacion:

◼ Virtualización de Servidores
◼ Virtualización de Escritorios
◼ Virtualización de Redes
◼ Virtualización de Almacenamiento
Virtualización de Servidores
Virtualización de Servidores
Virtualización de Servidores
Virtualización de Escritorios
Virtualización de Escritorios

EJEMPLO
Virtualización de Escritorios
Virtualización de Redes
Virtualización de Redes
Virtualización de Redes
Virtualización
Almacenamiento
Virtualización en la Nube
Requisitos Básicos
Virtualización en la Nube
Virtualización en la Nube
Diferencia entre Virtualización y
Computación en la Nube
◼ La Computación en Nube opera sobre la
Virtualización, casi en su totalidad.

◼ La Computación en Nube es un servicio, la otra es


una infraestructura tecnológica. La una descansa
sobre la otra.

◼ La Computación en Nube requiere obligatoriamente,


la Nube para funcionar. requerimiento que no es
obligatorio para la Virtualización, ya que ésta puede
funcionaren una red local, sin acceso absoluto a la
Nube
Diferencia entre Virtualización y
Computación en la Nube
Centro de Datos administrados
por software
Vcenter Operation Manager
Centro de Datos administrados
por software
Vcenter Operation Manager
Centro de Datos administrados
por software
Vcenter Operation Manager
Retos de la Virtualización
◼ Rápida incorporación de nuevos recursos para los
servidores virtualizados.
◼ Reducción de los costes de espacio y consumo
necesario de forma proporcional al índice de
consolidación logrado (Estimación media 10:1).
◼ Administración global centralizada y simplificada.
◼ Permite gestionar nuestro CPD como un pool de
recursos o agrupación de toda la capacidad de
procesamiento, memoria, red y almacenamiento
disponible en nuestra infraestructura.
Ventajas de la Virtualización
◼ Rápida incorporación de nuevos recursos para los
servidores virtualizados.
◼ Reducción de los costes de espacio y consumo
necesario de forma proporcional al índice de
consolidación logrado (Estimación media 10:1).
◼ Administración global centralizada y simplificada.
◼ Permite gestionar nuestro CPD como un pool de
recursos o agrupación de toda la capacidad de
procesamiento, memoria, red y almacenamiento
disponible en nuestra infraestructura.
Ventajas de la Virtualización
◼ Mejora en los procesos de clonación y copia de
sistemas: Mayor facilidad para la creación de
entornos de test que permiten poner en marcha
nuevas aplicaciones sin impactar a la producción,
agilizando el proceso de las pruebas.
◼ Aislamiento: un fallo general de sistema de una
máquina virtual no afecta al resto de máquinas
virtuales.
◼ Mejora de TCO y ROI
Ventajas de la Virtualización
◼ No sólo aporta el beneficio directo en la reducción del
hardware necesario, sino también los costes
asociados.
◼ Reduce los tiempos de parada. Migración en caliente
de máquinas virtuales (sin pérdida de servicio) de un
servidor físico a otro, eliminando la necesidad de
paradas planificadas por mantenimiento de los
servidores físicos.
◼ Alto grado de satisfacción general.
Ventajas de la Virtualización
◼ Balanceo dinámico de máquinas virtuales entre los
servidores físicos que componen el pool de recursos,
garantizando que cada máquina virtual ejecute en el
servidor físico más adecuado y proporcionando un
consumo de recursos homogéneo y óptimo en toda la
infraestructura.
Desventajas de la Virtualización
◼ Esto tiene como efecto la ralentización del sistema,
es decir, el programa no alcanzará la misma velocidad
de ejecución que si se instalase directamente en el
sistema operativo "anfitrión" (host) o directamente
sobre la plataforma de hardware. Sin embargo, a
menudo la flexibilidad que ofrecen compensa esta
pérdida de eficiencia.
CONCEPTOS BASICOS

PROCESOS
Programación
◼ Se llama Programación a la implementación de un algoritmo en un determinado
lenguaje de programación, para realizar un programa.
◼ Programa es una secuencia de instrucciones que una computadora puede
interpretar y ejecutar.
◼ Las computadoras son un ejemplo de sistemas basados en programa almacenado,
todos estos sistemas poseen un procesador central, cuya actividad de una forma simple
puede resumirse a:
1. Obtener una instrucción.
2. Determinar que instrucción es.
3. Ejecutar la instrucción
4. Ir al paso número 1

172
Estructura de un ordenador
Estructura de un ordenador
Unidad Aritmética

• Permite realizar una serie de operaciones aritméticas y lógicas sobre uno o


dos operando.

• Los datos sobre los que opera esta unidad están almacenados en un
conjunto de registros, o bien provienen directamente de memoria
principal.

• Por su lado, los resultados también se almacenan en registros o en


memoria principal.
Estructura de un ordenador
Unidad de Control

Es la que se encarga de hacer funcionar al conjunto, para lo cual


realiza las siguientes funciones:

• Lee de memoria las instrucciones de maquina que forman el


programa.
• Interpreta cada instrucción leída.
• Lee los datos de memoria referenciado por cada instrucción,
• Ejecuta cada instrucción.
• Almacena el resultado de cada instrucción.
Estructura de un ordenador
La unidad de control:

• Supervisar la ejecución de programas

• Coordinar las actividades de entrada/salida

• Localizar datos

• Establecer dónde se almacenan los datos

• Determinar el orden de ejecución de las instrucciones

• Asignar localidades de memoria


Estructura de un ordenador
La unidad de control:
Tiene asociados una serie de registro, entre los mas importantes:

• Contador de Programa (PC- Program Counter): Indica la dirección


de la siguiente instrucción de maquina a ejecutar.

• Puntero de Pila (SP, snack pointer): Maneja una pila en memoria


principal.

• Registro de Instrucción (RL) : Almacena la instrucción de maquina a


ejecutar.

• Registro de Estado: Almacena diversa información producida por la


ejecución de alguna de las ultimas instrucciones del programa (bits de
estado aritméticos) e información sobre la forma en que ha de
comportarse la computadora (bits de interrupción, nivel de ejecución)
Estructura de un ordenador

Unidad de entrada/salida (E/S)

Se encarga de hacer la transferencia de información entre la memoria


principal (o los registros) y los periféricos. La comunicación se puede realizar
de dos formas:

• E/S programada : Realizada por la unidad de Control


• E/S Independiente: A través de DMA (Acceso directo a memoria)
Estructura de un ordenador
Procesador (Unidad Central de Proceso)
Al conjunto de la unidad aritmética lógica y la unidad de control, ya que
físicamente constituyen un solo circuito integrado.
Estructura de un ordenador
Estructura de un ordenador
Buses Internos:

Caminos de comunicación que conectan dos o mas dispositivos o acceder a


diferentes partes del circuito:

• Bus de dirección: Para seleccionar posición de memoria para leer o


escribir datos

• Bus de datos: transmitir datos

• Bus de control: para sincronizar actividades y transacciones con los


periféricos del sistema
CLASIFICACION DEL
MICROPROCESADOR
Una forma es en función de las instrucciones que son capaces de ejecutar.

Microprocesadores con tecnología CISC y RISC

• CISC (Complex Instructions Set Computer): Interpreta y ejecuta un gran


numero de instrucciones, lo cual los hace lentos

• RISC ( Reduced Instructios Set Computer): Interpreta y ejecuta solo


instrucciones reducidas, son mas rápidos que los CISC
INTERRUPCIONES

Una interrupción es una suspensión temporal de la ejecución


de un proceso, para pasar a ejecutar una subrutina de servicio
de interrupción, la cual, por lo general, no forma parte del
programa, sino que pertenece al sistema operativo o al BIOS.
INTERRUPCIONES
A nivel físico, una interrupción se solicita activando una señal que llega a
la unidad de control (Programa solicitante).

Unidad de control realiza un ciclo de aceptación de interrupción.


Este ciclo se lleva a cabo en cuanto termina la ejecución de la instrucción
maquina que se esté ejecutando y consiste en las siguientes
operaciones:

• Salva algunos registros del procesador, como son el de estado y el


contador de programa.
• Eleva el nivel de ejecución del procesador, pasándolo a núcleo.
• Carga un nuevo valor en el contador de programa, por lo que pasa a
ejecutar otro programa.
INTERRUPCIONES

Las interrupciones se pueden generar por diversas causas, que se


pueden clasificar de la siguiente forma:

• Excepciones de programa: El desbordamiento en las operaciones


aritméticas, la división por cero, el intento de ejecutar una
instrucción con código operación incorrecto o de direccionar una
posición de memoria prohibida
• Interrupciones de reloj
• Interrupciones de E/S.
• Excepciones del hardware: Detección de un error de paridad en la
memoria o un corriente.
EL RELOJ
Este termino se refiere a varios conceptos:

• Oscilador que gobierna las fases de ejecución de las


instrucciones máquina: Relacionado a la frecuencia del
microprocesador por ejemplo 600 MHZ
• Generador de interrupciones periódicas: Evita que un
programa monopolice el uso de la computadora y permite que se
puedan ejecutar programas en determinados instantes de tiempo.
Por ejemplo se pueden atender interrupciones cada 20
milisegundos.
• Contador de fecha y hora: Contador que permite conocer la
fecha y la hora.
NIVELES DE EJECUCION
Nivel de Usuario:

Ejecuta solamente un subconjunto de las instrucciones máquina,


quedando prohibidas las demás. Además, el acceso a
determinados registros, o a partes de esos registros, y a
determinadas zonas del mapa de memoria y de E/S tambien
queda prohibido.

Nivel de Nucleo:

La computadora ejecuta todas sus instrucciones sin ninguna


restricción y permite el acceso a todos los registros y mapas de
direcciones.
Procesos. Tipos. Estados.
Estructura
Proceso
◼ Un proceso es una instancia de un programa en ejecución. Es decir,
cada vez que se lanza un programa, se crea un proceso, de forma
que si lanzo el mismo pro- grama dos veces, tendré dos procesos
distintos aunque partan de las mismas instrucciones.

◼ Cuando el usuario o una aplicación pide la ejecución de un


determinado pro- grama, el sistema operativo debe proveer de los
recursos necesarios para esta tarea. Para ello debe buscar espacio
en memoria RAM tanto para las instrucciones que van a ejecutarse
como para los datos que necesita el programa y saber qué ficheros,
dispositivos de E/S, … va a utilizar. Para esto crea en memoria la
imagen del Proceso
IMAGEN DEL PROCESO
◼ La imagen de memoria del proceso está formada por los
espacios de memoria que está autorizado a utilizar.
◼ Contiene la siguiente información
1) PCB - Bloque de Control de Proceso
2) Pila de ejecución del programa: Pila es una estructura dinámica,
puesto que crece y decrece según avanza la ejecución del proceso.
3) código fuente del ejecutable
4) Datos o variables del programa (Datos con valor inicial - Datos sin
valor inicial - Datos dinámicos)
Con valor inicial : Datos son estáticos y su valor se fija al
cargar el proceso desde el archivo ejecutable.
Sin valor inicial : Datos son estáticos, pero no tienen valor asignado el SO les asigna valores por
defecto.
Datos dinámicos: Datos se crean y se destruyen de acuerdo a las directrices del programa
Estructura
◼ Los procesos se estructuran de forma jerárquica. EL
sistema operativo lanza el primero y a partir de este se
crean todos los demás.
◼ El sistema operativo creará una estructura de control
en la que tenga toda la información de dicho proceso. A
esta estructura se le llama BCP ( Bloque de control
de proceso), y contiene diferente información
dependiendo del sistema operativo del que hablemos ,
pero por lo general tiene:
BCP
1. Identificador del proceso: Identificar de forma unívoca al proc
eso en el sistema, generalmente se emplea un entero sin signo
que se denomina PID (Process IDentifier).
2. Estado del proceso para el planificador de procesos: preparado,
activo bloqueado.
3. Contexto de la ejecución: valor de los registros del procesador,
bits de estados, etc. Esto es, cada vez que se ejecuta el
planificador y se realiza una conmutación de procesos, la
información sobre en qué lugar se en- contraba la ejecución del
proceso se encuentra guardada aquí, así como el lugar en el que
se paró la ejecución del anterior proceso (cada una en su
respectivo BCP).
BCP
4. Aspectos relacionados con la administración de memoria: tales co
mo el espacio de direcciones y la cantidad de memoria asignada a un
proceso.
5. Aspectos relacionados con la administración de ficheros: tales como lo
s ficheros con los que el proceso está actualmente operando.
6. Los procesadores en los que el proceso puede ejecutarse: en caso del
sistemas pueda soportar multiprocesador.
7. En el caso de un sistema operativo tipo UNIX: el proceso padre de dich
o proceso y la relación de procesos hijos.
8. Estadísticas temporales: Tiempo de lanzamiento del proceso, tiempo
en estado activo, etc
Tipos de Procesos
Interaccion con el usuario:
◼ Procesos en primer plano (foreground):
precisan de la intervención
del usuario.
◼ Procesos en segundo plano

(background): Se ejecutan sin que el


usuario tenga que hacer nada.
Tipos de Procesos
Modo en el que se ejecutan
◼ Procesos en modo kernel: Son procesos que
tienen acceso privilegiado a todo el equipo. Son
mucho más seguros. La mayoría de los
procesos del sistema operativo son de este
tipo.

◼ Procesos en modo usuario: Menos seguros.


Todos los que ejecutan los usuarios y/o
aplicaciones de usuario suelen ser de ese tipo.
Tipos de Procesos
Dependiendo de quién lo ejecutó:

Procesos del sistema: Los que han sido lanzados


por el propio sistema operativo.

Procesos de usuario: Los que ha lanzado un


usuario.

También podemos encontrar procesos monohilo


o multihilo
Estados
Hay tres estados básicos en los que puede
estar un proceso:

◼ En ejecución: Tiene asignada la CPU.


◼ En espera: Está en la lista para que se le c
onceda el procesador.
◼ Bloqueado: Está esperando a que se libere
un recurso para poder seguir con su
ejecución.
Estados Intermedios
◼ Parado: Le ha llegado una señal para que se pare y espera
a que le llegue otra para reiniciarse. Por ejemplo, se le ha
puesto un tiempo de inactividad, como una especie de
reloj despertador de forma que cuando pase ese tiempo,
le llegará una señal y se reiniciará. (sleep) .

◼ Zombie: El proceso, que es hijo de otro, ha terminado pe


ro por algún motivo no puede comunicarse con su proceso
padre y terminar completamente. Estos procesos quedan
ocupando una entrada en la tabla de procesos y los
recursos correspondientes.
Transiciones de estados
Los procesos pueden pasar desde su ejecución por tres estados,
que son los que indicamos en el punto anterior: En espera,
bloqueado y en ejecución.
Cuando un usuario o el sistema operativo ejecuta un programa,
ocurre lo siguiente:
1. Se crea una nueva entrada en la tabla de procesos del sistema.
2. Se asigna un PID al proceso
3. Se le asignan los recursos y la zona de memoria necesaria.
4. Se cargan las páginas del programa en memoria RAM
5. Se pone el proceso en la lista de espera para que el planificador
le conceda el procesador.
Transiciones de estados
En ese momento el proceso está en estado de Espera.
Cuando se le concede tiempo de procesador pasa a estar en
ejecución(1).
Si durante esto el proceso necesita un recurso que no está
disponible, este pasa a estado de bloqueado (3).
En el momento en el que el recurso se libere, el proceso vuelve a
estar en estado de espera(4).
También puede ocurrir que el proceso termine su tiempo de CPU y
vuelva a la lista de espera(2).
Si el proceso terminase antes de que se le agotase el tiempo de CPU
que se le ha concedido, simplemente terminaría, liberaría los
recursos y memoria que tiene asociados y desaparecería.
Transiciones de estados
Hilos de ejecución. (threads o procesos ligeros)

Los procesos pueden ejecutarse como un solo hilo, es decir, las


instrucciones van siguiendo un orden y nunca se pueden ejecutar a la
vez dos instrucciones del mismo proceso.

Multihilo: consiste en que partes del mismo proceso pueden


ejecutarse en paralelo, es decir , el mismo programa tiene partes
que pueden ejecutarse a la vez. De este modo, se puede ahorrar
tiempo. Por ejemplo, un navegador de internet puede tener varios
hilos, por ejemplo uno muestra las imágenes mientras otro recupera
datos de la red.
Hilos vs Procesos

Es fácil confundir hilos y procesos. La diferencia principal es que un


proceso tiene asignado un BCP y los hilos son parte del mismo
proceso.
Esto significa entre otras cosas que la memoria que se asigna al
proceso la compartirán todos los hilos.
También comparten el resto de recursos como ficheros abiertos, etc.
Esto quiere decir que si uno de los hilos modifica un recurso o una
variable de memoria, el cambio afectará al resto de hilos del
proceso.
Debido a esto es importante la sincronización entre hilos. Cada hilo
tendrá un identificador, un contador de programa y una pila propias.
Tipos de Hilos

Podemos distinguir hilos a nivel de usuario e hilos a nivel de kernel:


◼ Hilos a nivel de usuario: Son los que crean los programadores
y de los cuales el kernel o núcleo del sistema no es consciente
de que existan, por lo que el propio programador debe
encargarse de la sincronización de estos.

◼ Hilos a nivel de kernel: Estos son gestionados por el sistema o


perativo, por lo que si tenemos un procesador con varios núcleos
y /o varios procesadores, se acelerará la ejecución del proceso .
El sistema operativo se encarga del cambio entre hilos. Existen
sistemas operativos que son capaces de gestionar hilos. (a nivel
de kernel)
Ventajas de los hilos frente a los procesos

Los hilos son mucho más ligeros que los procesos. En la creación de
procesos se necesita un tiempo para la adjudicación de memoria y de
recursos que no es necesaria en el caso de cambio entre hilos. También el
cambio de contexto es mucho más “Pesado” en el caso de los procesos.
La utilización de hilos hace que los procesos sean más ágiles, debido a que
si una de las partes del proceso se bloquea esperando un recurso, otra en
otro hilo puede avanzar con otras tareas.
En caso de procesadores multinúcleo o sistemas multiprocesador, la
eficiencia de los procesos que utilizan hilos es evidente, al poder realizar
varias tareas realmente en paralelo (un hilo en cada procesador).
Un proceso multihilo no desaparece hasta que no han terminado todos sus
hilos
El Planificador. Algoritmos De Planificación De
Procesos

El planificador es el proceso del sistema operativo que se


encarga de decidir a qué proceso o hilo va acceder al
procesador y por cuánto tiempo. Para esto, se utilizan una
serie de algoritmos matemáticos que intentan conseguir los
siguientes objetivos en el reparto de la cpu:

Equidad: Todos los procesos deben ser atendidos.

Eficacia: El procesador debe estar ocupado el 100% del tiem


po.
El Planificador. Algoritmos De Planificación De
Procesos

Tiempo de respuesta: El tiempo empleado en dar respuest


a a las solicitudes del usuario debe ser el menor posible.

Tiempo de regreso: Reducir al mínimo el tiempo de espera


de los resultados esperados por los usuarios por lotes.

Rendimiento: Maximizar el número de tareas que se proces


an por cada hora.
PLANIFICACION DEL PROCESO
El objetivo de la planificación de procesos y procesos ligeros es el reparto del tiempo de
procesador entre los procesos que pueden ejecutar. El planificador es el módulo del sistema
operativo que realiza la función de seleccionar el proceso en estado de listo que pasa a estado de
ejecución, mientras que el activador es el módulo que pone en ejecución el proceso
planificado.

Los sistemas pueden incluir varios niveles de planificación de procesos. La Figura 3.22 muestra
el caso de tres niveles: corto, medio y largo plazo. La planificación a largo plazo tiene por
objetivo añadir nuevos procesos al sistema, tomándolos de la lista de espera. Estos procesos
son procesos de tipo batch, en los que no importa el instante preciso en el que se ejecuten
(siempre que se cumplan ciertos límites de espera). La planificación a medio plazo trata la
suspensión de procesos. Es la que decide qué procesos pasan a suspendido y cuáles
dejan de estar suspendidos. Añade o elimina procesos de memoria principal modificando,
por tanto, el grado de multiprogramación. La planificación a corto plazo se encarga de
seleccionar el proceso en estado de listo que pasa a estado de ejecución. Es, por tanto, la que
asigna el procesador.

También es importante la planificación de entrada/salida. Esta planificación decide el


orden en que se ejecutan las operaciones de entrada/salida que están encoladas para cada
periférico.
TIPOS DE PLANIFICACION
Algoritmos de Planificación

En esta seccion se explicara algunos de los algroritmos de


planificacion:

◼ FIFO (First in, First ouput) o FCFS (First


Come First Served)
◼ SJF (Short job first)
◼ Round Robin o Ciclico
◼ Prioridad
FCFS (First Come First
Served)

Cuando se tiene que elegir a qué proceso asignar


la CPU se escoge al que lleva más tiempo listo. El
proceso en ejecución se mantiene en la CPU hasta
que se bloquea voluntariamente. El problema de
este tipo de planificación es que si un proceso
muy largo entra en cpu, hará que muchos trabajos
más cortos queden en espera durante mucho
tiempo.
FIFO (First in, First ouput) o FCFS (First
Come First Served)

Tiempos de espera: P1:0 P2:10 P3:14

Tiempo medio de espera: 0+10+14/3= 8

Tiempos de finalización: P1:10 P2:14 P3:16

Tiempo medio de finalización: 16+14+10/ 3=13,3


SJF (Short job first)

Este tipo de algoritmo de planificación se usa para trabajos en batch o de


procesamiento por lotes en los cuales se puede saber cuál es el tiempo de
duración de la ejecución de cada proceso y entonces se puede seleccionar
primero el trabajo más corto.

Tiempos de espera: P1:6 P2:2 P3:0


Tiempo medio de espera: 6+2+0/3= 2,6
Tiempos de finalización: P1:16 P2:6 P3:2
Tiempo medio de finalización: 16+6+2/ 3=8
SJF (Short job first)

Como se vé el tiempo medio de espera mejora


considerablemente, y también el tiempo medio de terminación
de los procesos.

El problema que se presenta con éste algoritmo es que los


grandes procesos podrían sufrir de inanición dado que
cualquier proceso pequeño se “cuela” sobre uno de mayor
tamaño y como resultado final se podría dar el caso que el
proceso grande nunca obtenga procesamiento.
Round Robin
En este tipo de planificación cada proceso tiene asignado un
quantum de tiempo para ejecutarse. Si ese quantum no es
suficiente para acabar, el proceso pasa de nuevo a la cola para
ser atendido nuevamente cuando todos los demás
procesos hayan recibido su quantum.

El algoritmo presupone la existencia de un reloj en el sistema.


Un reloj es un dispositivo que genera periódicamente
interrupciones. Esto es muy importante, pues garantiza que el
sistema operativo (en concreto la rutina de servicio de
interrupción del reloj) coge el mando de la CPU
periódicamente. El quantum de un proceso equivale a un
número fijo de pulsos o ciclos de reloj.
Round Robin
Si el quantum de tiempo es muy grande, cada proceso tendrá
el tiempo necesario para terminar, de manera que el esquema
de planificación por turno rotatorio degenera en uno de
primero-en-entrarprimero-en-salir.

Si el quantum es muy pequeño, el gasto extra por cambio de


proceso se convierte en el factor dominante y el rendimiento
del sistema se degradará. Vamos a ver este ejemplo utilizando
un quantum de 2
Round Robin

Tiempos de espera: P1:0 P2:2 P3:4


Tiempo medio de espera para ser atendido: 0+2+4/3= 2.
Tiempos de finalización: P1:16 P2:10 P3:6
Tiempo medio de finalización: 16+10+6/ 3=10,6
Con prioridad
A cada proceso se le asocia una prioridad y la CPU es asignada al proceso
de mayor prioridad.

Las prioridades pueden ser definidas externa o


internamente. Externamente al sistema, atendiendo a la importancia de
los procesos, de los usuarios que lo lanzaron, etc. Internamente al sistema,
por los requisitos de memoria que necesite el proceso, tiempos de
ejecución que tenga asignados, etc.

El problema de esto es que un proceso con muy poca prioridad puede no


llegar a ser atendido nunca. Esto puede solventarse usando el método de
“envejecimiento”, que consiste en dar más prioridad a los procesos
que llevan más tiempo esperando.
Varias CPU’s
Cuando hablamos de sistemas multiprocesador o procesadores con varios
núcleos, además el sistema operativo tiene que decidir a qué procesador
va cada proceso. Atendiendo a este concepto, podemos encontrar:

Sistema heterogéneo: Los procesadores son diferentes entre sí. En este


caso cada procesador tiene su propia cola de procesos, un proceso
va siempre al mismo procesador.

Sistema Homogéneo: Todos los procesadores son idénticos.


Varias CPU’s

En el Sistema Homogéneo puede ocurrir dos cosas:

Procesamiento asimétrico: Las tareas del mismo tipo se reali


zan siempre en el mismo procesador.

Procesamiento simétrico: Las tareas se reparten por igual en


tre todos los procesadores.
Interrupciones y Excepciones
Una excepción se produce cuando hay una instrucción
errónea en un programa, por ejemplo, una división por
0. En ese momento el sistema operativo debe realizar
las acciones oportunas.

En ciertos intervalos de tiempo puede convenir no


aceptar señales de interrupción. Por ello las
interrupciones pueden inhibirse por programa.
Sincronización y Comunicación
entre procesos
Interacción entre procesos
Se puede clasificar en función del nivel de conocimiento que
c/proceso tiene de la existencia de los demás.

◼ Los procesos no tienen conocimiento de los demás.


(competencia)
◼ Los procesos tienen un conocimiento indirecto de los
otros. (cooperación)
◼ Los procesos tienen un conocimiento directo de los otros.
(cooperación)
Sincronización y Comunicación
entre procesos

◼ Hay procesos independientes y otros


que deben comunicarse y sincronizarse
con otros. En este caso se utilizan las
señales para enviar información de uno
a otro o los recursos y zonas de
memoria compartida.
◼ Por ejemplo, un proceso (P1) puede
necesitar un dato que otro proceso (P2)
pro- duce y hasta que esto no ocurra, no
Sincronización y
Comunicación entre procesos
Sincronización y
Comunicación entre procesos
También aparecen problemas como el de las Condiciones de competencia.

Las condiciones de competencia se dan cuando dos o más procesos


intentan acceder a un mismo recurso.
Sincronización y Comunicación
entre procesos
Un ejemplo serían dos procesos P1 y P2 que intentan
acceder a una variable global en memoria que
llamaremos A pongamos que con un valor inicial de 5. P1
se encarga de sumar 2 a la variable y P2 de restarle 1.
Lo normal es que si entra P1 , modifica A y luego lo hace
P2, el resultado de A sea 6.
Sincronización y Comunicación
entre procesos
1. P1 recoge el valor de la variable, por ejemplo, (5) la pase a un
registro interno de la cpu para operar con este valor y antes de
dejar el resultado en memoria pierda el procesador.
2. En ese momento P2 entra en el procesador y pone sus registros,
etc. Recoge el valor de A (5, puesto que a P1 no le ha dado
tiempo a dejar el resultado en memoria), lo cambia con un
resultado de 4 y lo deja en memoria.
3. Cuando el proceso P1 vuelva a tener el procesador, dejará su
resultado (5+2=7) en la variable A de memoria, sobrescribiendo
el resultado de P2 y se habrá perdido la operación que realizó
dicho proceso.
Competencia por los
recursos
Competencia por los
recursos
En el caso de competencia por recursos, el sistema operativo también se debe
asegurar de que no se produce: Interbloqueo -abrazo mortal o
DeadLock. Esto ocurre, por ejemplo, cuando un proceso P1 necesita dos recursos R1 y R2. A su
vez otro proceso P2 precisa también los mismos recursos.
1. P1 recibe la cpu y ocupa el recurso R1, y pierde el
procesador.
2. Entra P2 en el sistema y coge el recurso R2, como no
puede coger el recurso R1 se bloquea.
3. Pasa el procesador al proceso P1, pero este no puede
coger el recurso R2, con lo que también se bloquea.
4. El resultado es que tenemos dos procesos que se bloquean
mutuamente y no pueden avanzar en su ejecución
Exclusión mutua
Modelo que prohíbe que dos procesos accedan a un recurso
compartido al mismo tiempo.

Para poder explicar la Exclusión mutua debemos definir el conc


epto de sección crítica.

Sección crítica:
La seccion critica de un programa es la zona del programa en
la que se puede modificar el recurso que comparten varios
procesos.
Exclusión mutua
Aunque este requerimiento evita las condiciones de carrera,
no es suficiente para que los procesos en paralelo cooperen
de la manera correcta y eficiente al utilizar datos compartidos.
Necesitamos cumplir con cuatro condiciones para tener una
buena solución:
◼ No puede haber dos procesos de manera simultánea
dentro de sus regiones críticas.
◼ No pueden hacerse suposiciones acerca de las velocidades
o el número de CPUs.
◼ Ningún proceso que se ejecute fuera de su región crítica
puede bloquear otros procesos.
◼ Ningún proceso tiene que esperar para siempre para entrar
a su región crítica.
Exclusión mutua
Las soluciones de exclusión mutua con espera ocupada
funcionan de la siguiente manera:
Cuando un proceso intenta entrar a su región crítica, verifica
si está permitida la entrada. Si no, el proceso se queda
esperando hasta obtener el permiso. Para ello se pueden
utilizar diferentes métodos como son:
1) Desactivación de interrupciones.
2) Variables cerradura
3) Alternancia estricta
4) Instrucción TSL
5) Monitores
Desactivación de
interrupciones
El método más simple para evitar las condiciones de
competencia es hacer que cada proceso desactive todas sus
interrupciones antes de entrar a su sección crítica y las active
una vez que salió de la misma. De esta forma, no sale de la
cpu hasta que no ha terminado la ejecución del la sección
crítica.

Este modelo como tiene un gran problema y es que si se


produce un fallo mientras que el proceso está en la región
crítica no se puede salir de la misma y el sistema operativo no
recuperaría el control.
Variables cerradura
En éste caso se genera una variable , que se conoce como semáforo
, que puede tener dos valores:
◼ 0 (no hay ningún proceso en su sección crítica)
◼ 1 (indicando que la sección crítica está ocupada)
Entonces cada proceso antes de ingresar a la sección crítica verifica
el estado de la variable de cerradura y en caso de que la misma este
en 0, le cambia el valor y accede a la misma y en caso de que la
misma sea 1 el proceso se queda esperando hasta que el mismo sea
0.
El problema aquí se presenta si dos procesos verifican al mismo
tiempo que la variable cerradura está en 0 e ingresan a la región
crítica al mismo tiempo.
Alternancia estricta
Esta solución requiere que los dos procesos se alternen de manera
estricta al entrar en sus regiones críticas (por ejemplo, al poner archivos
en la cola de impresión).
Ninguno podría poner dos archivos en la cola al mismo tiempo.
Aunque este algoritmo evita todas las condiciones de carrera, en realidad
no es un candidato serio como solución.

El algoritmo de alternancia estricta no bloquea el acceso a la región crítica


cuando otro proceso se está ejecutando, sino que coge el recurso para sí
durante toda la ejecución del programa.

El problema de ésta solución es que cuando un proceso no está en la


sección crítica igualmente tiene bloqueado el recurso y por lo tanto no
permite que otro proceso lo utilice.
Instrucción TSL
Esta solución requiere ayuda del hardware y es debido a que en
general las computadoras diseñadas para tener más de un
procesador tienen una instrucción TEST AND SET LOCK.
TSL son las siglas de Test and set lock, una instrucción hardware
utilizada por ciertos procesadores para facilitar la creación de
semáforos y otras herramientas necesarias para la programación
concurrente en computadores.
TSL es una instrucción máquina que realiza dos acciones:
◼ Leer el contenido de una palabra de la memoria en un registro
◼ Y almacenar un valor distinto de cero en dicha palabra
de memoria.
Instrucción TSL
Al tratarse de una instrucción máquina, el procesador nos garantiza
que la instrucción TSL es realizada sin ningún tipo de interrupción
por parte de otro proceso, es decir las operaciones de lectura y
escritura de la palabra tienen la garantía de ser indivisibles.
Además, si nos encontramos en un sistema multiprocesador,
ninguno de los demás procesadores tendrá acceso a la palabra
hasta que termine de ejecutarse la instrucción. El procesador que
ejecuta la instrucción TSL cierra el bus de la memoria para
prohibir a los demás el acceso a la memoria hasta el término de la
instrucción.
El modelo de espera acotada tiene el inconveniente que se
desperdicia tiempo de procesador, al perder tiempo durante la
espera el cual el proceso pasa al estado de dormido
Monitores
Un monitor es una colección de procedimientos,
variables y estructuras de datos que están todos
agrupados juntos en un tipo especial de módulo o
paquete.

Para poder acceder a un recurso , el proceso debe


utilizar obligatoriamente los procedimientos del
monitor, y este se encarga de realizar la exclusión
mutua del recurso.
Comunicación entre procesos
Mensajes
Cuando los procesos tienen que compartir información, incluso en
equipos remotos, pueden utilizar colas de mensajes para enviarse
esta.
Los procesos introducen mensajes con la información necesaria en
la cola y se van almacenando en ella. Cuando un proceso extrae un
mensaje de la cola, recoge el primero que se introdujo y este se
borra .
Sincronización entre
procesos
Señales
Las señales se utilizan para sincronizar procesos. Cada señal
tiene un comportamiento por defecto, como puede ser pausar
un proceso o pararlo. La mayoría de ellas pueden ser tratadas
de forma que el programa la recoja y realice una serie
de instrucciones cuando esta llegue.
Hay formas de pasar señales al sistema operativo, por
ejemplo, cuando pulsamos control + C, o utilizando
funciones del sistema para enviar una determinada señal a un
proceso para modificar la forma de actuar de este en ese
momento dado.
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y
FÍSICAS
Desarrollo y análisis de software y aplicaciones

TEMA: ARQUITECTURA DE COMPUTADORES

OBJETIVO DE LA CLASE: CONCEPTOS BASICOS


DE ARQUITECTURA DE LA COMPUTADORA

Ing. Christopher Crespo León, Msc


JERARQUIA DE MEMORIA

El funcionamiento de la jerarquía de memoria exige hacer adecuadas


copias de información de los niveles más lentos a los niveles más rápidos,
en los cuales son utilizadas (p.ej.: cuando se ejecutar un programa hay
que leer el fichero ejecutable y almacenarlo en memoria principal).
Inversamente, cuando se modifica o crea la información en un nivel
rápido, y se desea su permanencia, hay que enviarla al nivel de disco o
cinta.
JERARQUIA DE MEMORIA
La gestión corre a cargo del sistema operativo, aunque, para hacerla
correctamente, requiere de la ayuda de hardware. El sistema operativo
también administra el concepto de memoria virtual.
JERARQUIA DE MEMORA
MIGRACION DE INFORMACION

Exige tener, en cada momento, la información adecuada en el nivel


adecuado:

• Bajo demanda explícita: Exige que el programa solicite explícitamente


el movimiento de la información. Ejemplo programa editor.

• Bajo demanda automática: Consiste en hacer la migración


transparente al programa, es decir, sin que este tenga que ser consciente
de que se produce. Se utiliza en las memorias cache y en la memoria
virtual.

“Sean k y k + 1 dos niveles consecutivos de la jerarquía, siendo k el nivel mas


rápido. La existencia de una migración automática de información permite que
el programa referencia la información en el nivel k y que, en el caso de que no
exista una copia adecuada de esa información en dicho nivel k, se traiga esta
desde el nivel k + 1 sin que el programa tenga que hacer nada para ello.”
JERARQUIA DE MEMORIA
MIGRACION DE INFORMACION
Mecanismos usados en migración de Demanda automática:
• Tamaño de los bloques transferidos: La migración automática se hace en
porciones de información de un tamaño determinado. En concreto, para la
memoria cache se transfieren líneas de unas pocas palabras, mientras que para
la memoria virtual se transfieren paginas de uno o varios KB. El tamaño de estas
porciones es una característica muy importante de la jerarquía de memoria.
• Política de extracción: Define qué información se sube del nivel k + 1 al k y
cuándo se sube. La mas usada es la bajo demanda, que consiste en subir
aquella información que referencia el programa, justo cuando la referencia. El
éxito de esta política se basa en la proximidad espacial. No se sube
exclusivamente la información referenciada sino una porción mayor (línea o
página).
• Política de reemplazo: Determina qué porción hay que eliminar, tratando de
seleccionar una que ya no sea de interés para el programa en ejecución.
• Política de ubicación: Determina dónde almacenar cada porción. Existen
limitaciones en cuanto al lugar en el que se pueden almacenar las diversas
porciones de información.
JERARQUIA DE MEMORIA
PARAMETROS IMPORTANTES
La eficiencia de la jerarquía de memoria se mide mediante dos parámetros
siguientes:
• Tasa de aciertos o hit ratio (Hr)
• Tiempo medio de acceso efectivo (Tef).

• Tasa de aciertos o hit ratio (Hr): (Hrk) del nivel k de la jerarquía se define
como la probabilidad de encontrar en ese nivel la información referenciada. La
tasa de fallos Frk es 1 - Hrk. La tasa de aciertos ha de ser alta para que sea
rentable el uso del nivel k de la jerarquía. Los factores más importantes que
determinan Hrk son los siguientes:
• Tamaño de la porción de información que se transfiere al nivel k.
• Capacidad de almacenamiento del nivel k.
• Política de reemplazo.
• Política de ubicación.
• Programa específico que esta ejecutándose (cada programa tiene un
comportamiento propio).
JERARQUIA DE MEMORIA
PARAMETROS IMPORTANTES
Tiempo medio de acceso efectivo (Tef) : De un programa se obtiene
promediando los tiempos de todos los accesos que realiza el programa a largo
de su ejecución. Tomar en consideración que este tiempo es variable debido
a que el tiempo de acceso a una información depende de que se produzca o no
un fallo en el nivel k. Denominaremos tiempo de acierto al tiempo de acceso
cuando la información se encuentra en nivel k. mientras que denominaremos
penalización de fallo al tiempo que se tarda en realizar migración de la
porción cuando se produce fallo. Tef depende básicamente de los factores
siguientes:

• Tiempo de acierto.
• Penalización de fallo.
• Tasa de aciertos (Hrk) del nivel k.
JERARQUIA DE MEMORIA
EFECTOS COLATERALES
Coherencia: Efecto colateral de la jerarquía de memoria es que existen varias
copias de determinadas porciones de información en distintos niveles. Al escribir
sobre la copia del nivel k, se produce una discrepancia con la copia del nivel k +
1; esta situación se denomina falta de coherencia. Se dice que una porción de
información está sucia si ha sido escrita. La coherencia de la jerarquía de
memoria exige medidas para eliminar la falta de coherencia.

Direccionamiento: La jerarquía de memoria presenta un problema de


direccionamiento. Supóngase que el programa en ejecución genera la dirección X
del dato A al que quiere acceder. Esta dirección X está referida al nivel k + 1,
pero se desea acceder al dato A en el nivel k, que es más rápido. Para ello se
necesitara conocer la dirección Y que ocupa A en el nivel k, por lo que será
necesario establecer un mecanismo de traducción de direcciones X en sus
correspondientes Y.
JERARQUIA DE MEMORIA
EFECTOS COLATERALES

Direccionamiento: Supóngase que el espacio de nivel k + 1 es de 2 GB, lo


que equivale a suponer que n = 31, y que el espacio de nivel k es de 8 MB, lo
que supone que m = 23. El traductor tiene aproximadamente dos millones de
valores de entrada distintos y ocho millones de direcciones finales.
Solución: Para simplificar la traducción, y aprovechar la proximidad espacial,
se dividen los mapas de direcciones de los espacios k + 1 y k en porciones
de tamaño Y. Estas porciones constituyen la unidad de información mínima que
se transfiere de un nivel al otro.
JERARQUIA DE MEMORIA
EFECTOS COLATERALES
JERARQUIA DE MEMORIA
TECNICAS DE DIRECCIONAMIENTO
La proximidad referencial: La proximidad referencial es la
característica que hace viable la jerarquía de memoria, de ahí su
importancia. En términos globales, la proximidad referencial establece
que un programa en ejecución utiliza en cada momento una pequeña
parte de toda la información que usa.

Para exponer el concepto de proximidad referencial de forma más


específica, partimos del concepto de traza. La traza de un
programa en ejecución es la lista ordenada en el tiempo de las
direcciones de memoria que referencia para llevar a cabo su
ejecución. Esta traza R estará compuesta por las direcciones de
las instrucciones que se van ejecutando y por las direcciones de
los datos empleados, es decir:
Re = re(l), re(2), re(3), ... re(j)
donde re(i) es la i-ésima dirección generada por la ejecución del
programa e.
JERARQUIA DE MEMORIA
TECNICAS DE DIRECCIONAMIENTO
También se define un parámetro importante como la distancia entre
dos elementos j y k de una traza re:

d(re(j), re(k)) = |re(j) — re(k)|.

Existen dos tipos de proximidad referencial:

• Proximidad espacial o Proximidad secuencial.


• Proximidad temporal
JERARQUIA DE MEMORIA
TECNICAS DE DIRECCIONAMIENTO
Proximidad Espacial o Secuencial: De una traza postula que, dadas
dos referencias re(j) y re(i) próximas en el tiempo (es decir, que i — j sea
pequeño), existe una alta probabilidad de que su distancia d(re(j), re(i)) sea
muy pequeñas. Este concepto se justifica:

• Los programas son fundamentalmente secuénciales, a excepción de las


bifurcaciones, por que su lectura genera referencias consecutivas.
• La gran mayoría de los bucles son muy pequeños, de unas pocas
instrucciones máquina, por lo que su ejecución genera referencias con
distancias pequeñas.
• Las estructuras de datos que se recorren de forma secuencial o con
referencias muy próximas son muy frecuentes. Ejemplos son los vectores,
las listas, las pilas, las matrices, etc. Además, las zonas de datos suelen
estar agrupadas, de manera que las referencias que se generan suelen
estar próximas.
JERARQUIA DE MEMORIA
TECNICAS DE DIRECCIONAMIENTO
Proximidad Temporal: Postula que un programa en ejecución tiende a
referenciar direcciones empleadas en un pasado próximo. Esto es, existe una
probabilidad muy alta de que la próxima referencia re( j + 1) este entre las n
referencias anteriores re( j — n + 1), re(j —n + 2),............, re(j -2), re( j —
1), re (j). La proximidad temporal se explica si se tienen en cuenta los
siguientes argumentos:

• Los bucles producen proximidad temporal, además de proximidad espacial.

• El uso de datos o parámetros de forma repetitiva produce proximidad


temporal.

• Las llamadas repetidas a subrutinas también son muy frecuentes y


producen proximidad temporal. Esto es muy típico con las funciones o
subrutinas aritméticas, de conversión de códigos, etc.
JERARQUIA DE MEMORIA
TECNICAS DE DIRECCIONAMIENTO
En la práctica, las referencias producidas por la ejecución de un programa
están agrupadas en unas pocas zonas. Tal como se muestra en la figura.
Puede observarse también que, a medida que avanza la ejecución del
programa, van cambiando las zonas referenciadas.
ASIGNACION DE MEMORIA
SIN USO DE MEMORIA VIRTUAL

El espacio asignado a un programa consiste en una zona de memoria principal


contigua, es decir, no se asignan varios trozos disjuntos de memoria a un mismo
programa. Por el contrario, como se verá más adelante, en los sistemas con memoria
virtual no es necesario que los espacios de memoria asignados a los programas sean
contiguos.
MEMORIA VIRTUAL
La memoria virtual utiliza dos niveles de la jerarquía de memoria: la memoria
principal y una
memoria de respaldo (que suele ser el disco, aunque puede ser una memoria
expandida). La gestión de la memoria virtual es automática y la realiza el sistema
operativo con ayuda del hardware de la máquina.
TLB - Buffer de traducción
anticipada
◼ La mayoría de esquemas de memoria virtual utilizan una caché
especial de alta velocidad para las entradas de la tabla de página. Se
le denomina buffer de traducción anticipada ( Translation Lookaside
Buffer (TLB)), también llamado registros asociativos.
◼ Contiene aquellas entradas de la tabla de páginas que han sido
usadas de forma más reciente.
◼ Dada una dirección virtual, el procesador primero examina la TLB.
◼ Si la entrada de la tabla de páginas solicitada está presente (acierto
en TLB), entonces se recupera el número de marco y se construye la
dirección real.
MEMORIA VIRTUAL
Los aspectos principales en los que se basa la memoria virtual son los
siguientes:

• Las direcciones generadas por las instrucciones máquina, tanto para referirse
a datos como a otras instrucciones, están referidas al espacio virtual, es decir,
forman parte del mapa de memoria virtual. En este sentido se suele decir que
el procesador genera direcciones virtuales.

• El mapa virtual asociado a un programa en ejecución esta soportado


físicamente por una zona del disco, denominada de intercambio o swap, y
por una zona de la memoria principal.

• Aunque el programa genera direcciones virtuales, para que éste pueda


ejecutarse, han de residir en memoria principal las instrucciones y los datos
utilizados en cada momento.
MEMORIA VIRTUAL
• Los espacios virtual y físico se dividen en páginas. Se denominan páginas
virtuales a las páginas del espacio virtual, paginas de intercambio a las
páginas residentes en el disco y marcos de página a los espacios en los
que se divide la memoria principal.

• Cada marco de página es capaz de albergar una página virtual cualquiera, sin
ninguna restricción de direccionamiento.

• Existe una unidad hardware, denominada MMU (Memo Management Unit),


que traduce las direcciones virtuales a direcciones de memoria principal.
Aplicando lo visto anteriormente, se puede decir que esta traducción se
restringe a traducir el número de página virtual en el correspondiente número
de marco de página. Esta traducción se la realiza por hardware.
MEMORIA VIRTUAL
• Dado que en cada instante determinado solamente reside en memoria
principal una fracción de las páginas del programa, la traducción no siempre
es posible. Por tanto, la MMU producirá una excepción de fallo de página
cuando ésta no esté en memoria principal.

Los fallos de página son atendidos por el sistema operativo (por software) que
se encarga de realizar la adecuada migración de páginas, para traer la página
requerida por el programa a un marco de página. Se denomina paginación
al proceso de migración necesario para atender los fallos de pagina.

Finalmente, conviene resaltar que el tamaño del espacio virtual suele ser muy
grande. En la actualidad se emplean direcciones de 32, 48 o hasta 64 bits. Dado
que los programas requieren en general mucho menos espacio, una de las
funciones que realiza el sistema operativo es la asignación de espacio virtual
a los programas para su ejecución.
HIPERPAGINACIÓN
Si el número de marcos de página
asignados a un proceso no es suficiente
para almacenar las páginas referenciadas
activamente por el mismo, se producirá
un número elevado de fallos de página. A
esta situación se le denomina
MEMORIA VIRTUAL
El programa no podrá utilizar todo el espacio virtual sino que ha de restringirse a
la zona o zonas que le asigne el sistema operativo. El espacio virtual reservado al
programa A puede estar en una única zona o puede estar dividido en varias
zonas, que se denominan segmentos.

Los lenguajes de programación actuales permiten la asignación dinámica de


memoria. Esto significa que no se conoce a priori la cantidad de memoria que
necesitará el programa para su ejecución. Por tanto, el sistema operativo ha de
ser capaz de aumentar o reducir el espacio asignado a un programa de acuerdo a
las necesidades que vayan surgiendo en su ejecución.
TABLAS DE PAGINAS
La tabla de páginas es una estructura que contiene la información de
dónde residen las páginas de un programa en ejecución. Esta tabla
permite, por tanto, saber si una página esta en memoria principal y, en su
caso, en que marco específico reside.

El número de la página virtual se utiliza como índice para entrar en la tabla. Cada
elemento de la tabla tiene un bit para indicar si la página está en memoria
principal y el número de marco en el que se encuentra la mencionada página o
un valor nulo.
TABLAS DE PAGINAS
EJEMPLO PAGINAS DE 1 NIVEL

Se supone que las página son de 2 KB, por lo que los 11 bits inferiores de
la dirección virtual sirven para especificar el byte dentro de la pagina,
mientras que el resto especifican la página virtual, que en este caso es la
5. Entrando en la posición N 5 de la tabla observamos que la página está
en memoria principal y que esta en el marco numero 6.738.
TABLAS DE PAGINAS
EJEMPLO PAGINAS DE 1 NIVEL

Concatenando el número de marco con los 11 bits inferiores de la dirección


virtual se obtiene la dirección de memoria principal donde reside la
información buscada.
TABLAS DE PAGINAS
PÁGINAS DE 1 NIVEL
El mayor inconveniente de la tabla de un nivel es su falta de flexibilidad.
Toda la memoria virtual asignada ha de ser contigua. y la ampliación de
memoria asignada
solamente puede hacerse final de la existente.

Sin embargo, los programas están compuestos por varios elementos, como
son el
propio programa objeto, la pila y los bloques de datos. Además, tanto la
pila como los bloques de datos han de poder crecer. Por ello, un esquema
de tabla de un nivel obliga a dejar grandes huecos de memoria virtual sin
utilizar , pero que están presentes en la tabla con el consiguiente
desperdicio de espacio.

Por ello se emplean esquemas de tablas de páginas de más de un nivel.


TABLAS DE PAGINAS
PAGINAS DE 2 NIVEL
Con este tipo de tabla, la memoria asignada esta compuesta por una serie
de bloques de memoria virtual, es decir, por unos segmentos.

Cada segmento está formado por una serie contigua de byte. que puede
variar su tamaño, siempre y cuando no choque con otro segmento. La
dirección se divide en tres partes:

La primera identifica el segmento de memoria donde esta la


información que se desea acceder. Con este valor se entra en una
subtabla de segmentos, que contiene un puntero por segmento,
puntero que indica el comienzo de la subtabla de paginas del segmento.
Con la segunda parte de la dirección se entra en la subtabla de páginas
seleccionada.
TABLAS DE PAGINAS
PAGINAS DE 2 NIVEL
TABLAS DE PAGINAS
PÁGINAS DE 2 NIVEL
Obsérvese que se ha añadido a cada subtabla su tamaño. De esta forma
se detectan las llamadas violaciones de memoria, producidas cuando el
programa en ejecución intenta acceder a una dirección que no pertenezca
a los espacios asignados por el sistema operativo.

La ventaja del diseño con varios niveles es que permite una asignación de
memoria más flexible que con un solo nivel, puesto que se pueden asignar
bloques de memoria virtual disjuntos, por lo que pueden crecer de forma a
independiente. Además, la tabla de páginas no tiene espacios vacíos, por
lo que ocupa solamente el espacio imprescindible.

Las computadoras actuales suelen proporcionar tablas de varios niveles,


algunos llegan hasta cuatro, con lo que se consigue una mayor flexibilidad
en la asignación de espacio de memoria.
TABLAS DE PAGINAS
EJEMPLO PAGINAS DE 2 NIVEL
TRADUCCIONES DE MEMORIA
La asignación de memoria y, por tanto, la construcción de la tabla de
páginas es misión del sistema operativo. Sin embargo, es la MMU la que se
encarga de Realizar la traducción de las direcciones. Esta división de
trabajo es necesaria puesto que la traducción de direcciones hay que
hacerla de forma muy rápida para que no afecte negativamente al tiempo
de acceso a la memoria.

La tabla de páginas es una estructura que mantiene el sistema operativo y


que reside en memoria principal (a veces, hay una parte en la propia MMU
y otra en memoria principal). Observe que esto parece un contrasentido,
puesto que para acceder a memoria hay que traducir la dirección virtual, lo
que supone realizar un acceso a memoria por cada nivel que tenga la tabla
de páginas. Según se ha visto, esto suponía un retardo inadmisible en los
accesos a memoria. Para resolver este problema se dota a la MMU de una
memoria muy rápida que permite hacer la traducción para la mayoría de
los casos en una fracción del tiempo que se tarda en acceder a la memoria
principal
VARIOS PROGRAMAS EN EJECUCION
Los sistemas operativos permiten que existan varios programa activos al
tiempo. De estos programas solamente puede haber uno en ejecución en
cada instante, encargándose el sistema operativo de ir poniendo en
ejecución uno detrás de otro de forma ordenada. Para realizar esta labor
necesita:

• Programa tiene su propia tabla de paginas.

• La MMU utiliza esta tabla de páginas para realizar la traducción.

• Procesador cuenta con un registro identificador de espacio de


direccionamiento (RIED). El cual contiene la dirección en la cual
está almacenada la tabla de índices o segmentos del programa.

• Cuando el sistema operativo pone en ejecución un programa ha de


actualizar el valor del RIED para que apunte a la tabla de páginas
adecuada.
VARIOS PROGRAMAS EN EJECUCION
INTERCAMBIO MEMORIA PRINCIPAL Y MEMORIA
VIRTUAL
En un sistema con memoria virtual, un programa en ejecución tiene
asignado un espacio virtual, parte del cual reside en unos marcos de
pagina de la memoria principal.

El objetivo de la políticas de extracción y de reemplazo que utilice el


sistema operativo para hacer la migración de información entre el
intercambio y la memoria principal tiene como objetivo conseguir, con el
mínimo trabajo posible, que e estén en cada momento en memoria
principal las páginas que necesitan los programas en ejecución.

Objetivo Principal: Disminuir el fallo de pagina. Algoritmos se basan en


la trayectoria pasada de la ejecución del mismo para mantener un conjunto
reciente que sea lo más parecido posible a su futuro conjunto de trabajo,
para así minimizar la paginación.
ENTRADA-SALIDA
Los mecanismos de E/S de la computadora tienen por objetivo el
intercambio de información entre los periféricos y la memoria o los registros
del procesador. El sistema operativo debe manejar dos aspectos
importantes:

La concurrencia de la E/S con el procesador


El impacto de la memoria virtual.
DISCO DURO
El disco magnético es, para el sistema operativo, el periférico más importante, puesto que
sirve de espacio de intercambio a la memoria virtual y sirve de almacenamiento
permanente para los programa y los datos, encargándose el sistema operativo de la gestión
de este tipo de dispositivo. Entre las caracteristas mas importantes de este dispositivo se
tienen:

• Organización de la información (Pistas y Sectores)


• Tiempo de acceso. (Tiempo de búsqueda y la latencia)
• Velocidad de transferencia.
OTROS DISPOSITIVOS
Asi también como el Disco duro, existen otros dispositivo como cintas
magnéticas, los DVD, los CD y los controladores de red se denominan
dispositivo de bloques. Ya que transfieren bloques de información para
comunicarse con el procesador.

Otros dispositivos como el teclado se denominan de caracteres. puesto que


la operación básica de acceso es de un carácter. Estos dispositivos se
caracterizan por ser lentos y por no tener un tiempo de acceso
apreciablemente mayor que el tiempo de transferencia de una palabra.
CONCURRENCIA DISPOSITIVOS E/S
Los periféricos son sensiblemente más lentos que el procesador, por
ejemplo, durante el tiempo que se tarda en acceder a una información
almacenada en un disco, un procesador moderno es capaz de ejecutar
varios millones de instrucciones de máquina.

Es, por tanto, muy conveniente que mientras se está esperando a que se
complete una operación de E/S el procesador esté ejecutando un programa
útil y no un bucle de espera.

Nota curiosa:
Una computadora de 300 MHZ puede ejecutar 600 MIPS (600 millones de
instrucciones por segundo). Si se compara esto con el tiempo de acceso de
un disco, que es en el orden de los 15 ms, se puede calcular que en este
tiempo la computadora ha ejecutado unos 9 millones de instrucciones de
maquina.

También podría gustarte