miércoles, 28 de septiembre de 2011

POSIX (Portable Operating System Interface)

¿Qué es?

Son una familia de estándares de llamadas al sistema operativo definidos por el IEEE y especificados formalmente en el IEEE 1003. Persiguen generalizar las interfaces de los sistemas operativos para que una misma aplicación pueda ejecutarse en distintas plataformas. Estos estándares surgieron de un proyecto de normalización de las API y describen un conjunto de interfaces de aplicación adaptables a una gran variedad de implementaciones de sistemas operativos.


Cuando el sistema operativo crea un proceso, el proceso en sí es un hilo de ejecución. Sin embargo se puede escribir un programa para crear muchos hilos que se ejecutan en el mismo espacio de memoria en forma paralela. 

Los hilos POSIX son los más recomendables para emplear dado que son portables y tienen mejor desempeño que los procesos ligeros de UNIX.

La portabilidad de código permite que se pueda compilar y ejecutar el programa sobre otra plataforma que soporte hilos POSIX. De tal manera que el programador paraleliza su código insertando funciones de hilos POSIX, lo compila y lo ejecuta en una plataforma de un procesador o de múltiples procesadores (Por ej. en IRIX) y el mismo código lo puede compilar y ejecutar en otra plataforma (Por ej. en Solaris).

Con hilos POSIX se pueden paralelizar:
Llamadas a subrutinas o funciones. 

E/S en C.
Algunas dependencias de datos usando herramientas de sincronización.


Los hilos POSIX no pueden paralelizar:
Ciclos individuales dentro de un programa (deben ser reescritos como funciones).
Pipas gráficas.

Ejemplo de uso de hilos POSIX:

/* hola.c
Programa que que genera 2 hilos POXIS para
imprimir a pantalla "hola mundo".
compilar:
cc hola.c -o hola -lpthread
*/
#include <pthread.h>
#include <stdio.h>
void* imprime_mensaje( void *ptr );
main()
{
pthread_t hilo1, hilo2;
char *mensaje1 = "hola";
char *mensaje2 = "mundo";
/* se generan 2 hilos que se ejecutaran en paralelo con el padre */
pthread_create(&hilo1, NULL, imprime_mensaje, (void*) mensaje1);
/* aquí el hilo padre puede estar haciendo otra cosa en paralelo con
los 2 hilos POSIX hijos */
/* por ejemplo: */
printf("A lo mejor esto se imprime primero... \n");
pthread_create(&hilo2, NULL, imprime_mensaje, (void*) mensaje2);
sleep(1);
exit(0);
}
void* imprime_mensaje( void *ptr )
{
char *mensaje;
mensaje = (char *) ptr;
printf("%s \n", mensaje);
pthread_exit(0);


}

jueves, 22 de septiembre de 2011

Eleccion de Programa



Que onda Profe me apunto para el programa 8

Pid Arbol Practica 04


Este es el arbol




Programa Arbol PID 03



En esto se marca el arbol

Programa Pid 02



¿Porque se repiten los mensajes?

Por que un proceso puede tener mas de un subproceso.

¿Que observas?

Los proceso del pid se observa un arbol del inicio del proceso padre dando lugar a subprocesos derivados del padre siendo un pid hijo.

 ¿Porque?

Los procesos son como arboles, debido a que las operaciones de un proceso varian en las tareas a realizar. Esto es como iniciar un procesador de texto, se abre la aplicacion es el proceso y lo que realizemos en el mismo serian los subprocesos.

lunes, 19 de septiembre de 2011

Programa PID

Practica de SO 

Codigo



Ejecucion


¿Porquè aparecen mensajes repetidos?

La funcion Fork realiza duplicaciones o clonasiones de los procesos en forma aleatoria, siendo la condicion del programa se ejecuta varias ocasiones.

¿Què observas?

El pid padre cuando entra en proceso, tiene que realizar otro proceso denominado pid hijo que es un subproceso del pid padre.

¿Porqué?

Debido a que los procesos grandes requieren de diversas tareas, estas tienen que ramificarse o sacar subprocesos para complememtar las acciones de dicho proceso.

LIBRERIAS

 <sys/types.h> 
Incluye definiciones para al menos los siguientes tipos: 

id_t  ->  Se utiliza como identificador general, se puede utilizar para contener al menos un pid_t, uid_t o gid_t una. 
ino_t  ->  Utilizados para el archivo de números de serie. 
key_t  ->  Se utiliza para la comunicación. 
mode_t  ->  Se utiliza para algunos de los atributos de archivo. 
nlink_t  ->  Se utiliza para el conteo de enlaces. 
off_t  ->  Se utiliza para tamaños de archivo. 
pid_t  ->  Se utiliza para los identificadores de proceso y los ID de proceso del grupo. 

<sys/wait.h> 
Define las siguientes constantes simbólicas para su uso con waitpid () :
El tipo idtype_t se define como un tipo de enumeración cuyos valores posibles son al menos lo siguiente:
P_ALL
P_PID
P_PGID
 
<unistd.h> 
Define varios tipos y constantes simbólicas, y declara funciones diversas

FUNCIONESFORK: La forma en que un proceso arranca a otro es mediante una llamada al sistema fork o clone.
-La función fork de la librería libc coloca los parámetros de la llamada en los registros del procesador y se ejecuta la instrucción INT 0x80.
-Se conmuta a modo núcleo y, mediante las tablas IDT y GDT, se llamaa la función sys_call.
-La función sys_call busca en la sys_call_table la dirección de la
llamada al sistema sys_fork

SRANDOM : Funcion en c estadar llamada random(). Si quieres generar un numero aleatorio deberas utilizar srand() y rand(). Para hacer uso de ellas debes incluir stdlib.h

SLEEP: retraso en milisegundos / retraso en segundos. 
 
WAIT: Obligará a un proceso padre que esperar a que un proceso hijo para detener o poner fin a wait () devuelve el pid del hijo o -1 para un error.. El estado de salida del niño es devuelto.

lunes, 12 de septiembre de 2011

Sistema Operativo Android y Chrome

Android

Android es un sistema operativo basado en GNU/Linux diseñado originalmente para dispositivos móviles, tales como teléfonos inteligentes, pero que posteriormente se expandió su desarrollo para soportar otros dispositivos tales como tablets, reproductores MP3, netbooks, PCs, televisores, lectores de e-books e incluso, se han llegado a ver en el CES, microondas y lavadoras.



El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handset Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos móviles. Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto. Actualmente Android posee aproximadamente el 32,9% de cuota de mercado a escala mundial de los teléfonos inteligentes, por delante de Symbian OS que posee una cuota aproximada del 30,6%. En tercer lugar se sitúa iOS con una cuota de mercado del 16%.

 
La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++.


Características y especificaciones actuales:


Diseño de dispositivo

La plataforma es adaptable a pantallas más grandes, VGA, biblioteca de gráficos 2D, biblioteca de gráficos 3D basada en las especificaciones de la OpenGL ES 2.0 y diseño de teléfonos tradicionales.

Almacenamiento

SQLite, una base de datos liviana, la cual es usada para propósitos de almacenamiento de datos.

Conectividad

Android soporta las siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE y WiMAX.

Mensajería

SMS y MMS son formas de mensajería, incluyendo mensajería de texto y ahora la Android Cloud to Device Messaging Framework (C2DM) es parte del servicio de Push Messaging de Android.

Navegador web

El navegador web incluido en Android está basado en el motor de renderizado de código abierto WebKit, emparejado con el motor JavaScript V8 de Google Chrome. El navegador obtiene una puntuación de 93/100 en el test Acid3.

Soporte de Java

Aunque las aplicaciones son escritas en Java, no hay una Máquina Virtual de Java en la plataforma. El código Java no es ejecutado. El código Java se compila en el ejecutable Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es una máquina virtual especializada diseñada específicamente para Android y optimizada para dipositivos móviles que funcionan con batería y que tienen memoria y procesador limitados. El soporte para J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP Runner.

Soporte multimedia

Android soporta los siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP.

Soporte para streaming

Streaming RTP/RTSP (3GPP PSS, ISMA), descarga progresiva de HTML (HTML5 <video> tag). Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a Android. Adobe Flash HTTP Dynamic Streaming estará disponible mediante una actualización de Adobe Flash Player.

Soporte para hardware adicional

Android soporta cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, termómetro, aceleración 2D y 3D.

Entorno de desarrollo

Incluye un emulador de dispositivos, herramientas para depuración de memoria y análisis del rendimiento del software. El entorno de desarrollo integrado es Eclipse (actualmente 3.4 o 3.5) usando el plugin de Herramientas de Desarrollo de Android.

Market

El Android Market es un catálogo de aplicaciones gratuitas o de pago en el que pueden ser descargadas e instaladas en dispositivos Android sin la necesidad de un PC.

Multi-táctil

Android tiene soporte nativo para pantallas multi-táctiles que inicialmente hicieron su aparición en dispositivos como el HTC Hero. La funcionalidad fue originalmente desactivada a nivel de kernel (posiblemente para evitar infringir patentes de otras compañías).  Más tarde, Google publicó una actualización para el Nexus One y el Motorola Droid que activa el soporte para pantallas multi-táctiles de forma nativa.

Bluetooth

El soporte para A2DF y AVRCP fue agregado en la versión 1.5;  el envío de archivos (OPP) y la exploración del directorio telefónico fueron agregados en la versión 2.0;  y el marcado por voz junto con el envío de contactos entre teléfonos lo fueron en la versión 2.2.

Videollamada

Android soporta videollamada através de Google Talk desde su versión HoneyComb.

Multitarea

Multitarea real de aplicaciones está disponible, es decir, las aplicaciones que no estén ejecutándose en primer plano reciben ciclos de reloj, a diferencia de otros sistemas de la competencia en la que la multitarea es congelada

Características basadas en voz

La búsqueda en Google a través de voz está disponible como "Entrada de Búsqueda" desde la versión inicial del sistema.

Tethering

Android soporta tethering, el cual permite al teléfono ser usado como un punto de acceso alámbrico o inalámbrico (todos los teléfonos desde la versión 2.2, no oficial en teléfonos con versión 1.6 o superiores mediante aplicaciones disponibles en el Android Market, por ejemplo PdaNet). Para permitir a un PC usar la conexión 3G del móvil android se podría requerir la instalación de software adicional.
 



Chrome

Google Chrome OS es un proyecto llevado a cabo por la compañía Google para desarrollar un sistema operativo basado en web. A través de su blog oficial, Google anunció el 7 de julio de 2009 que Google Chrome OS será un sistema realizado con base en código abierto (Núcleo Linux) y orientado inicialmente para miniportátiles, estando disponible en junio de 2011.3 Funcionará sobre microprocesadores con tecnología x86 o ARM.



Google ha declarado que el código fuente del proyecto Google Chrome OS fue liberado en noviembre de 2009 bajo el proyecto «Chromium OS», para incorporar la colaboración de la comunidad de software libre y ayudar en el desarrollo del proyecto.
 
 

Interfaz de usuario


Chrome OS está diseñado de una forma minimalista, debido a que su principal herramienta es el navegador web Google Chrome. De esta forma, la compañía planea mover gran parte de la interfaz de usuario desde un entorno de escritorio hacia Internet. De hecho, Google se refiere a su proyecto Chrome OS como una extensión natural del navegador Chrome. En otras declaraciones para una audiencia de desarrolladores, Google enfatiza que la web es la plataforma, destacando que las aplicaciones basadas en web funcionarán en Chrome y viceversa.

Las principales características de la interfaz de usuario son:

  • Paneles: Los paneles son pequeñas ventanas inferiores que se utilizan para diferentes tareas, tales como la descarga de archivos, navegador de archivos, mensajería instantánea en Gtalk, tomar notas, o notificadores de eventos como Google Calendar, Gmail, y actualizaciones del sistema. Los paneles también permiten ser minimizados para ocultarse, y también se pueden utilizar mientras se navega en diferentes sitios al permanecer estáticos.
  • Indicadores: Los indicadores se encuentran en la parte superior derecha, e indican procesos como la hora, batería, conexión y selector Wi-fi, y conexión 3G.
  • Pestañas: Las pestañas son lo más utilizado en el sistema, se utilizan para abrir las aplicaciones y sitios, y permiten abrir opciones del sistema. Las pestañas también se pueden "fijar" y disminuir su tamaño para quedar ancladas en la parte superior izquierda.
  • Lanzadores: Los lanzadores aparecen en la página principal, y son iconos grandes que se utilizan para abrir aplicaciones web, también ver los sitios más visitados, y ver los marcadores en una barra superior.




Velocidad


Uno de los puntos que más destaca Google es la velocidad del sistema, con un tiempo de arranque de 8 segundos y un tiempo apagado bastante pequeño, además de la rapidez que abre sus aplicaciones web.


Sincronización


Todos los documentos, aplicaciones, extensiones, y configuraciones, son respaldados en línea bajo el concepto de computación en nube. Así que si el usuario pierde su máquina, puede obtener otra o acceder desde otra máquina, y obtener exactamente los mismos datos que mantenía anteriormente.


Siempre conectado


Chrome OS solamente se podrá obtener por medio de la compra directa de un notebook, y cada notebook cuenta con conexión 3G siempre en línea. La promesa de Google es que Chrome OS siempre esté conectado, no importa donde. Además, en las versiones de desarrollo de Chromium OS, ya se están probando las conexiones 4G (LTE) con otros dispositivos.


Aplicaciones Web


Chrome OS no utiliza el típico sistema de aplicaciones, las aplicaciones se utilizan dentro del navegador web Google Chrome, y pueden ser utilizadas en línea o ser instaladas para poder utilizarse sin la necesidad de una conexión a Internet. El principal medio para obtener estas aplicaciones web es la tienda en línea Chrome Web Store, la cual permite adquirir aplicaciones, extensiones y temas para el navegador Google Chrome en un solo lugar. La tienda también permite comprar aplicaciones, y que los desarrolladores publiquen sus aplicaciones basadas en lenguaje web actual.




Seguridad


También contará con una arquitectura de seguridad actualizada. Google enfatiza el hecho de que Chrome no sufrirá de virus o programas maliciosos. Debido a que muchos sistemas operativos actuales fueron diseñados en épocas en las que Internet no era predominante, Chrome se diseña teniendo muy en cuenta esto, por ende eliminando riesgos de seguridad comunes arraigados.

Los puntos más importantes con respecto a la seguridad de Chrome OS son:

  • Actualizaciones automáticas: Las aplicaciones webs instaladas, extensiones, temas, el navegador, y el sistema operativo se mantendrá al día con actualizaciones automáticas.
  • Aislamiento de procesos: Aislar procesos que puedan comprometer la seguridad del sistema, tales como Flash Player, extensiones o aplicaciones instaladas.
  • Verificación de arranque: Monitorea si el sistema ha sido manipulado por entes externos antes de que el sistema parta, y vuelve a una versión de respaldo si esto ha sucedido.
  • Cifrado de datos: Todos los datos descargados en el disco son cifrados.
  • Modo visita: Parecido a la cuenta de «invitado» presente en sistemas operativos Windows y GNU/Linux, y al modo Safari en Mac OS X Lion. En este modo el usuario puede pasar la máquina a conocidos para que utilicen una cuenta de visita sin que sus datos se vean comprometidos.

Características avanzadas


Multitáctil


Los primeros gestos multitactiles se vieron en el Chrome Notebook (Cr-48), pero con funcionamientos básicos, como scroll de página con dos dedos. Pero Google dará soporte multitáctil completo de hasta cuatro dedos en versiones estables.


Reproductor multimedia


Todo el contenido multimedia descargado, como música o videos, se podrán reproducir gracias al reproductor multmedia integrado de Chrome OS.


Impresión


Para solucionar el problema de compatibilidad de controladores de hardware de las diferentes impresoras disponibles en el mercado, Google lanza Google Cloud Print (aún en Beta). La cual permite imprimir documentos desde cualquier dispositivo y aplicación, solamente es necesario conectar la impresora a Google Cloud Print y también conectarse mediante Chrome OS para mandar la orden de impresión.


Fabricantes de hardware y asociados


Google está trabajando con numerosas empresas para diseñar y construir dispositivos que soporten Chrome OS. Entre la lista de empresas destacan Intel, Acer, Samsung, Adobe, ASUS, Freescale, Hewlett-Packard, Lenovo, Qualcomm, Texas Instruments, Canonical, Dell y Toshiba.


Relación con Android


Chrome OS es un proyecto independiente del sistema operativo Android, el cual fue diseñado principalmente para su uso en teléfonos inteligentes. El nuevo Chrome OS se enfoca hacia usuarios que pasan la mayor parte de su tiempo en Internet, aunque es posible que ambos se fusionen en el futuro al solucionar las diferencias de operación entre Chrome OS y/o Android.
 

miércoles, 7 de septiembre de 2011

Aspectos Historicos Del Desarrollo De Los S.O.

La informática tal y como se le conoce hoy día, surgió a raíz de la II Guerra Mundial, en la década de los 40. En esos años no existía siquiera el concepto de "Sistema Operativo" y los programadores interactuaban directamente con el hardware de las computadoras trabajando en lenguaje máquina (esto es, en binario, programando únicamente con 0s y 1s).



 Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones.

Generacion Cero (década de 1940): Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.
 Primera Generacion (década de 1950): Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transición entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en ejecución, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba el trabajo siguiente. La introducción del transistor a mediados de los 50's cambió la imagen radicalmente. Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podían dar el lujo de tenerlas.

 























Segunda Generacion (a mitad de la década de 1960): La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación, y los principios del multiprocesamiento. La independencia de dispositivos aparece después. En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad.

Tercera Generacion (mitad de década 1960 a mitad década de 1970): Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores de esta generación fueron diseñados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento.
 Cuarta Generacion (mitad de década de 1970 en adelante): Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales. Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios.

Años 90 : GNU/Linux Este sistema es una versión mejorada de Unix, basado en el estándar POSIX , un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME entre muchos.



Ejemplos de Sistema Operativo

A continuación algunos ejemplos de sistemas operativos:

Familia Windows

  • Windows 95
  • Windows 98
  • Windows ME
  • Windows NT
  • Windows 2000
  • Windows 2000 server
  • Windows XP
  • Windows Server 2003
  • Windows CE
  • Windows Mobile
  • Windows XP 64 bits
  • Windows Vista (Longhorn)

Familia Macintosh

  • Mac OS 7
  • Mac OS 8
  • Mac OS 9
  • Mac OS X

Familia UNIX

  • AIX
  • AMIX
  • GNU/Linux
  • GNU / Hurd
  • HP-UX
  • Irix
  • Minix
  • System V
  • Solaris
  • UnixWare

 fuentes: http://www.monografias.com/trabajos6/hiso/hiso.shtml ,  http://www.fib.upc.edu/retro-informatica/historia/so.html , http://es.wikipedia.org/wiki/Historia_de_los_sistemas_operativos#Sistemas_operativos_desarrollados_2 , http://www.masadelante.com/faqs/sistema-operativo