PROCESOS

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es: Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos de los sistemas asociados.

–          Un sistema operativo ejecuta una variedad de programas:

  • Sistemas por lotes. Trabajos.
  • Sistemas de tiempo compartido. Programas de usuario o tareas.

–          Definición: un programa en ejecución con el entorno asociado/unidad de procesamiento gestionada por el SO.

–          Un proceso Incluye:

  • Un contador de programa.
  • Pila.
  • Sección de datos, código.

–          Programa: ente pasivo.

–          Proceso: ente activo.

TRAZAS DE LOS PROCESOS

Listado de la secuencia de instrucciones que se ejecutan para un proceso.

MODELO SIMPLIFICADO DE UN PROCESO

–          Un proceso puede estar en dos estados:

  • Corriendo.
  • No corriendo.

ESTADO DE LOS PROCESOS:

En la medida que se ejecuta un proceso su estado se modifica.

–          Nuevo: El proceso se está creando.

–          Corriendo: Las instrucciones están ejecutándose.

–          Esperando/Bloqueado: El proceso está a la espera de la ocurrencia de algún evento.

–          Listo: El proceso está esperando a ser asignado al procesador.

–          Terminado: El proceso ha terminado su ejecución.

OTRO DIAGRAMA DE TRANSICIÓN DE ESTADO DE LOS PROCESOS, MÁS COMPLEJO QUE LOS ANTERIORES.

DIAGRAMA DE TRANSICIÓN DE ESTADO DE LOS PROCESOS EN UNIX V

OPERACIONES SOBRE LOS PROCESOS

–          Crear: nombre, BCP (Bloque de control de procesos), Tabla (estructuras de datos del proceso), recursos, prioridad, Jerárquico/ no jerárquico (Generador o no generador de nuevos procesos).

–          Destruir: eliminarlo del sistema.

  • Eliminación calmada.
  • Eliminación desaforada.

–          Suspender: paraliza.

  • Falla.
  • Pausa.
  • Congestión.

–          Retardar: duérmase por un tiempo. Por ejemplo 2min.

–          Abortar: Terminar.

–          Leer atributos.

–          Reanudar.

–          Cambiar Prioridad.

–          Bloquear E/S: espera propia del proceso

–          Despertar / Desbloqueo.

–          Despachar: transición que pasa de listo a ser atendido por el procesador.

–          Temporizar: Ejecución programada. Ejemplo Inicia en 2min.

Estructura general de las tablas de control del SO

Bloque de control de procesos (PCB)

Descriptor del proceso para SO en la tabla de procesos, información asociada con cada proceso.

–          Identificación del proceso (PID).

–          Identificación del proceso, Afinidad.

–          Estado del proceso (flags).

–          Identificación de usuario, grupo.

–          Contador de programa.

–          Apuntador a proceso padre.

–          Apuntadores a procesos hijos.

–          Registros visibles de la CPU (cisc 8-32 risc >100)

–          Información de planificación de la CPU (prioridad).

–          Información de Admon de la memoria (datos, instrucciones).

–          Información contable.

–          Información de estado E/S.

–          Localiza, identificador, estado padre, hijos, prioridad, memoria, estadísticas, recursos en uso, privilegios, hora inicio.

La CPU cambia de proceso a proceso

–          Cuando la CPU cambia a otro proceso, el sistema debe guardar el estado del proceso anterior y carga el estado guardado del nuevo proceso.

–          La conmutación de contexto es trabajo extra, el sistema no realiza trabajo útil mientras conmuta, depende en gran medida del apoyo del hw.

–          Cuando un proceso está ejecutando su estado reside en los registros del computador.

–          Cuando un proceso no se está ejecutando, su estado reside en el BCP.

Planificadores

–          El planificador de corto plazo o planificador de CPU selecciona que proceso debe ser ejecutado enseguida y se le asigna la CPU.

–          Planificador de mediano plazo: intermedio.

–          El planificado de largo plazo o planificado de trabajos: selecciona que procesos debe ser traídos a la cola de listos, es solicitado con poca frecuencia (segs, minutos) => puede ser lento.

–          El planificador de largo plazo controla el grado de multiprogramación.

–          Los procesos pueden ser descritos como:

  • Procesos limitados por E/S. Consumen más tiempo realizando operaciones de E/S como cálculos, que causan muchas ráfagas cortas a la CPU.
  • Procesos limitados por CPU. Consumen más tiempo realizando cálculos, emplean pocas ráfagas fuertes a la CPU.

Representación de la planificación de procesos

Anuncios

Lenguajes de Alto Nivel

Jerarquía de diseño de SO por Browm/Denning

 

Implementación del sistema

–          Los sistemas operativos tradicionalmente se han escrito en ensamblador, ahora pueden ser escritos en lenguajes de alto nivel.

–          El código escrito en alto nivel:

  • Puede ser escrito más rápido.
  • Es más compacto.
  • Es fácil de entender y depurar.

–          Un sistema es más fácil de ser portable si está escrito en un lenguaje de alto nivel.

–          Algunos lenguajes de alto nivel usados para escribir sistemas operativos:  C(Unix, ..)

 

GENERACIÓN SISTEMA (SYSGEN)

–          Lo sistemas operativos se diseñan para correr en cualquier clase de maquinas; el sistema debe configurarse para cada computador especifico.

–          El programa sysgen obtiene información relacionada con la configuración especifica del hardware del sistema.

–          Booting arrancar un computador al cargar su kernel.

–          Bootstrap program – codigo almacenado en la ROM que es capaz de localizar el kernel, cargarlo en la memoria e iniciar su ejecución.

TIPOS SISTEMAS OPERATIVOS DE ACUERDO AL KERNEL

TIPOS SISTEMAS OPERATIVOS DE ACUERDO AL KERNEL

Kernel: En informática, un núcleo o kernel (de la raíz germánica Kern, núcleo, hueso) es un software que constituye la parte más importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

Tipos:

–          Macrokernel/monokernel

–          Microkernel

–          Nanokernel

–          Exokernel

ARQUITECTURA MICROKERNEL

User MODE
File System
Interprocess Communication
I/O and Device Management
Virtual Memory
Primitive Process Management
HARDWARE
USER MODE
Micro Kernel
HARDWARE

 

 

 

 

 

–          Arquitectura de Sistemas operativos micro kernel.

  • Proporciona solo un pequeño número de servicios.
    • Intenta tener un kernel pequeño y escalable.
  • Alto grado de modularidad.
    • Extensible, portable y escalable.
  • Se incrementa el nivel de comunicación entre módulos.
    • Puede degradar el rendimiento del sistema

 

ARQUITECTURA DE UN SO MICROKERNEL

–          Espacio Usuario:

–          Aplicaciones:

  • Interface de llamada del sistema:
    • Sistema de archivos.
    • Planificador de procesos.
    • Admón. Dispositivos.

–          Espacio Kernel:

  • IPC:
    • Admón. De memoria.
    • Admón. Sincronización.

BENEFICIOS DE UNA ORGANIZACIÓN MICRONÚCLEO

–          Interfaces uniformes en las peticiones realizadas por un proceso.

  • Los procesos no necesitan diferenciar entre servicios a nivel de núcleo y a nivel de usuario.
  • Todos los servicios se proporcionan a través de paso de mensajes.

–          Extensibilidad.

  • Permite agregar nuevos servicios.

–          Flexibilidad.

  • Se pueden añadir nuevas características al sistema operativo.
  • Se pueden eliminar las características existentes.

–          Portabilidad.

  • Los cambios necesarios para transferir el sistema a un nuevo procesador se cambian en el micro núcleo, no en otros servicios.

–          Fiabilidad.

  • Diseño modular.
  • Un micro núcleo pequeño se puede verificar de forma rigurosa.

–          Soporte de sistemas distribuidos.

  • Los mensajes se mandan sin saber en qué maquina reside el servicio pedido.

–          Sistema operativo orientado a objetos.

  • Los componentes son objetos con interfaces claramente definidas que pueden ser interconectadas para la realización de software.

EXOKERNEL

–          Un sistema operativo interpone entre las aplicaciones y el hw.

–          Elimina el concepto de abstracción sobre la cual corren las aplicaciones.

–          Se asegura de multiplexar el hw desnudo: a través de primitivas de hardware, librería a nivel de aplicaciones y servidores.

–          Ejemplo: XOK con exos (librería tipo unix) de MIT, Aegis, Nemesis (cambridge).

–          El servidor Cheetah se construye sobre XOK.

–          Es esencialmente la extensión de la filosofía de la arquitectura Risc en CPU al nivel del sistema operativo.

 

Objetivos de diseño del sistema

–          Objetivos de los usuarios: que el sistema operativo sea adecuado para su uso fácil de aprender, confiable, seguro, y rápido.

–          Objetivos del sistema: El sistema operativo debe ser fácil de diseñar, implementar y mantener, de la misma forma que sea flexible, confiable, libre de errores y eficiente.

ESTRUCTURA INTERNA DEL ENTORNO DE COMÚN DE EJECUCIÓN PARA LENGUAJES

ESTRUCTURA INTERNA DEL ENTORNO DE COMÚN DE EJECUCIÓN PARA LENGUAJES

Entorno común de ejecución para lenguajes (CLR)

–          Soporte a las librerías de clases Base.

–          Manejo de hilos.

–          Interacción con COM.

–          Verificador de tipos.

–          Controlador de excepciones.

–          Motor de seguridad.

–          Motor de depuración.

–          Compilador de MSIL a código nativo (JIT).

–          Controlador de código.

–          Recolector de basura (GC).

–          Cargador de clases.

–          Sistema operativo.

CLR (common Language Runtime)

–          Multiprograma.

  • El modelo es abierto, luego es posible la creación de CLR para cualquier plataforma.

–          Multilenguaje.

  • Existen traductores para C#, J#, visual c++, visual Basic….

–          Recolectod de basura muy efectivo.

  • En C# no existen destructores.

–          Liberación determinista mediante el uso de la instrucción Using.

  • Los paquetes se tienen en memoria solo cuando se usan.

AMBIENTES DE LENGUAJES DE ALTO NIVEL

AMBIENTES DE LENGUAJES DE ALTO NIVEL

  1. Ambiente convencional donde se distribuye el código objeto de la plataforma tradicional. No ha portabilidad, tanto en el mismo ambiente en el cual se vaya a correr, como x86 o x64.

HLL program -> complier front end -> Intermediate code -> compiler back end-> Objetc Code -> DISTRIBUTION -> Loader-> Memory Image.

 

  1. Ambiente de VM donde una VM dependiente de plataforma ejecuta código portable intermedio. El código corre sobre la máquina virtual.

HLL program->complier->Portable Code->DISTRIBUTION ->VM Loader->Virtual Memory Image ->VM Interpreter/complier-> Host Instructions

Maquinas Virtuales

MÁQUINAS VIRTUALES

–          Concepto inventado por IBM como método de tiempo compartido para los mainframes(VM/370).

–          Una máquina virtual es una copia completamente protegida y aislada del hw de la maquina subyacente. IBM.

–          Una máquina virtual aprovecha en forma lógica el enfoque de niveles. Considera el hw y el kernel  como si fueran los dos el hw.

–          Una máquina virtual proporciona una interface idéntica al hw desnudo subyacente.

–          El sistema operativo  crea una ilusión a los múltiples procesos de cada uno esta ejecutándose sobre su propio procesador con si propia memoria (virtual).

–          “Cualquier problema en la ciencia computacional puede ser resuleto con otro nivel de indirección”. David Wheeler.

ARQUITECTURA VMWARE

” En los años venideros, las máquinas virtuales se moverán más allá de sus capacidades simples de aprovisionamiento y más allá del cuarto de la máquina para proveer una serie de conjunto de bloques fundamentales para la movilidad, seguridad y utilización sobre las computadoras de escritorio. ”

VMware ESX

Con VMware ESX la consolidación de servidores tipo Scale-Up cobra sentido en entornos INTEL/AMD gracias a la virtualización del hardware, se consigue independizar cada una de las máquinas virtuales del resto, permitiendo convivir en una misma máquina física varios sistemas operativos y distintas versiones de un mismo sistema operativo. A continuación veremos cómo es posible.

VMware es una empresa fabricante de Software especializada en productos basados en tecnología de virtualización de servidores. Distribuye tres productos: VMware Workstation; VMware Virtual Server y VMware Virtual Infraestructure (ESX Server).

El ESX Server, es en sí mismo un sistema operativo montado directamente sobre el hardware, con lo que el rendimiento y gestión de recursos está mucho más optimizado. Adicionalmente, existe un acuerdo entre IBM y VMware para desarrollo conjunto de ESX, asegurando el perfecto comportamiento de cualquier componente hardware de un servidor xSeries con VMware ESX (siempre y cuando dicho servidor esté certificado).

Para-virtualización

–          Presenta al invitado un sistema similar, pero no idéntico al hw.

–          El invitado debe modificarse para correr hw  para virtualizarlo.

–          El invitado pide ser un SO o en el caso de Solaris 10 aplicaciones corriendo en contenedores.

Arquitectura de un computado

Las capas claves de implementación se comunican verticalmente a través del conjunto de instrucciones de la arquitectura. Falta.

Monitores de máquina virtual

–          Una componente clave de las VM son los monitores de máquina virtual (VMM) que proporciona una capa entre los ambientes de software y el hw, que es programable, transparente al software que tiene encima y hace eficiente el hw sobre el que está montando.

–          Procesos y las VM:

  • En un proceso de VM, el software de virtualización traduce un conjunto de instrucciones del SO y de nivel de usuario convirtiendo una plataforma en otra.
  • En un sistema de VM, el software de virtualización traduce la ISA (arquitectura del conjunto de instrucciones)  utilizada por una plataforma de hw en otra.

Taxonomía de VM

Virtualizar procesos trabaja bajo software, o sistemas que trabajan bajo hardware.

Las VM pueden ser de procesos o de sistemas, con la misma o diferente arquitectura de conjunto de instrucciones.

CDVM: transmeta (Crusoe), Os400

Ventajas y desventajas de las máquinas virtuales

–          Verdaderas facilitadoras de todo.

–          El concepto de máquina virtual proporciona completa protección de los recursos del sistema, ya que cada máquina virtual está aislada de las otras máquinas virtuales. El aislamiento, no permite el compartir en forma directa los recursos.

–          Un sistema de máquina virtual es un perfecto vehículo para la investigación y el desarrollo de los sistemas operativos, el desarrollo del sistema se hace sobre la máquina virtual, a cambio de realizarlo sobre la maquina física de tal manera que no afecta la operación normal del sistema.

–          El concepto de máquina virtual es difícil de implementar debido al esfuerzo requerido para proporcionar un duplicado exacto de la maquina subyacente.

Administración de Procesos

ADMINISTRACIÓN DE PROCESOS

Un proceso es un programa en ejecución. Para que un proceso logre sus objetivos requiere algunos recursos como tiempo de CPU, memoria, archivos, y dispositivos de entrada y salida.

El sistema operativo es responsable de las siguientes actividades relacionadas con la admón. de procesos:

–          Creación y eliminación.

–          Suspensión y reanudación.

Administración de memoria principal:

La memoria es un arreglo de palabras y bytes, cada uno con su propia dirección. Es un repositorio de acceso rápido de los datos compartidos por la CPU y los dispositivos de E/S.

La memoria principal es un dispositivo de almacenamiento volátil.

Administración de la memoria secundaria:

Dado que la memoria principal es volátil y muy pequeña para acomodar todos los datos y programas permanentemente, el sistema de computación debe proveer almacenamiento secundario para respaldar la memoria principal.

La mayoría de los computadores modernos utilizan discos como medio principal de almacenamiento en línea, tanto para programas como para datos.

El sistema operativo es responsable por las siguientes tareas relaciones con la admón. secundaria:

–          Admón. del espacio libre.

–          Asignación de espacio.

–          Planificación del disco.

Administración de archivos:

Un archivo es una colección de información relacionada definida por su creador. En general los archivos representa programas (tanto en formato fuente como objeto) y datos.

El sistema operativo es responsable por las siguientes actividades en relación con la administración de archivos:

–          Creación y borrado de archivos.

–          Creación y borrado de directorios.

–          Soporte de primitivas para manipular los archivos y directorios.

–          Mapeo de archivos en almacenamiento secundario.

–          Respaldo de archivos en medios de almacenamiento estables (no volátiles).

 

Interfaz de usuario:

–          Funciones:

  • Manipulación de archivos y directorios.
  • Herramientas de desarrollo de aplicaciones.
  • Comunicación con otros sistemas de información.
  • Información de estado.
  • Configuración de la propia interfaz y entorno.
  • Intercambio de datos entre aplicaciones.
  • Control de acceso.
  • Sistema de ayuda interactivo.

–          Tipos:

  • Interfaces alfanuméricas (intérpretes de mandatos)
  • Interfaces gráficos.

Sistemas interprete de comandos:

–          Muchos comando se dan al sistema operativo por instrucciones de control que tienen que ver con:

  • Admón. y creación de procesos.
  • Manejo de E/S.
  • Admón. de memoria secundaria.
  • Admón. de memoria principal.
  • Acceso al sistema de archivos.
  • Protección.
  • Redes.

–          El programa que lee e interpreta las instrucciones de control tiene diferentes nombres:

  • Interprete de tarjetas de control.
  • Interprete de líneas de comando.
  • Shell.

–          Su función es obtener y ejecutar la próxima instrucción de comandos.