domingo, 21 de febrero de 2010

Resumen Tercera y Cuarta Clase

Monoprogramación: Un programa a la vez

Por lotes:

Programa + datos + órdenes No interacción (nómina, análisis de tiempo, análisis estadístico, cálculos científicos, etc.)

Procesamiento FCFS, no gestión E/S, pobre gestión archivos.

Ø Interactiva: Capacidad de dialogar a través de pantallas.

Ø Por lotes e interactiva:

Ejecutar

Ejecutar


Programa A esperar esperar

Tiempo:

(a) Monoprogramación


Multiprogramación: Multiprocessing, multitasking.

Ø Multitarea: Varios procesos

Ø Monousuario: Un solo usuario, no necesariamente multiprogramado

Ø Multiusuario: Varios usuarios interactivos a la vez

Ø Multiacceso: Interactúa a través de varias terminales, repartición de tareas

Ø Multiprocesador: Varios procesadores, un programa independiente en cada procesador, todo programa es multiprogramado pero no viceversa.

Ø Tiempo compartido: Multiprog. Interactiva + lotes, ejecuciones en segundo plano.

Ø Tiempo real: Respuesta de acuerdo a entorno, todo sistema que responde a la velocidad que necesita el sistema que está controlando.

Ø Combinados: Mezcla varias modalidades,

Ø SOR: Múltiples computadores, C/máquina ejecuta su SO, ingresos remotos,

Ø S.O Distribuidos: Resultado del trabajo de los SO en red, S/autónomos capaces de comunicación y cooperación mediante interconexiones Hardware y Software. Ven el S/ como si fuera uniprocesador.

Computadores personales-computadores dedicados a un solo usuario

Ø Dispositivos I/O teclados, ratón, pantallas, pequeñas impresoras.

Ø Conveniencia y responsabilidad del usuario.

Ø Puede adoptar la tecnología desarrollada para los grandes sistemas operativos. Con frecuencia los individuos usan en forma aislada el computador y no requieren de avanzada utilización de características de protección de la cpu.

Ø Desktop, portátil, laptop, palmtop, wearable PC, tablet PC, PDA, celulares tercer generación, reproductores mp3/mp4, RFID.

Bitácora 2

En esta semana nos preocupamos mas por la lógica principal del programa, concentrándonos principalmente en la revisión de sintaxis de los programas “.ch”, que serán los que alimenten el desarrollo.

Inicialmente, desarrollamos clases que nos permitieran cargar los archivos “.ch”, en variables para después ser revisados, además creamos un entorno que permitiera al usuario modificar el archivo en cualquier momento, ninguna de estas clases esta perfeccionada pero nos permite dar un vistazo a lo que serán posteriormente. Luego de cargar el archivo, y permitirle al usuario modificarlo, nos preocupamos por la manera en la que revisaríamos línea a línea y palabra a palabra, el documento y así encontrar cada error de sintaxis posible. Para esto dividimos inicialmente el documento por líneas, para posteriormente dividir estas líneas en palabras y almacenarlas en un vector de clases en la que podemos acceder a ellas de una manera más fácil y ordenada. Luego de esto iniciamos la revisión de sintaxis, intentando observar todos los errores posibles, y mostrándole al usuario en que línea y cuál es el error especifico. Para esto creamos un inventario de errores muy completo y explicito. Al mismo tiempo de la revisión, nos encargamos de crear vectores, que nos almacenen las variables y las etiquetas que se crearan en la posterior ejecución del programa. Hace falta decir, que para poder hacer la revisión completa, debimos recorrer el vector de instrucciones en dos ocasiones, en la primera, observando la mayoría de las palabras reservadas, pero sin tener en cuenta las palabras “Vaya” y “Vayasi”, para en un segundo recorrido, y con las diferentes etiquetas almacenadas en un vector, poder analizar si estas instrucciones estas correctamente ingresadas.

Posteriormente continuamos cargando todas las instrucciones debidamente revisadas, en el vector de memoria principal, además de las variables. En este momento se creará un vector en el que se almacenarán todos los nombres de los programas, además de la dirección en donde está almacenado en el vector de memoria principal y el número de instrucciones y variables.

En esto resumimos lo poco que hemos hecho en esta semana, posteriormente pasaremos a buscar más errores de sintaxis y a la ejecución del programa usando el vector de memoria principal.

Anexamos un ejecutable del programa, además de todas las clases creadas en él.

Resumen Segunda Clase

Ø Entrada de orden

Ø Interprete de comandos y ejecución de programa

Ø Verifica presencia de Edit en memoria sino lo q pasa a subsistema de archivos (tamaño…)

Ejemplo en cmd:

Edit archivo.txt (entra y luego salimos)

Ø El gestor de memoria asigna memoria

Ø El cargador lo carga(loader)

Ø Se crea el BCP(http://es.wikipedia.org/wiki/Bloque_de_control_del_proceso)

Ø El BCP se matricula en la lista de procesos listos

Ø El planificador elige el programa para ejecución: Asignación con la condición de tener el archivo fuente.

Ø EDIT solicita a SO la apertura de archivo.txt: Verificación de la existencia del archivo fuente y si es editable.

Ø Se registra archivo.txt en archivos activos: Se señala que está activo en el buffer (crea una ventana para editar el archivo).

Ø Dialogo teclado-pantalla: La edición o cambios pertinentes.

Ø Termina: guarda, cierre, libera memoria…: El buffer envía lo que queda y se libera el buffer y posteriormente la memoria.

Lo que se busca con un SO.

Ø Eficiencia: Realizar las tareas con la menor cantidad de recursos.

Ø Robustez: Capaz de tratar de corregir sus errores.

Ø Escalabilidad: Capaz de responder con pequeñas cargas de trabajo o ya sea grandes (crecibilidad, exigencias).

Ø Extensibilidad: Agregar más funciones, módulos, etc.

Ø Portabilidad: Capacidad de ejecutarse en diferentes plataformas de hardware.

Ø Seguridad: El sistema deje hacer a quien pueda hacer lo que pueda hacer cuando pueda hacerlo.

Ø Protección: Sistema no permita que se pueda hacer lo que no se debe. Funcionalidad de los programas individualmente.

Ø Interactividad: Sistema permita el diálogo con el interlocutor (utilizador).

Ø Usabilidad: Agradable con el usuario.

Ø Auditabilidad: Seguimiento, verificar.

Ø Trasparencia: Funcionamiento “inconsciente”, sin notificaciones constantes que muestre cada vez que se presente un problema.

Ø Estabilidad: Sistema no se salga de casillas tan fácilmente, capacidad de trabajar sin errores con frecuencia.

Usuario1 Usuario2 Usuario3… Usuario n

Compilador Ensamblador Editor de texto… sistema BD

Ambiente de computación

Situaciones en las cuales en las que se debe utilizar inteligencia en los dispositivos:

Computación tradicional:

Ø Pc’s, servidores, terminales de mini/maxi Acceso remoto limitado

Redes de computadores

Ø LAN, WAN, MAN, PAN (personal area network), HAN (home area network)…

Computación de cliente servidor

Computación P2P (peer to peer)

Ø No se distingue cliente de servidor

Ø Ejemplos Napster, Gnutella

Computación basada en la web

Ø Cliente sevidor y servicios de web, acceso remoto adecuado, servidores sin ubicación.

Computación embebida/empotrada

Ø Controladores de máquinas, microondas, etc.

Ø Características limitadas en los sistemas operativos

Ø Poca o ninguna interacción con el usuario, acceso remoto

Ø Es la forma más extendida del uso de los computadores

Grid computing (computación en red)

Cloud computing (computación en la nube)

Utility computing

domingo, 14 de febrero de 2010

Resumen Primera Clase

Primera Clase: Febrero 11 2010

Introducción

Q es un SO?

Como maquina ampliada

Es el software cuya función es presentar al usuario el equivalente de una maquina virtual o ampliada (N3) que sea más fácil de programar que el hardware implícito

Como manejador de recursos

No importa el funcionamiento electrónico

Nivel 5 nivel del lenguaje orientado al problema

Traducción (compilador)

Nivel 4 nivel del lenguaje ensamblador

Traducción (ensamblador)

Nivel 3 nivel de maquina del sistema operativo

Interpretación parcial (SO)

Nivel 2 nivel de maquina del sistema convencional

Interpretación (microprogramación)

Nivel 1 nivel de microprogramación

Los microprogramas son ejecutados directamente x la maquina

Nivel 0 nivel de lógica digital

Maquina real

Bitácora 1

Bitácora 1

Analizando las características que debe tener el CHComputador, decidimos que el lenguajes más apropiado para el desarrollo de este es java, ya que nos permite un fácil manejo de aplicación desde internet y el manejo de hilos o threads, como se llaman en este lenguaje, no es de una manera muy complicada. Además nos permite el desarrollo de una interfaz grafica de una manera rápida, para utilizar la mayor parte del tiempo en el desarrollo de los demás componentes que representan realmente una parte importante para el proyecto.

Según los requerimientos del CHComputador, manejaremos un vector de hasta 9.963 posiciones, y este tomara por defecto 963 posiciones. El valor por defecto del kernel será de 35 posiciones del vector antes mencionado. Sobra decir que todos estos valores podrán ser modificados al inicio de la ejecución del CHMaquina por el usuario final.

El acumulador ocupará la primera posición del vector de memoria, por lo que le corresponderá la dirección 0, las posiciones siguientes serán las pociones del kernel, ocupando el valor que el usuario final decida al inicio de la ejecución del simulador, las posiciones siguientes serán las que almacenaran las instrucciones del código introducido.

Para almacenar todos los datos necesarios, se crearán un conjunto de clases que simplificaran el funcionamiento y que nos permitirá acceder a los datos de una manera más rápida y ordenada. Las clases a crear deberán tener una arquitectura parecida a la que explicaremos a continuación:

· Se deberá crear una clase que nos permita almacenar los datos correspondientes a cada instrucción, en el programa principal se creará un vector de este tipo de clase, en el cual se almacenaran todas las instrucciones de todos los programas que se cargue al CHMaquina.

En el vector de memoria principal se almacenará la posición que la instrucción ocupa en el vector de instrucciones, para sí acceder a ellas de una manera más fácil y ordenada. En este momento no es importante que instrucción corresponde a que programa puesto que posteriormente crearemos clases que nos resuelvan este problema.

· Se deberá crear una clase que nos permita almacenar los nombres de los programas, además de el numero de instrucciones, cuál es la posición de en donde inician estas y un número que lo identifique.

En programa principal se deberá crear un vector de este tipo de clases en el cual se almacenarán todos los programas que se carguen al CHMaquina.

· Se deberá crear una clase que nos permita almacenar los nombres de las diferentes variables, además del identificador del programa al que pertenecen, la dirección de la variable en el vector principal y el tipo de la variable.

En programa principal se deberá crear un vector de este tipo de clases en el cual se almacenarán todas las variables de todos los programas que se hayan cargado en el CHMaquina.

· Se deberá crear una clase que nos permita almacenar los nombres de las diferentes etiquetas, además del identificador del programa al que pertenecen y la dirección a la que tiene que ir cuando se ejecute. De La misma manera se creará en el programa principal un vector que almacene todas las etiquetas.

La idea que todo este conjunto de vectores que se crearan se relacionen entre si y permitan un correcto funcionamiento del programa cuando se ejecute. Lo mejor es que cuando se cree el objeto de clase instrucción, se lleve a cabo el análisis sintáctico y se determine si es correcto o no.

Se deben hacer depuraciones para que en ningún momento se cargue un programa que no quepa en la memoria principal del CHMaquina.

La idea es luego de tener el modelamiento de los datos terminado, iniciar con el análisis de cómo debe ser el funcionamiento del compilador y como posteriormente debe ejecutar los programas que se hayan compilado correctamente.

El cronograma tentativo del desarrollo del proyecto será el siguiente:

Semana 1:

Estudio Preliminar:

Análisis general del problema e investigación del lenguaje más apropiado para desarrollarlo.

Planeación:

Planeación de tiempo que serán utilizados para el desarrollo de cada componente. Se distribuirá según la complejidad e importancia dentro del proyecto.

Desarrollo de la interfaz grafica:

Luego de analizar cuál es el lenguaje de programación más adecuado, crearemos una interfaz gráfica que cumpla con todas las especificaciones requeridas.

Semana 2:

Desarrollo del compilador:

Desarrollar la aplicación para que compile todos los programas en lenguaje CHMaquina y nos muestre los errores que este pueda tener, se desarrollara un aplicación aparte de la interfaz gráfica ya desarrollada, para no preocuparnos por eso por el momento.

Semana 3:

Continuación del desarrollo del compilador.

Integración del compilador con la interfaz grafica:

Luego de terminar con el desarrollo del compilador, procederemos a unificarlo con la interfaz grafica desarrollada en la primera semana, dando los detalles finales a la CHMaquina.

Semana 4:

Control de calidad:

En el control de calidad, analizaremos que cumpla con todas las especificaciones requeridas.

Documentación:

Desarrollo de manual de usuario del CHMaquina.