viernes, 30 de agosto de 2013

COMUNICACIÓN ENTRE PROCESOS

Un proceso no es más que una instancia de un programa en ejecución, incluyendo los valores actuales del contador de programa, los registros y las variables

Creación de un proceso
Hay cuatro eventos principales que provocan la creación de procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para creación de procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.

Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está destinado. Sin embargo, nada dura para siempre, ni siquiera los procesos. Tarde o temprano el nuevo proceso terminará, por lo general debido a una de las siguientes condiciones:
1. Salida normal (voluntaria).
2. Salida por error (voluntaria).
3. Error fatal (involuntaria).
4. Eliminado por otro proceso (involuntaria).

Estados de un proceso
En ejecución (en realidad está usando la CPU en ese instante).
Listo (ejecutable; se detuvo temporalmente para dejar que se ejecute otro proceso).
Bloqueado (no puede ejecutarse sino hasta que ocurra cierto evento externo).

Hilos
En los sistemas operativos tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de control. De hecho, ésa es casi la definición de un proceso. Sin embargo, con frecuencia hay situaciones en las que es conveniente tener varios hilos de control en el mismo espacio de direcciones. Tener un tipo de proceso dentro de otro proceso, es lo que comúnmente llamamos hilos.

Dormir y despertar

Una de las más simples primitivas de comunicación entre procesos son sleep (dormir) y wakeup (despertar). Sleep es una llamada al sistema que hace que el proceso que llama se bloquee o desactive, es decir, que se suspenda hasta que otro proceso lo despierte. La llamada wakeup tiene un parámetro, el proceso que se va a despertar o activar. De manera alternativa, tanto sleep como wakeup tienen un parámetro, una dirección de memoria que se utiliza para asociar las llamadas a sleep con las llamadas a wakeup.

Semáforos

E. W. Dijkstra (1965) sugirió el uso de una variable entera para contar el número de señales de despertar, guardadas para un uso futuro. En su propuesta introdujo un nuevo tipo de variable, al cual él le llamó semáforo. Un semáforo podría tener el valor 0, indicando que no se guardaron señales de despertar o algún valor positivo si estuvieran pendientes una o más señales de despertar.

Propuso que se tuvieran dos operaciones, down y up (generalizaciones de sleep y wakeup, respectivamente). La operación down en un semáforo comprueba si el valor es mayor que 0. De ser así, disminuye el valor (es decir, utiliza una señal de despertar almacenada) y sólo continúa. Si el valor es 0, el proceso se pone a dormir sin completar la operación down por el momento.

Mutexes

Cuando no se necesita la habilidad del semáforo de contar, algunas veces se utiliza una versión simplificada, llamada mutex. Los mutexes son buenos sólo para administrar la exclusión mutua para cierto recurso compartido o pieza de código. Se implementan con facilidad y eficiencia, lo cual hace que sean especialmente útiles en paquetes de hilos que se implementan en su totalidad en espacio de usuario.

Un mutex es una variable que puede estar en uno de dos estados: abierto (desbloqueado) o cerrado (bloqueado). En consecuencia, se requiere sólo 1 bit para representarla, pero en la práctica se utiliza con frecuencia un entero, en donde 0 indica que está abierto y todos los demás valores indican que está cerrado. Se utilizan dos procedimientos con los mutexes. Cuando un hilo (o proceso) necesita acceso a una región crítica, llama a mutex_lock. Si el mutex está actualmente abierto (lo que significa que la región crítica está disponible), la llamada tiene éxito y entonces el hilo llamador puede entrar a la región crítica.

Por otro lado, si el mutex ya se encuentra cerrado, el hilo que hizo la llamada se bloquea hasta que el hilo que está en la región crítica termine y llame a mutex_unlock. Si se bloquean varios hilos por el mutex, se selecciona uno de ellos al azar y se permite que adquiera el mutex.

Monitores

Para facilitar la escritura de programas correctos, Brinch Hansen (1973) y Hoare (1974) propusieron una primitiva de sincronización de mayor nivel, conocida como monitor, que es una colección de procedimientos, variables y estructuras de datos que se agrupan en un tipo especial de módulo o paquete. Los procesos pueden llamar a los procedimientos en un monitor cada vez que lo desean, pero no pueden acceder de manera directa a las estructuras de datos internas del monitor desde procedimientos declarados fuera de éste. Los monitores tienen una importante propiedad que los hace útiles para lograr la exclusión mutua: sólo puede haber un proceso activo en un monitor en cualquier instante.

Pasaje (transmisión) de mensajes

Este método de comunicación entre procesos utiliza dos primitivas (send y receive) que, al igual que los semáforos y a diferencia de los monitores, son llamadas al sistema en vez de construcciones del lenguaje.

Barreras

Este mecanismo de sincronización está destinado a los grupos de procesos, en vez de las situaciones de tipo productor-consumidor de dos procesos. Algunas aplicaciones se dividen en fases y tienen la regla de que ningún proceso puede continuar a la siguiente fase sino hasta que todos los procesos estén listos para hacerlo. Para lograr este comportamiento, se coloca una barrera al final de cada fase. Cuando un proceso llega a la barrera, se bloquea hasta que todos los procesos han llegado a ella.




martes, 20 de agosto de 2013

Estructuras de Sistemas Operativos

Kernel: Definición
Parte fundamental de un sistema operativo, que reside en memoria todo el tiempo y que provee los servicios básicos. Es la parte del sistema operativo que está más cerca de la máquina y puede activar el hardware directamente o unirse a otra capa de software que maneja el hardware.

La tarea del Kernel es ejecutar procesos (Software, aplicaciones o programas) y facilitarles a los mismos la tarea de interacción con el Hardware, mediante la comunicación entre procesos y llamadas al sistema (system calls).

Sistemas monolíticos
En este diseño, que hasta ahora se considera como la organización más común, todo el sistema operativo se ejecuta como un solo programa en modo kernel. El sistema operativo se escribe como una colección de procedimientos, enlazados entre sí en un solo programa binario ejecutable extenso.

Esta organización sugiere una estructura básica para el sistema operativo:

1. Un programa principal que invoca el procedimiento de servicio solicitado.
2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio.

Sistemas de capas
Organizar el sistema operativo como una jerarquía de capas, cada una construida encima de la que tiene abajo. El primer sistema construido de esta forma fue el sistema THE, construido en Technische Hogeschool Eindhoven en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sistema simple de procesamiento por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits (los bits eran costosos en aquel entonces).

El sistema tenía seis capas:

El nivel 0 se encargaba de la asignación del procesador, de cambiar entre un proceso y otro cuando ocurrían interrupciones o expiraban los temporizadores. 

La capa 1 se encargaba de la administración de la memoria. 

La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador (es decir, el usuario). 

La capa 3 se encargaba de administrar los dispositivos de E/S.

La capa 4 era en donde se encontraban los programas de usuario. 

El proceso operador del sistema se encontraba en el nivel 5.

Microkernels
La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como procesos de usuario ordinarios, sin poder relativamente.


Modelo cliente-servidor
Una ligera variación de la idea del microkernel es diferenciar dos clases de procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y los clientes, que utilizan estos servicios. Este modelo se conoce como cliente-servidor.

Cada vez hay más sistemas que involucran a los usuarios en sus PCs domésticas como clientes y equipos más grandes que operan en algún otro lado como servidores. De hecho, la mayor parte de la Web opera de esta forma. Una PC envía una petición de una página Web al servidor y la página Web se envía de vuelta. Éste es un uso común del modelo cliente-servidor en una red.


Máquinas virtuales
Este sistema, que en un principio se llamó CP/CMS y posteriormente cambió su nombre a VM/370, estaba basado en una astuta observación: un sistema de tiempo compartido proporciona (1) multiprogramación y (2) una máquina extendida con una interfaz más conveniente que el hardware por sí solo. La esencia de VM/370 es separar por completo estas dos funciones.

El corazón del sistema, que se conoce como monitor de máquina virtual, se ejecuta en el hardware solamente y realiza la multiprogramación, proporcionando no una, sino varias máquinas virtuales a la siguiente capa hacia arriba. Como cada máquina virtual es idéntica al verdadero hardware, cada una puede ejecutar cualquier sistema operativo que se ejecute directamente sólo en el hardware. 

Administracion de Procesos en Linux Ubuntu



Procesos en Linux Ubuntu

Listar y detener procesos por consola

6 formas de matar procesos en Linux Ubuntu

Ubuntu.org

domingo, 11 de agosto de 2013

Los Sistemas Operativos más populares de las Pc's

LOS SISTEMAS OPERATIVOS MÁS POPULARES DE LAS PC

Ø  MS-DOS: el significado de estas letras es el de Microsoft disk Operating System. Microsoft es el nombre de la compañía que diseño este sistema operativo, e IBM la compañía que lo hizo estándar al adoptarlo en sus microordenadores. Este sistema operativo emplea discos flexibles con una organización determinada los nombres de los ficheros en MSDOS, para los que se emplean tanto letras como números, se componen de dos partes: el nombre del fichero y la extensión, estando ambos datos separados por puntos.
Ø  UNIX: es un sistema operativo multiusuario que incorpora multitarea. El sistema operativo UNIX tiene diversas  variantes y se considera potente. Esta escrito en lenguaje C. El UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de organizar archivos y permite la protección de archivos.
Ø  NETWARE DE NOVELL: este sistema se diseño con la finalidad de que lo usarán grandes compañías que deseaban sustituir las enormes maquinas por una red de PCs que resultara más económica y fácil de manejar.
Ø  WINDOWS:

Windows 3.x: Funcionaba sobre DOS. En la versión 3.11 se incluyó el trabajo en redes con grupos de trabajo.
Windows NT 3.1 - 4: Sistema Operativo nuevo con problemas de compatibilidad de hardware. Versiones para servidores y estaciones de trabajo. Fueron las primeras versiones para trabajo cliente –servidor en empresas con gran volumen de equipos y distribución geográfica dispersa.
Windows 95: Comienza a utilizar arquitectura de 32 bits. Incluye Plug&Play. Facilita la conexión a Internet.
Windows 98: Nuevos controladores hardware. Fat32. Soporte para DVD, USB. Integra Internet Explorer. Millenium: Proyecto rápido antes de XP. Proporciona poca estabilidad.
Windows 2000: Evolución de NT mejorando servicios de red y Plug & Play. Versión para servidores y estaciones de trabajo. Fat32, NTFS, DFS, etc.
Windows XP: Unión de Windows NT/2000 y 9x. Versiones Home y Profesional. Núcleo de NT. Interfaz nueva. Multitarea mejorada. Redes inalámbricas.  
Windows 2003 Server: Sucesor de Windows 2000 Server. El más estable de las versiones de servidor. Interfaz estilo XP. Nuevos servicios orientados a seguridad en redes e Internet.
Windows Vista: Versión que aparece en 2007. Las diferentes versiones que se pueden adquirir son tres para el consumidor, Vista Home Basic, Vista Home Premium y Ultimate Edition y dos versiones para las empresas, Vista Business y Vista Enterprise. Tiene la interfaz gráfica totalmente rediseñada, incluyendo gadgets en el escritorio, Internet Explorer 7.
Windows 7 y 8: Versión que aparece en 2009 y 2013. Sistema operativo muy mejorado en toda su funcionalidad.
Otro tipo de Sistemas Operativos, también pertenecientes a la empresa Microsoft y basados en otros dispositivos electrónicos de telecomunicación serían:
§  Windows CE: Sistema operativo para dispositivos móviles (PDA´s).
§  Windows Mobile: Basado en el anterior. Incluido en PDA´s, SmartPhones y Media Center portátil. Última versión 2005.
Ø  Symbian OS: es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Ericsson, Psion, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION. El objetivo de Symbian fue crear un sistema operativo para terminales móviles que pudiera competir con el de Palm o el Windows Mobile de Microsoft y ahora Android de Google Inc., iOS de Apple Inc. y Blackberry OS.
Ø  MCP: Antiguo sistema operativo desarrollado por Burroughs/Unisys, originalmente escrito en ESPOL (Executive Systems Programming Language), que fue a su vez una extensión del Burroughs Extended ALGOL. Luego en los 70 fue pasado a NEWP, una forma más estructurada y más segura de ESPOL. En 1961, MCP fue el primer sistema operativo escrito exclusivamente en lenguaje de alto nivel. También fue el primer sistema operativo en el cual el código fuente pudo ser estudiado y mejorado por sus clientes (gracias a la legibilidad del código de alto nivel). Esto permitía a sus clientes crear sus propias extensiones del sistema operativo; muchas de estas extensiones se incorporaron luego al sistema para que estén disponibles para todos. De todas maneras, el código fuente está registrado (no es libre). MCP fue el primer sistema operativo en poder gestionar múltiples procesadores e introdujo la primera implementación comercial de memoria virtual. Por defecto utiliza una interfaz de texto, y actualmente se encuentra en la versión 11 (abril de 2006).

Microsoft es proveedora del 50 por ciento de las aplicaciones de software que se usan en el mundo, desde las hojas de cálculo hasta bases de datos, pasando por los procesadores de texto.

Tradicionalmente, se han distinguido las siguientes líneas de productos:
  • Sistemas operativos: MS-DOS, Windows.
  • Aplicaciones para la oficina (ofimática): MS Works, MS Office (Word, Excel, Access, Powerpoint, InfoPath, FrontPage, Outlook y Publisher)
  • Compiladores: MS Visual C++, MS Visual Basic
  • Herramientas de desarrollo: .NET
  • Internet: MS Internet Explorer o MS Internet Information Server. MyIE2 es un navegador basado en el motor de Microsoft Internet Explorer pero no es de Microsoft.

Alguna de las tácticas empresariales más frecuentes:
  • Comprar pequeños programas o servicios de otras empresas, e integrarlos en sus productos con otro nombre: MS-DOS, scandisk, defrag, Hotmail...
  • Integrar reproductores o visualizadores propios en el sistema operativo, convirtiendo así los formatos de los que es propietaria: Windows Media Player, Internet Explorer, Windows Messenger.

Principales fuentes de ingresos son: Venta de software y hardware, Servicio técnico y Cursos acreditados.


Introducción a los Sistemas Operativos

DEFINICIÓN DE SISTEMA OPERATIVO

  • Un S.O. es un programa que actúa como enlace entre el usuario y el hardware de un computador.
  • El propósito de un S.O. es proporcionar un entorno en el cual el usuario pueda ejecutar programas.
  • Un sistema operativo es un conjunto de programas que gestionan de una manera eficiente un sistema de información para proporcionar al usuario un interface de sencillo manejo.
Podemos decir que:
Un sistema operativo (SO) es un conjunto de programas destinados a permitir la comunicación del usuario con una computadora gestionar sus recursos de manera eficiente. Éste comienza a trabajar cuando se enciende la computadora, y gestiona el hardware de la máquina desde los niveles más básicos.

¿CÓMO FUNCIONA UN SISTEMA OPERATIVO?

Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar.

FUNCIONES DE LOS SISTEMAS OPERATIVOS

ADMINISTRACION DE TRABAJOS: cuando existen varios programas en espera de ser procesados, el sistema operativo debe decidir el orden de procesamiento de ellos, así como asignar los recursos necesarios para su proceso.

ADMINISTRACION DE RECURSOS: mediante está función el sistema operativo está en capacidad de distribuir en forma adecuada y en el momento oportuno los diferentes recursos (memoria, dispositivos, etc.,...) entre los diversos programas que se encuentran en proceso, para esto, lleva un registro que le permite conocer que recursos están disponibles y cuales están siendo utilizados, por cuanto tiempo y por quien, entre otros aspectos.

CONTROL DE OPERACIONES DE ENTRADA Y SALIDA: mediante esta actividad el sistema operativo decide que proceso hará uso del recurso, durante cuánto tiempo y en qué momento.

ADMINISTRACION DE LA MEMORIA: supervisa que áreas de memoria están en uso y cual están libre, determina cuanta memoria asignará a un proceso y en qué momento, además libera la memoria cuando ya no es requerida para el proceso.

RECUPERACION DE ERRORES: el sistema operativo contiene rutinas que intentan evitar perder el control de una tarea cuando se suscitan errores en la trasferencia de información hacia y desde los dispositivos de entrada / salida.

CATEGORÍA DE LOS SISTEMAS OPERATIVOS

En función del número de usuarios simultáneos.

§  Monousuario: sólo permite ejecutar los programas de un usuario al mismo tiempo.
§  Multiusuario: permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos del ordenador. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

En función del número de procesos simultáneos.

§  Monoprogramación o Monotarea: puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización o interrupción.
§  Multiprogramación o Multitarea: es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternativa a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente. 

En función del número de procesadores en uso simultáneo.

§  Monoproceso: cuando se dispone de un único procesador.
§  Multiproceso: consiste en hacer funcionar varios procesadores en forma paralela para obtener un poder de cálculo mayor que el obtenido al usar un procesador de alta tecnología o al aumentar la disponibilidad del sistema (en el caso de fallas del procesador).

En función de los requerimientos temporales.

§  Los sistemas de tiempo real: se utilizan principalmente en la industria y son sistemas diseñados para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener capacidad para operar en forma fiable según limitaciones de tiempo específicas; Muchos SO de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías y en el ramo automovilístico. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes, Telecomunicaciones, Control de edificios. Estos son algunos ejemplos de sistemas operativos de tiempo real: OS-9, RTLinux (RealTime Linux), QNX, VxWorks, entre otros.
§  Centralizado: permite utilizar los recursos de un solo ordenador.
§  Distribuido: permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una computadora al mismo tiempo.
§  Sistemas Fijos: son sistemas operativos diseñados para funcionar en equipos pequeños, como los PDA (asistentes personales digitales) o los dispositivos electrónicos autónomos (sondas espaciales, robots, vehículos con ordenador, etcétera) con autonomía reducida. En consecuencia, una característica esencial de los sistemas fijos es su avanzada administración de energía y su capacidad de funcionar con recursos limitados. Los principales sistemas fijos de "uso general" para PDA son los siguientes: PalmOS, Windows CE / Windows Mobile / Window Smartphone.


miércoles, 7 de agosto de 2013

Sistemas Operativos Modernos


Libro en formato pdf Descargar

Emisora de Radio