miércoles, 28 de septiembre de 2011

POSIX

POSIX: Portable Operating System Interface (IEEE)
El término fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fácil de recordar. Una traducción aproximada del acrónimo podría ser “Interfaz para Sistemas Operativos migrables basados en UNIX”.
Estos 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.

Especifica las interfaces de usuario y software al sistema operativo en 15 documentos diferentes. La línea de comandos estándar y las interfaces de scripting se basaron en Korn Shell. Otros programas a nivel de usuario (user-level), servicios y utilidades incluyen AWK, echo, ed y cientos de otras. Los servicios a nivel de programa requeridos incluyen definición de estándares básicos de I/O, (file, terminal, y servicios de red). También especifican una API para las bibliotecas de threading, que es muy utilizada en una gran variedad de sistemas operativos.serrano me





jueves, 22 de septiembre de 2011

PROYECTO A ESCOGER

PROFR.
EL PROYECTO QUE ESCOGI ES EL NUMERO 10

PRACTICA 3 Y 4

CODIGO PID 1450
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.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("Yo soy el hijo %d, mi padre es PID=%d, yo soy PID=%d \n",i,getpid(),getpid());
  }
  else if (ret>0)
  {
   ret=wait(NULL);
   while(ret>0)
   {
    ret=wait(NULL);
   }

  }

 if(ret==-1 && errno!=ECHILD)
  {
   perror("Falo en WAIT");
   exit(EXIT_FAILURE);

  exit(EXIT_SUCCESS); 
 }
 else if(ret==-1)
 {
  perror("Fallo en Fork");
  exit(EXIT_FAILURE);
 }
}
}


PRACTICA 4

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

  }

 if(ret==-1 && errno!=ECHILD)
  {
   perror("Fallo en WAIT");
   exit(EXIT_FAILURE);

  exit(EXIT_SUCCESS); 
 }
 else if(ret==-1)
 {
  perror("Fallo en Fork");
  exit(EXIT_FAILURE);
 }
}
}


Publicado por Ma. Isabel Serrano Medina 1701

miércoles, 21 de septiembre de 2011

PRACTICA ARBOLES

1.¿POR QUE APARECEN MENSAJES REPETIDOS?
R=para que muestren mensajes repetidos el truco es aprovechar que la función fork, que permite crear nuevos procesos, copia todo el proceso del llamador. Y eso incluye a los del pipe, pero el pipe no se duplica Y esto da como resultado que si el padre escribe p(1) que el hijo puede leer en p[0], o viceversa, es decir  es un metodo de conexion de que une la salida estandar de un proceso a la entrada estandar de otro.

2.- ¿QUE OBSERVAS?
R=que no es necesario esperar a que el primer proceso termine de procesar para que el otro comience es decir  son procesos completamente independientes y corren al mismo tiempo

3.- ¿POR QUE?
Un pipe puede ser más útil en el caso de comunicar un proceso padre con un proceso hijo y se pueden usarse   para leer y escribir en  bytes

#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;  // listo para leer los bytes que emergen del pipe
 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")) ) /* Lo de pclose no es un error de tipeo. Si un "stream" se abre con popen, se cierra solamente con pclose. Esto es así porque esta función se ocupa no sólo de cerrar en pipe sino de hacer las limpiezas relacionadas con el haber creado un proceso hijo*/
{  /* 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);}


Publicado por Maria Isabel Serrano Medina

lunes, 19 de septiembre de 2011

practica PID

CODIGO DEL PROGRAMA

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

int main (int arge, char * argv[])
{
            int num;
            pid_t pid;
           
            for(num=0; num < 3; num++)
            {
                        pid = fork();
                        printf("Soy el proceso pid %d y mi padre tiene %d de pid \n",
                        getpid(), getppid());
                       
                        if (pid != 0)
                        {
                                   break;
                                   srandom(getpid());
                                   sleep (random() %3);
                        }

            }

            if (pid != 0)
            {

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

RESULTADO DEL PROGRAMA COMPILADO Y EJECUTADO EN UNA TERMINAL DE LINUX

EXPLICACION
1.- ¿POR QUE APARECEN MENSAJES REPETIDOS?
POR EL CICLO QUE EL MULTIPLICA
2.- ¿QUE OBSERVAS?
se crea un proceso hijo que imprime en pantalla el pid de su proceso padre, mientras que el proceso padre imprime en pantalla su propio pid y el del proceso hijo que ha creado. Para ello, se utilizan las llamadas al sistema getpid() y getppid(). El proceso padre, antes de finalizar se suspende hasta que el hijo acaba, para evitar que éste se quede zombie. Para ello, utiliza la llamada al sistema wait(), que recibe en la variable status el estado en que el proceso hijo finalizó.


3.- ¿POR QUE?
wait()
sintaxis
int pid wait (int*status)

archivo de cabecera
#include<sys/types.h>
#include<sys/wait.h>

El proceso que realiza quedara en espra de que cualquiera  de sus hijos finalice

La orden devolvera cuando finalice uno de los hijos de proceso que ejecute el wait() el PID del hijo que ha finalizado

La orden toma como parametro un entero que contendra al finalizar la orden el codigo de finalizaicon del hijo que ha terminado

fork()
 crea un nuevo proceso exactamente igual (mismo código) al proceso que invoca la función. Ambos procesos continúan su ejecución tras la llamada fork(). En caso de error, la función devuelve el valor -1 y no se crea el proceso hijo. Si no hubo ningún error, el proceso padre (que realizó la llamada) recibe como resultado el pid del proceso hijo que acaba de nacer, y el proceso hijo recibe el valor 0.


Publicado por Maria Isabel Serrano Medina 1701

lunes, 12 de septiembre de 2011

SISTEMA OPERATIVO ANDROID

SISTEMA OPERATIVO 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.
Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio. Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 250.000 aplicaciones disponibles para la tienda de aplicaciones oficial de Android: Android Market, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android, como pueden ser la App Store de Amazon o la tienda de aplicaciones de Samsung. Android Market es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java.No obstante, no es un sistema operativo libre de malware, aunque la mayoría de ello es descargado de sitios de terceros.
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++.
Tal es el caso de la nueva plataforma Android, que fue creada por los   profesionales de Google en función de ofrecer a los usuarios una herramienta eficaz para la telefonía móvil. Durante el transcurso del año 2008, Google lanzó la primera versión del sistema operativo libre denominado "Android", desarrollado como plataforma abierta para implementarse en teléfonos celulares, y gracias a su código abierto, el mismo puede ser modificado y mejorado de acuerdo a las diversas necesidades de los usuarios.

Android es el fruto del arduo trabajo de los más destacados profesionales en el ámbito del desarrollo de software de Google, quienes además contaron con la colaboración de las empresas de telefonía móvil más importantes del mercado actual, tales como T-Mobile, HTC, Qualcomm y Motorola, entre otras
Caracteristicas
 Android de Google fue disponible bajo licencia de código abierto, que ofrece la posibilidad de que los desarrolladores puedan mejorar el sistema y actualizarlo constantemente, para brindar el mejor producto a los diferentes tipos de clientes. Además, de esta manera cada empresa de telefonía móvil puede ajustar el sistema operativo a los requerimientos específicos de los teléfonos celulares que ofrezca en el mercado. Se podría decir que la plataforma Android es un paquete de software que contiene un sistema operativo, middleware, interfaz de usuario y una serie de aplicaciones, todo ello para ser utilizado sobre móviles. Este novedoso sistema operativo para telefonía portátil representa una gran ventaja, no sólo para las compañías de teléfonos celulares y operadoras, que se benefician al reducir los costos y ofrecer productos totalmente actualizados, sino que además, mediante la implementación de Android los consumidores pueden adquirir sus equipos a precios inferiores, con mejores servicios, tanto de telefonía como de Internet, y una interfaz de usuario más sencilla, práctica y eficaz. Por todos los beneficios que representa la utilización de Android en los teléfonos celulares, los ejecutivos de Google estiman que durante el año 2009 la mayoría de los móviles que se comercialicen en el mercado incorporarán este novedoso sistema operativo.
Sus características, funcionalidades, y sobre todo al ser de código abierto y distribución libre, el sistema operativo Android de Google seguramente se convertirá en la plataforma elegida por las operadoras y los fabricantes de la industria de telefonía móvil, como así también de los usuarios, que encontrarán en este software una herramienta más personal, flexible y eficaz, que se ajuste a sus propias necesidades.
 Publicado por:Maria Isabel Serrano Medina



miércoles, 7 de septiembre de 2011

HISTORIA DE S.O

SISTEMAS OPERATIVOS
Un sistema operativo es un conjunto de programas destinado a permitir y u operar el uso apropiado de las partes fisicas del ordenador hardware, y de esta manera interactuar con el usuario. Sin un sistema operativo el usuario seria incapaz de poder trabajar con un computador ya que este no seria mas que una conjunto de piezas electronicas sin objetivo, he ahi su importancia.

 Almacenamiento temporal == Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.
El concepto de Sistema Operativo, no es ni mucho menos nuevo. Los primeros SSOO aparecieron a finales de los años 50; al comienzo de la informática. Al principio, los primeros SSOO eran monousuario y monotarea, algo así como el DOS. Pero con la direferencia de que se gobernaba con tarjetas perforadoras en vez de Diskettes.
Pronto empezaron a surgir nuevos conceptos y tras la malgama de SSOO que aparecieron, surgió uno de entre ellos, en el que estaban mezcladas todas las filosofías que hasta entonces se había descubierto en este mundo de la informática. Este SO se denominó Multics, son mediados de los años 60. Poco tiempo despues, se dieron cuenta los diseñadores de este SO que era enfarragoso y muy difícil de administrar, así pues se cogió la esencia misma del SO y el mismo equipo que diseñó el Multics, se puso manos a la obra y a finales de los 60 sacan la primera versión de un SO que revolucionaría la informática; el Unix.
En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado la mayoría orientados a seguir incrementando el potencial de los ordenadores. Para ello se utilizaban técnicas de lo más diversas.
En los Años 80 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. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS(Micro Soft Disk Operating System), escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000.

 
Mac OS
El lanzamiento oficial del ordenador Macintosh en enero de 1984, al precio de US $1,995 (después cambiado a $2,495 dólares)[1]. Incluía su sistema operativo Mac OS cuya características novedosas era una GUI (Graphic User Interface), Multitareas y Mouse. Provocó diferentes reacciones entre los usuarios acostumbrados a la línea de comandos y algunos tachando el uso del Mouse como juguete.
MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como un componente del Sistema Operativo.
Microsoft Windows
A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de (Windows 95) que se le puede considerar un sistema operativo, solo era una interfaz gráfica del (MS-DOS)en el cual se disponía de unos diskettes para correr los programas. Hoy en día es el sistema operativo más difundido en el ámbito doméstico aunque también hay versiones para servidores como Windows NT. (Microsoft) ha diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años después se hizo el (Windows 98) que era el más eficaz de esa época Después se crearía el sistema operativo de (Windows ME) (Windows Millenium Edition) aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema operativo de (Windows 2000) en ese mismo año. Después le seguiría el sistema operativo más utilizado en la actualidad, (Windows XP) y otros sistemas operativos de esta familia especializados en las empresas. Ahora el más reciente es (Windows 7) (Windows Seven) que salio al mercado el 22 de octubre del 2009, dejando atrás al (Windows Vista), que tuvo innumerables criticas durante el poco tiempo que duró en el mercado.
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. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar linux de una forma visual atractiva. Existen muchas distribuciones actuales de Gnu/Linux (Debian, Fedora, Ubuntu, Slackware, etc) donde todas ellas tienen en común que ocupan el mismo núcleo Linux. Dentro de las cualidades de Gnu/Linux se puede caracterizar el hecho de que la navegacion a través de la web es sin riegos de ser afectada por virus, esto debido al sistema de permisos implementado, el cual no deja correr ninguna aplicación sin los permisos necesarios, permisos que son otorgados por el usuario. A todo esto se suma que los virus que vienen en dispositivos desmontables tampoco afectan al sistema, debido al mismo sistema de permisos.
Tras este período de cerca de 30 años de historia, hay una serie de SSOO, que gozan, justa o
Injustamente de salud para suminstrar al usuario herramientas suficientes para crear un ordenador desde casa con capacidad plena de conexión a Internet.
Publicado por:  Ma. Isabel Serrano Medina 1701