viernes, 2 de diciembre de 2011

practica

55.Disponemos de un disco duro de 20 GB de capacidad. Hay establecida sobre él, una única partición que contiene un sistema de ficheros del tipo FAT32 en el que cada agrupamiento (cluster) consta de 16 sectores de 512 bytes cada uno. ¿Cuántos sectores del disco se necesitarán para almacenar cada copia la FAT? Razona tu respuesta.

FAT = 32 BITS
Capacidad disco duro = 20 GB
Agrupamiento = 16 sectores * 512 bytes
sectores = ?

20GB /(16*512 bytes) = 20-2^17 

(20-2^17) / (16*512 bytes) = 10485760 / 8192 = 1280*16 = 20480 sectores

La policía ha arrestado al sospechoso de un delito. Al analizar el contenido de su ordenador piensan que pueden inculparle pues el contenido del mismo
es el siguiente:

Número  De bloque de datos
Contenido
10
he
11
sido
12
yo
13
no
14
sigan
15
buscando

Como experto informático, pides consultar el contenido de la FAT, que es el siguiente:


Número  de entrada en la FAT
Contenido
10
11
11
EOF
12
13
13
10
14
15
15
12

¿Apoyarías la opinión de la policía? Razona tu respuesta.

No la apoyaria debido a q no es culpable debido a que el ajuste de entrada de la FAT, muestra un mensaje diferente y en realidad dice:
SIGAN BUSCANDO YO NO EH SIDO EOF

EOF-Es el indicador de que no hay mas información que recuperar


PROGRAMA








jueves, 24 de noviembre de 2011

Actividad 2

A continuacióon se muestra el codigo sobre jerarquia de procesos
Codigo
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define L1 2
#define L2 3
int main ()
{
int cont1, cont2;
pid_t pid;
for (cont2= 0; cont2< L2; cont2++)
{
for (cont1= 0; cont1< L1; cont1++)
{
pid= fork();
if (pid== 0)
break;
}
if (pid!= 0) break;
}
printf ("Soy el hijo: %d y Mi padre es: %d.\n", getpid(), getppid());
if (pid!= 0)
for (cont1= 0; cont1< L1; cont1++)
printf ("Fin del proceso%d.\n", wait (NULL));
return 0;
}

Imagenes del programa ya compilado


Diagrama de arbol

miércoles, 23 de noviembre de 2011

Actividad 1

Este ejercicio se realizo por medio de procesos dentro del cual se ordena por medio de jerarquias

Dibuja la jerarquía de procesos que resulta de la ejecución del siguiente código. Introduce las llamadas al sistema wait para que una vez generado el árbol de procesos los hijos sean esperados por sus respectivos padres. Ademas,  haz que se informe de los tiempos de ejecución de las aplicaciones  xload y
 kcalc que se generen así como del tiempo total de ejecución. Para calcular el  tiempo transcurrido, puedes utilizar la función´ time() de la librería estándar  time.h. La llamada time(NULL) devuelve los segundos transcurridos desde  las 00:00:00 del 1/1/1970 hasta el instante de la llamada.

Código
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char *argv[]) {
int i, j;
pid_t pid, nuevo, nuevo1;
time_t ini, fin;
ini= time(NULL);
for (i= 0; i< 2; i++){
pid= getpid();
for (j= 0; j< i+2; j++){
nuevo= fork();
if(nuevo== 0){
break;
nuevo1= fork();
if(nuevo1== 0)
execlp ("xload", "xload", NULL);
}
}if (pid!= getpid())
execlp ("kcalc", "kcalc", NULL);
}
for (i= 0; i< 2; i++)
for (j= 0; j< i+2; j++){ wait(NULL);
}
printf ("Tiempo total: %ld\n", time(NULL)-ini);
printf("soy el hijo %d y mi padre es %d\n",getpid(),getppid());
sleep(3);
return 0;
}

Diagrama del arbol




Estados de un proceso

miércoles, 12 de octubre de 2011

Diferencia entre LIFO y FIFO

Last In First Out (último en entrar, primero en salir).
El término LIFO se utiliza en estructura de datos y teoría de colas. Guarda analogía con una pila de platos, en la que los platos van poniéndose uno sobre el otro, y si se quiere sacar uno, se saca primero el último que se puso.
LIFO es el algoritmo utilizado para implementar pilas.


First in, first out o FIFO (en español "primero en entrar, primero en salir")
Es un concepto utilizado en estructuras de datos, contabilidad de costes y teoría de colas. Guarda analogía con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron, es decir, que la primera persona que entra es la primera persona que sale.
También se lo llama first come first served o FCFS (en español "primero en llegar, primero en ser atendido").



LIFO
FIFO
Van colocándose los datos unos sobre otros
el primer elemento en entrar será también el primero en salir
Se saca primero el ultimo que se puso
Se realiza por un extremo y la operación de extracción pop por el otro.
Se utiliza en filas
Se utiliza en las colas
Se pueden realizar las mismas operaciones en las dos





martes, 27 de septiembre de 2011

POSIX((Portable Operating System Interface)

¿Qué es?


Es un estándar de interfase de sistema operativo, basado en el popular sistema operativo UNIX. El estándar POSIX está actualmente en desarrollo, y su principal objetivo es permitir la portabilidad de aplicaciones a nivel de código fuente, es decir, que sea posible portar una aplicación de un computador a otro sin más que recompilar su código. Está siendo desarrollado por la Computer Society de IEEE, con la referencia IEEE-P1003.
También está siendo estandarizado a nivel internacional con la referencia ISO/IEC-9945.
El POSIX es un grupo de estándares en evolución. Cada uno de los estándares que lo componen cubre diferentes aspectos de los sistemas operativos. Algunos de ellos ya han sido aprobados, mientras que otros están aún en fase de desarrollo. Los estándares POSIX se pueden agrupar en tres categorías diferentes:


1)ESTANDARES BASE, Definen interfases del sistema relacionadas con diferentes aspectos del sistema operativo. El estándar especifica la sintaxis y la semántica de estos servicios del sistema operativo, de modo que los programas de aplicación puedan invocarlos directamente. El estándar no especifica cómo se implementan estos servicios; de este modo, los implementadores de sistemas pueden elegir la implementación que crean más conveniente—y así competir entre ellos—, siempre que cumplan la especificación de la interfase. Todos los estándares base desarrollados hasta el momento lo han sido para lenguaje C.

La Tabla I y la Tabla II muestran los estándares base que están siendo desarrollados por los grupos de
trabajo del POSIX.


Tabla I. Lista de estándares base del POSIX
POSIX.1   Interfases del sistema (estándar básico)
POSIX.2   Shell y utilidades
POSIX.3 Métodos para medir la conformidad con POSIX
POSIX.4 Extensiones de tiempo real
POSIX.4a Extensión de threads, o múltiples flujos de control
POSIX.4b Extensiones adicionales de tiempo real
POSIX.6 Extensiones de seguridad
POSIX.7 Administración del sistema
POSIX.8 Acceso a ficheros transparente a la red
POSIX.12 Interfases de red independientes del protocolo
POSIX.15 Extensiones de colas batch
POSIX.17 Servicios de directorios


Tabla II. Estándares base POSIX adicionales
P1224 Servicios de mensajería electrónica (X.400)
P1224.1 Interfase para portabilidad de aplicaciones X.400
P1238 Interfase de comunicaciones OSI
P1238.1 Interfase OSI de transferencia de ficheros
P1201.1 Interfase gráfica a usuario (ventanas)



2) Interfases en diferentes lenguajes de programación: Son estándares secundarios que traducen a un lenguaje de programación concreto los estándares base. Los lenguajes utilizados hasta el momento son Ada, Fortran 77, y Fortran 90, además del lenguaje C, en el que se han especificado hasta el momento los estándares base.
La Tabla III muestra las interfases POSIX que están actualmente en desarrollo para diferentes lenguajes de programación.

Tabla III. Lista de interfases POSIX para diferentes lenguajes de programación
POSIX.5 Interfases Ada
POSIX.9 Interfases Fortran 77
POSIX.19 Interfases Fortran 90
POSIX.20 Interfases Ada para las extensiones de tiempo real Estándares IEEE ya aprobados

3) Entorno de Sistemas Abiertos. Estos estándares incluyen una guía al entorno POSIX y los perfiles de entornos de aplicación. Un perfil de aplicación es una lista de los estándares POSIX, con especificación de las opciones y parámetros necesarios, que se requieren para un cierto entorno de aplicación. El objetivo
principal de los perfiles de aplicación es conseguir un conjunto pequeño de clases de implementaciones de sistemas operativos bien definidas y que sean apropiadas para entornos particulares de aplicaciones. La Tabla IV muestra la lista de estándares que están siendo desarrollados en este grupo.

Tabla IV. Lista de estándares POSIX de entornos de aplicaciones
POSIX.0 Guía al entorno POSIX de sistemas abiertos
POSIX.10 Perfil de entorno de aplicaciones de supercomputación
POSIX.11 Perfil de entorno de aplicaciones de procesado de transacciones
POSIX.13 Perfiles de entornos de aplicaciones de tiempo real
POSIX.14 Perfil de entorno de aplicaciones multiprocesadoras
POSIX.18 Perfil de entorno de aplicación de plataforma POSIX


***Donde se ocupa***


Sincronización de procesos:

El POSIX.4 define funciones para permitir la sincronización de procesos a través de semáforos contadores.

Memoria compartida:

Los procesos POSIX.1 tienen espacios de direccionamiento que son independientes entre sí. Sin embargo, muchas aplicaciones de tiempo real (y también muchas que no son de tiempo real) necesitan compartir grandes cantidades de datos de una manera eficiente.

Señales de tiempo real:

El mecanismo de señales definido en el POSIX.1 permite notificar eventos que ocurren en el sistema, pero no es completamente satisfactorio para aplicaciones de tiempo real. Las señales no se almacenan en colas y, por tanto, algunos eventos se pueden perder. La señales no están priorizadas, y esto implica tiempos de respuesta más largos para eventos urgentes.

Comunicación de procesos:

Se especifica un mecanismo sencillo de colas de mensajes para la comunicación entre procesos. Las colas de mensajes están identificadas por un nombre perteneciente a un espacio de nombres dependiente de la implementación.

Entrada/Salida Asincrona:

El POSIX.4 define funciones que permiten solapar el procesado de aplicaciones con las operaciones de entrada/salida iniciadas por la aplicación. Una operación de entrada/salida asíncrona es similar a las operaciones de entrada/salida normales, con la excepción de que una vez que la operación asíncrona ha sido iniciada por un proceso, este proceso no se suspende y puede continuar ejecutando instrucciones, en paralelo con la operación de entrada/salida

EXTENSIÓN DE THREADS:

El estándar POSIX.4a define interfases para soportar múltiples actividades concurrentes, denominadas threads, dentro de cada proceso POSIX. Los threads definidos en el POSIX.4a tienen un estado asociado más pequeño que el de un proceso. Todos los threads que pertenecen al mismo proceso comparten el mismo espacio de direccionamiento. Pueden ser implementados con tiempos de cambio de contexto y de creación y destrucción más bajos que los de los procesos. El POSIX.4a ha sido específicamente desarrollado para
abordar las necesidades de los sistemas multiprocesadores de memoria compartida.

***COMPATIBILIDAD***


TOTALMENTE POSIX-COMPATIBLES
Los siguientes Sistemas Operativos son 100% compatibles con uno o varios estándares POSIX.
  • A/UX
  • AIX
  • BSD/OS
  • DSPnano
  • HP-UX
  • INTEGRITY
  • IRIX
  • LynxOS
  • Mac OS X v10.5 en Procesadores Intel.
  • MINIX
  • MPE/iX
  • QNX (IEEE Std. 1003.13-2003 PSE52;
  • RTEMS (POSIX 1003.1-2003 Profile 52)
  • Solaris
  • Unison RTOS
  • UnixWare
  • velOSity
  • VxWorks (IEEE Std. 1003.13-2003 PSE52;

MAYORMENTE POSIX-COMPATIBLES
Los siguientes, aunque no oficialmente certificados como POSIX-compatibles, se ajustan en gran parte
  • BeOS / Haiku
  • FreeBSD
  • GNU/Linux (la mayor parte de las distribuciones)
  • Contiki
  • NetBSD
  • Nucleus RTOS
  • OpenBSD
  • OpenSolaris
  • PikeOS
  • RTOS (para ciertos sistemas con particiones PSE51 y PSE52 opcionales)
  • RTEMS – Soporte API POSIX diseñado para IEEE Std. 1003.13-2003 PSE52
  • Sanos
  • SkyOS
  • Syllable
  • VSTa
POSIX PARA WINDOWS
  • Cygwin
  •  ofrece un desarrollo en gran parte compatible con POSIX y un entorno de ejecución para Microsoft Windows.
  • Microsoft POSIX subsystem, un subsistema opcional Windows
  • Windows Services for UNIX de Microsoft permite una plena compatibilidad POSIX para ciertos productos de Microsoft Windows. Los sistemas operativos basados en Windows NT hasta Windows 2000 tenían una interfaz POSIX incorporada en el sistema operativo y los Servicios UNIX para Windows brindaban un entorno del tipo UNIX. Para Windows XP, los Servicios UNIX para Windows deben de instalarse para que exista compatibilidad POSIX. El subsistema UNIX está incorporado a las ediciones Enterprise y Ultimate de Windows Vista y 7, y no pueden ser agregados en forma separada a las otras ediciones..
  • UWIN de AT&T Research implementa una capa POSIX sobre la interfaz de programa de aplicaciones (API) de Win32
  • MKS Toolkit








**Ejemplo
Ejemplo de programa con hilos POSIX


#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
void *thread_function(void *arg) {
int i;
for ( i=0; i<20; i++ ) {
printf("Thread says hi!\n");
sleep(1);
}
return NULL;
}
int main(void) {
pthread_t mythread;
if ( pthread_create( &mythread, NULL, thread_function, NULL) ) {
printf("error creating thread.");
abort();
}
if ( pthread_join ( mythread, NULL ) ) {
printf("error joining thread.");
abort();
}


exit(0);


}

jueves, 22 de septiembre de 2011

PRACTICA 3 "Configuración de procesos en C"

Ejercicio #1

              Padre
         /       |           \
Hijo1      Hijo2      Hijo3

Código
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<errno.h>
#define NUM_HIJOS 3   
int main(void)
{
int ret, i;
for(i=0; i<NUM_HIJOS; i++){
ret=fork();
if(ret==0){
printf("Soy el hijo %d, mi padre es PID: %d , Yo soy el PID= %d\n\n", i, getppid(), getpid());
}else if(ret> 0){
ret=wait(NULL);

while(ret>0){
ret=wait(NULL);
}
if(ret == -1 && errno != ECHILD){
perror("falla en wait");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
else if (ret == -1){
perror("falla en fork");
exit(EXIT_FAILURE);
}
}
}


Ejercicio #2


      Padre
    /          \
Hijo1      Hijo2    
                   |
               Hijo3

Código
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<errno.h> //Define macros que presenta un informe de error a traves de codigos
#define NUM_HIJOS 2
int main(void)
{
    int ret, i;
    for(i=1; i<=NUM_HIJOS; i++){
        ret=fork();
        if(ret==0){
        printf("Soy el hijo %d, mi padre es PID: %d , Yo soy el PID= %d\n\n", i, getppid(), getpid());
        if(i==2){
            printf("Soy el hijo 3 %d\n\n", getpid());
        }       
        }    else if(ret> 0){
                ret=wait(NULL);
    while(ret>0){   
        ret=wait(NULL);
    }
    if(ret == -1 && errno != ECHILD){       
        perror("falla en wait");
        exit(EXIT_FAILURE);
    }
    exit(EXIT_SUCCESS);
    }
    else if (ret == -1){
    perror("falla en fork");
    exit(EXIT_FAILURE);
    }
    }
}

Procesos

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>


int main (void) {


/**ATENCIÓN: Declaración de variables del programa a probar. Es sólo un exemplo**/
    int i;
    int n = 4;
    int childpid;


/**El resto de variables son para que la presentación de los resultados por pantalla sea posible**/
  
    int a, p;
    int ret;
    FILE *fpipe;
    char comanda[50]; /*String dónde se guarda el comando a ejecutar por el 1r hijo*/
    char line[256];         
    p = getpid();


    sprintf(comanda,"pstree -n -p %d\n",getpid()); /*Concatenamos el comando pstree con el pid del padre*/


    ret = fork();


    if (ret == 0) { /*Este es el primer hijo del padre*/
        if ( !(fpipe = (FILE*)popen(comanda,"r")) ) {  /* Si el pipe falla*/
            perror("Problemas con el pipe!!!");
            exit(1);
        }
        while ( fgets( line, sizeof line, fpipe))
        {
            printf("%s", line); /*Escribimos por pantalla lo que retorna el hijo. La salida del pstree*/
        }
        pclose(fpipe);


      
    } else {
        /*El primer hijo sólo se crea para hacer un pstree y poder ver por pantalla */
        /*el árbol de procesos generado*/


        /*El código que viene a continuación, lo podéis substituir por lo que se tercie*/
        /*¡¡Las variables han de ir declaradas arriba!!!*/


      
        for (i = 1; i < n; i++) {
            if ((childpid = fork()) == -1) {
                break;
                }
            fprintf(stderr, "Este es el proceso %ld com padre %ld\n", (long)getpid(), (long)getppid());      
                    }
        sleep(1); /*Es sólo para dar tiempo a terminar a todos los hijos*/


    }
exit(0);
}


1. Por que aparecen mensajes repetidos
Por que se tiene la instrucción for y de igual manera va mostrando los procesos que se están realizando, asignándoles asi un PID mejor conocido como numero único de identificación, en el cual se van registrando cada uno de los procesos del SO

2.Que observas
Que muchos de esos procesos se repiten dos o tres veces, debido a que se ejecutan dos procesos en paralelo con un nuevo hijo que es una copia de los padres, haciendo así que la función CHILPID nos regrese el valor del proceso padre, devolviendo así 0 al proceso hijo

3. Porque
Son parte fundamental de los sistemas operativos debido a que toda acción relizada en la computadora debe tener un PID para mayor organización, teniendo en cuenta que los pipe son mecanismos utilizados para compartir la información

lunes, 19 de septiembre de 2011

Identificador de procesos

Código:

//Librería sys/types que contiene funciones de busqueda y ordenamiento de directorios y manipulacion de archivos
#include<sys/types.h>
//Librería que define  las constantes simbolicas para el uso del wait
#include<sys/wait.h>
//Librería unistd.h que contiene funciones para el manejo de directorios y archivos, define getpid y getppid
#include<unistd.h>
//Librería que contiene funciones de entrada y salida
#include<stdio.h>

int main (int argc, char * argv[])
{
int num;
//El PID (process ID ó identificador de proceso) es un identificador de procesos es un numero entero usado por el kernel de algunos sistemas operativos
//como Unix o Windows NT, para identificar un proceso de forma unívoca
pid_t pid;
for(num=0; num < 3; num++)
{
//El proceso fork crea nuevos procesos(proceso hijo), que es exactamente igual al(proceso padre), el cual va incrementando con cada nuevo proceso creado por fork()
pid = fork();
printf("Soy el proceso pid %d y mi padre tiene %d de proceso pid \n",
getpid(), getppid());
//getppid, devuelve el identificador de proceso del padre del proceso actual
if (pid != 0)
{
break;
//getpid devuelve el identificador del proceso actual
//srandom genera un numero aleatorio
srandom(getpid());
//sleep retarda el random
sleep (random() %3);
}
}

if (pid != 0)
{
printf("Fin del proceso pid %d \n", wait (NULL));
return 0;
}
}


PREGUNTAS
1. Por que aparecen mensajes repetidos
Debido a que se encuentra la instrucción for, ya que esta realiza un proceso iterativo de acuerdo a las condiciones ya establecidas

2. Que observas
Se observan los identificadores de procesos, los cuales se les va asignando a cada uno de los procesos de ejecución que se estén realizando en ese momento

3. Por que
Se tienen que asignar identificadores a todos los procesos que se realicen para poder llevar un control dentro del kernel, y asi al querer terminar un proceso solo colocamos en consola:
sudo kill #numdePID
y el proceso se termina






lunes, 12 de septiembre de 2011

Sistema Operativo Google Chrome

Google Chrome
google chrome os



Google Chrome OS tendrá como base el sistema operativo Linux y, corriendo sobre él, un nuevo entorno de ventanas y el navegador. Es curioso que Mac y Linux han sido las versiones de Chrome menos cuidadas por Google hasta la fecha, pero no hay duda de que la de Linux recibirá un serio empujón.
El objetivo de este sistema es mejorar la velocidad y la seguridad, por lo que van a replantear algunos conceptos de la arquitectura de seguridad, igual que hicieron con Chrome (donde han separado las pestañas en distintos procesos). El interfaz de usuario será mínimo y no sería de extrañar que al arrancar el ordenador lo primero que veamos sea el navegador.
Como quedó clarísimo, el sistema operativo será 100% para trabajar con la nube. Nada de instalar aplicaciones en el sistema. Todo lo que haremos lo haremos a través de una pantalla que será prácticamente igual a la del actual navegador. De hecho, para que se den una idea del extremo al que lo llevaron, cuando conectemos una cámara digital se abrirá una pantalla de este “navegador” y nos mostrará qué hay dentro de ella.
Para realizar este OS la empresa se siguió basando en las típicas características que podemos ver en todos sus proyectos: simplicidad, velocidad y seguridad.
La simplicidad ya podrán imaginársela porque no habrá mucho más que la ventana de un navegador con el cual controlaremos todas las funciones del sistema operativo.
La velocidad, al manejar absolutamente todas las aplicaciones en la nube y solamente funcionar con discos SSD será extrema. De hecho, en la presentación oficial en Mountain View mostraron que desde que presionamos el botón de power hasta que nos pide que ingresemos nuestro nombre de usuario y contraseña tardó solamente 7 segundos y aseguraron que están haciendo todo lo posible para que este tiempo sea incluso menor.
Finalmente está la seguridad. Al no poder instalar sistemas binarios y aplicaciones externas no habrá nada más en el sistema que unos cuantos archivos de caché que sincronizarán con la nube. Esto quiere decir que no habrá sistemas que explotar más que el núcleo de Google Chrome y, como explicaron, el núcleo lo conocen suficientemente para poder arreglarlo en cuestión de horas.
Daniel Helf, jefe de producto en Argentina, comentó que no está hecho para cualquier usuario sino para aquellos que necesiten portabilidad y tengan y necesiten tener toda su información en internet. Considerando que este sistema no funcionará bien sin una conexión WiFi, 3G o Ethernet esto es un punto a destacar, ya que si nos encontramos en el medio de un viaje sin conexión, no podremos hacer más que las cosas que Gears nos permita.




Remarcaron que Chrome OS no podrá instalarse en cualquier ordenador, sino en los elegidos y desarrollados especialmente para este sistema. Si bien esto me parece una contra importantísima, la razón por la cual Google hace todo esto está clarísima: no quieren que el rendimiento sea menor al que aseguran. Si a un ordenador le ponemos un disco HDD en vez de uno SSD la velocidad se notará mucho y esto es lo que la empresa no quiere que suceda.


Links sobre Google Chrome SO
http://www.youtube.com/watch?v=cb1QFa0C3SM


Hay 10 tipos de personas que exiten en el mundo las que entienden binario.... y las que no 

Sistema Operativo Android


ANDROID
El primer dispositivo que tenía el Android fue el HTC Dream, lanzado el 22 de octubre del 2008. Desde entonces, 
varios celulares cuentan con el sistema, con destaque para el Motorola Milestone, Samsung Galaxy S y el LG Optimus One. Uno de los primeros sispositivos con el sistema Google fue el HTC Magic.
A pesar de contar con un crecimiento más modesto desde su lanzamiento, Gartner muestra que el Android vendió casi 7 millones de unidades en el año 2009 (3,9% del mercado). En relación a la competencia, el número todavía era extremamente insignificante, ya que Symbian fue el responsable por un total de 80 millones de unidades alrededor del mundo, cerca de 46% de toda la venta mundial.
Ya los dispositivos con iOS (iPhone y iPod Touch) en el año 2009 eran responsables por cerca de 25 millones de unidades vendidas, o sea, 14% de los dispositivos comercializados durante el año. Por lo tanto, un inicio modesto, que ciertamente no combina con todas las especulaciones hechas desde la compra de la empresa Android, en 2005

Android, es un sistema operativo, que está directamente dirigido a dispositivos móviles. Google le compró esta compañía a su original creador Adroid Inc, y hoy en día son los de Open Handset Alliance, que es un consorcio que esta compuesto por alrededor de 48 compañías de Software, Telecomunicaciones y Hardware. los que la están desarrollando.
Alguna de sus características son:
  • Que posee un navegador integrado, el cual esta basado en el motor de código abierto WebKit.
  • Contiene gráficos optimizados, como lo son los gráficos 2D y 3D.
  • Almacenamiento de datos estructurados.
  • Tecnología GSM, la cual es dependiente del Hardware
  • Además de Wi-Fi, Bluetooth, 3G y EDGE, también dependientes del Hardware.
  • Permite Cámaras, GPS, acelerómetro, brújula. Entre muchas otras.
También nos da la posibilidad de ingresar, desde nuestro teléfono y programar distintas utilidades y herramientas.

Aplicaciónes de Android


Optimize ToolBox, varias herramientas en una sola 

aplicación


Sus desarrolladores la definen como una navaja suiza donde podremos gestionar y optimizar prácticamente todo nuestro móvil desde una sola aplicación ahorrándonos tener que instalar varias aplicaciones para hacer cada cosa por separado.




Optimize ToolBox se divide en nueve secciones donde podremos gestionar y optimizar cada parte del sistema de forma cómoda y fácil. En System Scan podremos ver el estado del dispositivo, el uso de la CPU, RAM, memoria disponible, etc… En App Manager podremos crear carpetas y ver que aplicaciones se pueden mover a la SD. Cuando instalamos una aplicación nueva la aplicación nos avisará en la barra de notificaciones que se podrá mover a la SD.
Podremos gestionar que aplicaciones queremos que se ejecuten nada más encender el móvil desdeStartup Manager para así evitar que se arranquen aplicacaciones en segundo plano que no usamos. También tenemos un instalador y desinstalador de aplicaciones en Un/installer y forzar el cierre de aplicaciones y servicios con Program Manager.
Estadisticas del mejor sistema operativo movil



Android x iPhone

A pesar de disputar el mercado directamente con Symbian, el gran “rival” para comparación con el Android sin duda alguna es el iOS, ya que los dos sistemas tienen su propia tienda de aplicaciones donde los desarrolladores pueden vender sus proyectos, o sea, buscan el mismo mercado consumidor.
En número de aplicaciones, la AppStore todavía tiene la delantera, ya que cuenta con más de 400 mil apps introducidos en la tienda, contra cerca de 200 mil en el Market Store (datos de Wikipedia). Sin embargo, un reporte publicado por Lookout, empresa de seguridad para dispositivos móviles, afirma que el Android Market está creciendo tres veces más rápido que la ya conocida y consagrada AppStore.
Desarrolladores Android y Apple
Fuente de la imagen: App Genome Project
De acuerdo con el proyecto, si las aplicaciones crecen en la misma velocidad en las dos plataformas, Android Market tendrá más apps disponibles a mediados del 2012. El estudio, llamadoApp Genome Project, muestra además que el promedio de aplicaciones introducidas por un desarrollador en el Market es de 6,2 o sea, más que las 4,8 aplicaciones de los participantes de la AppStore.
En términos de ventas, la AppStore toma la delantera, con un sistema de pago ya consolidado y una cantidad mayor de aplicaciones pagas disponibles. Android demuestra una caída en número de aplicaciones gratuitas, aumentando aquellos que traen alguna ganancia para los desarrolladores, de acuerdo con el estudio que realizó Lookout.
Para completar, mientras que el iOS puede ser encontrado apenas en dispositivos de la Apple, entre ellos el iPod Touch y iPad, el Android cuenta teóricamente, con una autonomía mayor para crecer, una vez que es usado en dispositivos de diversas marcas.
Aplicaciones pagas y gratuitas
Fuente de la imagen: App Genome Project
Sin embargo, los ejecutivos de Apple no parecen tan preocupados. Para ellos, el proceso de actualización es considerado complicado. Además de eso, la fragmentación perjudica a quien desarrolla aplicaciones para la plataforma, algo que beneficia el iOS. Esas declaraciones fueron hechas por Toni Sacconaghi, de la empresa de análisis Bernstein, al conversar con ejecutivos de la propia Apple.