jueves, 29 de septiembre de 2011
miércoles, 28 de septiembre de 2011
"POSIX" (Portable Operating System Interface)
POSIX es el acronimo de Portable Operating System Interface; la X viene de UNIX como seña de identidad de la API. El término fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fácil de recordar.
Es 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. 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.
Las partes:
*POSIX.1, Core Services (implementa las llamadas del ANSI C estándar). Incluye:
*Creación y control de procesos.
*Señales.
*Excepciones de punto flotante.
*Excepciones por violación de segmento.
*Excepciones por instrucción ilegal.
*Errores del bus.
*Temporizadores.
*Operaciones de ficheros y directorios (sobre cualquier fs montado).
*Tuberías (Pipes).
*Biblioteca C (Standard C).
*Instrucciones de entrada/salida y de control de dispositivo (ioctl).
*POSIX.1b, extensiones para tiempo real:
*Planificación (scheduling) con prioridad.
*Señales de tiempo real.
*Temporizadores.
*Semáforos.
*Intercambio de mensajes (message passing).
*Memoria compartida.
*Entrada/salida síncrona y asíncrona.
*Bloqueos de memoria.
*POSIX.1c, extensiones para hilos (threads):
*Creación, control y limpieza de hilos.
*Planificación (scheduling).
*Sincronización.
*Manejo de señales.
*POSIX.2, Shell y Utilidades (IEEE Std 1003.2-1992)
*Intérprete de Comandos
*Programas de Utilidad
*Luego de 1997 el Grupo Austin realizó modificaciones a POSIX. Las especificaciones tienen el
nombre de Single Unix Specification (Especificación Única de Unix)
*POSIX:2001 o IEEE Std 1003.1-2001 equivale a la versión 3 de Single UNIX Specification.
*Las base de definiciones.
*Las interfaces y encabezamientos del sistema.
*Los comandos y utilidades.
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;
- EJEMPLO:Llamadas al sistema: Ejemplo
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
int
main (void)
{
int fd, bytes_escritos; /*descriptor de fichero*/
char buffer[100];
mode_t modo =
S_IRWXU; /* modo de r, w y x para el propietario*/
strcpy
(buffer, "Esto es un ejemplo\n");
if ((fd =
open ("ejemplo", O_RDWR | O_CREAT, modo))== -1)
/*abre el fichero ejemplo en modo lectura/escritura o lo
crea si no existe */
perror
("Error al abrir o crear el fichero");
/*muestra un mensaje de error si no puede abrir/crear el fichero*/
else
bytes_escritos =
write(fd, buffer, strlen(buffer));
/* escribe buffer de tamaño sizeof(buffer) en fd */ exit
(0);
}NOTA: Me podria mandar que tengo que hacer porfavor de proyecto numero 9
jueves, 22 de septiembre de 2011
PRACTICAS DE LABORATORIO
PRACTICA 2
#include <unistd.h>
PRACTICA 3
#include <unistd.h>
#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("yo soy el hijo 1, mi padre es PID=%d, yo soy el PID=%d",
i, getppid(),getpid());
} 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);
}
}
}
PRACTICA 3
#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("yo soy el hijo 1, mi padre es PID=1450, yo soy el PID=1450",
i, getppid(),getpid());
printf("yo soy el hijo 2, mi padre es PID=1450, yo soy el PID=1454",
i, getppid(),getpid());
} 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);
}
}
miércoles, 21 de septiembre de 2011
PRACTICA 1
#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: Declaracion de variables del programa a probar. Es solo un exemplo**/
int i;
int n = 4;
int childpid;
/**El resto de variables son para que la presentacion 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);
}
¿Por que aparecen mensajes repetidos? Porque cuando llamamos a fork(), se duplican los procesos y empiezan a correr por separado. Cuando llega el momento de retornar de dicha función (y ya tenemos dos procesos), al proceso original le devuelve un identificador del proceso recien creado (el mismo numerito que vemos con el comando ps de una shell). Al proceso recien creado le devuelve 0 es por eso que apareen tales mensajes.
¿Que observarias? Las llamadas de procesos tanto padre como hijo duplicando y regresando a cero de nuevo.
¿Por que? En el codigo se realizan ciclos y funciones especificas que hacel que se muestre en forma de arbol.
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main (void) {
/**ATENCIÃ"N: Declaracion de variables del programa a probar. Es solo un exemplo**/
int i;
int n = 4;
int childpid;
/**El resto de variables son para que la presentacion 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);
}
¿Que observarias? Las llamadas de procesos tanto padre como hijo duplicando y regresando a cero de nuevo.
¿Por que? En el codigo se realizan ciclos y funciones especificas que hacel que se muestre en forma de arbol.
lunes, 19 de septiembre de 2011
TEMA 1.6 N U C L E O


# include <sys/wait.h>
# include <unistd.h>
# include <stdio.h>
# include <dos.h>
nt main ( int argc, char targr[] ) {
int num;
pid_t pid;
for (num=0; name<3;num++) {
pid=fork(); // Cuando utilizamos la llamada al sistema fork, el proceso hijo creado es una copia exacta
del padre (salvo por el PID y la memoria que ocupa). Al proceso hijo se le facilita una copia de
las variables del proceso padre y delos descriptores de fichero.
printf(“sord proceso PID %d y mi padre tiene % de PID\n”),getpin(), getppid() ); // la funcion getpid hace énfasis en la secuencia detallada de pasos
break;
sramdom(getpid ());
sleep(random() %3);
}// cierra el for
If (pi !=0)
printf (“fin de proceso de PID %d \n”), wait (NULL);
return 0;
}
¿Por que aparecen mensajes repetidos?
Por la funcion fork que hace el efecto visto como se explica en el codigo
¿Que observarias?Que al final del proceso se muestra el untimo numero que aparcecion en el mensaje y los mas repetidos durante la operacion
¿Por que? Asi lo indico el codigo con la sentencia getpin y getpid que hacen que realicen esa funcion
lunes, 12 de septiembre de 2011
LOS NUEVOS SISTEMAS OPERATIVOS: CHROME Y ANDROID
CHROME.- Es un sistema que, partiendo de Linux, permite iniciar un ordenador en un corto espacio de tiempo, estimado en unos 7 segundos. Una vez iniciado el ordenador el usuario tendrá la posibilidad de leer el correo, navegar con Google Chrome y unas pocas posibilidades mas. Como veis está enfocado al usuario web, de hecho se deja de almacenar la información en el disco duro del ordenador; se almacena en servidores de Google ademas de que es un sistema operativo 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.
Resumiendo asi que en la actualidad se cuenta con mas de un sistema operativo para la eleccion de cada usuario con apicaciones y caracteristicas conforme a las necesidades de cada quien como se vio en estos nuevos sistemas operativos.
Android: Es un sistema operativo basado en GNU/LINUX diseñado originalmente para dispositivos móviles,tales como telefonos inteligentes , pero que posteriormente se expandio se desarrollo para soportar otros dispositivos tales como tabletas reproductores MP3, Netbooks, PCs, televisores, lectores de e-book e incluso, se han llegado a ver en el CES, mocroondas 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. Las unidades vendidas de teléfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer trimestres de 2010, con una cuota de mercado de 43,6% en el tercer trimestre.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.
Android es una plataforma de código abierto. Esto quiere decir, que cualquier desarrollador puede crear y desarrollar aplicaciones escritas con lenguaje C u otros lenguajes y compilarlas a código nativo de ARM (API de Android).
Inicialmente, Android fue desarrollada por Google Inc. aunque poco después se unió Open Handset Alliance, un consorcio de 48 compañías de Hardware, Software y telecomunicaciones, las cuales llegaron a un acuerdo para promocionar los estándares de códigos abiertos para dispositivos móviles.Framework de aplicaciones: permite el reemplazo y la reutilización de los componentes.
Navegador integrado: basado en el motor open Source Webkit.
SQlite: base de datos para almacenamiento estructurado que se integra directamente con las aplicaciones.
Multimedia: Soporte para medios con formatos comunes de audio, video e imágenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
Máquina virtual Dalvik: Base de llamadas de instancias muy similar a Java.
Telefonía GSM: dependiente del terminal.
Bluetooth, EDGE, 3g y Wifi: dependiente del terminal.
Cámara, GPS, brújula y acelerómetro: Dependiente del terminal
Pantalla Táctil.
ARQUITECTURA DE ANDROID:
La arquitectura interna de la plataforma Android, está básicamente formada por 4 componentes:
Inicialmente, Android fue desarrollada por Google Inc. aunque poco después se unió Open Handset Alliance, un consorcio de 48 compañías de Hardware, Software y telecomunicaciones, las cuales llegaron a un acuerdo para promocionar los estándares de códigos abiertos para dispositivos móviles.Framework de aplicaciones: permite el reemplazo y la reutilización de los componentes.
Navegador integrado: basado en el motor open Source Webkit.
SQlite: base de datos para almacenamiento estructurado que se integra directamente con las aplicaciones.
Multimedia: Soporte para medios con formatos comunes de audio, video e imágenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
Máquina virtual Dalvik: Base de llamadas de instancias muy similar a Java.
Telefonía GSM: dependiente del terminal.
Bluetooth, EDGE, 3g y Wifi: dependiente del terminal.
Cámara, GPS, brújula y acelerómetro: Dependiente del terminal
Pantalla Táctil.
ARQUITECTURA DE ANDROID:
La arquitectura interna de la plataforma Android, está básicamente formada por 4 componentes:
martes, 6 de septiembre de 2011
"ASPECTOS HISTORICOS DEL DESARROLLO DE SISTEMAS OPERATIVOS"
Los sistemas operativos has tenido cambios notables al igual que el hardware a partir de la creacion de la primera computadora ya que Babbage se dio cuenta de que necesitraria un software parasu maquina analitica contratando asi a Ada Lovelace la cual fue considerada la primer programadora mujer dando asi el naciemieto de 5 generaciones de Sistemas Operativos las cuales son:
- GENERACION CERO (Decada de 1940)
En los primeros sistemas computacionales no poseian sistemas operatvos. Para los usuarios eran complejos por que trabajaban con instrucciones eran codificadas manualmente.Esta generacion se caracterizo por el uso de los tubos al vacio
- PRIMERA GENERACION (Decada de 1950)
Los sistemas operativos de los años cincuenta fueron diseñados para que sean mas fluido el trabajo. 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.
Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina).
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.
Para poder ejecutar un trabajo (programa), tenían que escribirlo en papel (lenguaje ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador. Eran más complejos controlar los componentes.
Cuando se ejecutaba alguna tarea, ésta tenía control total de la máquina. Al terminar cada tarea, el control era devuelto al sistema operativo, el cual limpiaba, leía e iniciaba la siguiente tarea.
Cuando se ejecutaba alguna tarea, ésta tenía control total de la máquina. Al terminar cada tarea, el control era devuelto al sistema operativo, el cual limpiaba, leía e iniciaba la siguiente tarea.
- SEGUNDA GENERACION (Década de 1960)
En esta generacion el nacimiento del transistor fue fundamental para el cambio radical.El transistor logro la creacion de computadoras mas poderosas. La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.
La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. 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.
Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata. Los lenguajes de alto nivel aparecieron naciendo el FORTRAN.
- TERCERA GENERACION(Mitad de década 1960 a mitad década de 1970)
Los ciercuitos integrados hicieron la creacion del tiempo compartido dando asi un gran cambio y la introduccion la tercera generacion. 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. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación.
Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.
Los sistemas de seguridad se ha mejorado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación. La clave de cifrado esta recibiendo mucha atención; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados.
- CUARTA GENERACION(Mitad de década de 1970 en adelante)
Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación.

Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la información, y el trabajo de las bases de datos es hacer que esta información sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso.
Los sistemas operativos conocidos en la época actual son los considerados sistemas de cuarta generación. Con la ampliación del uso de redes de computadoras y del procesamiento en línea es posible obtener acceso a computadoras alejadas geográficamente a través de varios tipos de terminales. Con estos sistemas operativos aparece el concepto de máquinas virtuales, en el cual el usuario no se involucra con el hardware de la computadora con la que se quiere conectar y en su lugar el usuario observa una interfaz gráfica creada por el sistema operativo.
CONCLUSION:
CONCLUSION:
El avanze del hardware esta altamente vinculado con el avance rapido de cada sistema operativo, empeznado desde un lenguaje maquina para poder crear ahora esa interface visual y no solo eso si no poder administrar, controlar los diferentes dispocitivos logico y fisicon de un ordenador o computadora teniendo ahora sistemas operativos de software libre y hasta sistemas operativos de los celulares entro otras cosas logrando ahora una gran revolucion en el mundo tan grande de la tecnologia.
Suscribirse a:
Entradas (Atom)