martes, 28 de mayo de 2013
Competencia e Interaccion - Soluciones por Software
Competencia e Interaccion
Competencia y Soluciones por Software
lunes, 27 de mayo de 2013
Conclusión Sobre Las Exposiciones
A
lo largo de este semestre nos fueron asignadas varias exposiciones para poder
llegar a abordar algunos de los temas relativos a la materia. Algunos se
tornaron complejos y confusos en cuanto a la información que se quería
trasmitir pero hay que recalcar que el esfuerzo de los grupos por hacer
digerible el tema y que ese conocimiento que se adquirió en la elaboración de
las exposiciones, fuera absorbido correctamente por quienes asistimos a las
mismas fue notorio. Me pareció muy importante el apoyo que brindo el profesor a
lo largo de las exposiciones, ya que si en algún momento precisamente por lo
complejo o confuso del tema, se perdía el hilo o se confundía el temario o información
a trasmitir, inmediatamente el encaminaba la exposición para que los conceptos
e información fueran correctos y acordes con el tema asignado, exponiéndolos en
su rol de maestro pero de una manera entendible para nosotros los alumnos.
Algo
que me gusto bastante fue la manera de
liberar las tenciones que se generan previamente a la exposición, como todos
sabemos no es fácil ser expositor, estar enfrente a nuestros compañeros y
tratar de trasmitir conocimientos respecto a un tema que puede ser algo
complejo y nuevo lo hace aún más difícil, pero a través de los juegos y actividades que
se realizaron nos preparamos mentalmente para lo que explicaríamos.
Conclusiones Generales del Curso
Al
momento de comenzar la materia fue bastante la expectativa que se generó
entorno a la misma. El nombre de sistemas operativos me hizo pensar que los
temas que veríamos, serian temas relacionados con las distintas funciones y
recursos que brindan los que existen hoy en día y con los cuales estamos
acostumbrados a interactuar, creo que fue algo en lo que con todos mis
compañeros de curso concordamos.
Ya
al iniciar las clases y analizar los temas de la misma nos fuimos dando cuenta que si en algún
momento se habla de estos no es para nada en sus configuraciones, o en las
bondades que estos brindan, se va mas allá con la materia y se ve la relevancia
de la misma para nosotros como futuros ingenieros, conocer como es realmente la
estructura interna, la importancia de los recursos de hardware presentes en un
computador y las relaciones y ajustes que se deben realizar a los mismos para
tener un sistema operativo optimo y que cumpla con la función esperada por un
usuario, siendo esta la de servir como una interfaz veloz entre este y los
programas y los distintos procesos que queremos ejecutar en un computador.
Gracias a esta materia puedo decir que conozco un computador internamente en
cuanto a toda la serie de algoritmos y distintas técnicas complejas y sencillas
que se deben tener en cuenta para llegar a diseñar un sistema operativo y que
este pueda cumplir satisfactoriamente su objetivo, facilitarle el uso del
computador en todo su potencial a los usuarios.
domingo, 26 de mayo de 2013
Particiones Fijas y Dinamicas
Particiones Fijas
Consiste en dividir la memoria libre en varias partes de igual o diferentes tamaños. cuando se tiene una particion fija de partes iguales encontramos dos problemas:
Particiones Dinamicas
Este método consiste en particiones de memoria de tamaños variable, o sea, a cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta y ni un poco más). Tras el ingreso de nuevos procesos y la expulsión de otras, se generarán huecos de memoria inutilizados. Conforme pasa el tiempo, la memoria comienza a estar más fragmentada y su rendimiento decae; este fenómeno se denomina fragmentación externa.
Una técnica para superar la fragmentación externa es la compactación. De vez en cuando, el sistema operativo desplaza los procesos para que estén contiguos de forma que toda la memoria libre quede junta en un bloque. Las dificultades que presenta la compactación son:
Consiste en dividir la memoria libre en varias partes de igual o diferentes tamaños. cuando se tiene una particion fija de partes iguales encontramos dos problemas:
- Un programa que sea demasiado grande para caber en la particion, de presentarse esta situacion el programador debe realizar el diseño del programa utilizando superposiciones para que solo una parte del programa este en memoria principal. Cuando se necesita un modulo que no esta presente el programa del usuario debe cargar dicho modulo en la particion del programa superponiéndose a los programas y datos que se encuentren en ella.
- El uso de memoria es ineficiente. Cualquier programa sin importar que tan pequeño sea ocupara una particion completa, suponiendo que se carga un programa de 120k y la particion a donde va es de 520k, se malgasta el espacio interno de la particion generando algo denominado fragmentacion interna.
Si se tienen particiones de igual tamaño y todas las particiones estuvieran con procesos que no estan listos para ser ejecutados y es necesario cargar un nuevo proceso, se debe determinar que particion debe ser expulsada llamando esta accion como una decisión de planificación.
Cuando son particiones con distintos tamaños, se debe definir en que particion se cargara el nuevo proceso, una forma simple de realizar esto es asignar cada proceso a la particion mas pequeña en que quepa, necesitando esto una cola de expulsados para cada particion, tambien se podria asignar al proceso a la particion mas pequeña entre aquellas que estan libres (utilizando una unica cola para todos los procesos), si todas las particiones estan ocupadas, se debe tomar una decision de intercambio. Con la paginacion fija se hace una suposición de que se conoce la cantidad máxima de memoria que necesitara un proceso, lo que no siempre es cierto.
Particiones Dinamicas
Este método consiste en particiones de memoria de tamaños variable, o sea, a cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta y ni un poco más). Tras el ingreso de nuevos procesos y la expulsión de otras, se generarán huecos de memoria inutilizados. Conforme pasa el tiempo, la memoria comienza a estar más fragmentada y su rendimiento decae; este fenómeno se denomina fragmentación externa.
Una técnica para superar la fragmentación externa es la compactación. De vez en cuando, el sistema operativo desplaza los procesos para que estén contiguos de forma que toda la memoria libre quede junta en un bloque. Las dificultades que presenta la compactación son:
- Es un procedimiento que consume tiempo de trabajo del procesador
- Debe realizarse los movimientos de una región a otra, sin invalidar las referencias a memoria del programa
- Mejor ajuste (Best-fit): se elige el bloque con el tamaño más parecido al del proceso entrante.
- Primer ajuste (First-fit): comienza recorriendo la memoria desde el comienzo y escoge el primer bloque disponible en el que entre el proceso entrante.
- Siguiente ajuste (Next-fit): recorre la memoria desde el lugar de la última ubicación y elige el siguiente bloque disponible que sea suficientemente grande.
- Peor ajuste (Worst-fit): elige el bloque más grande posible.
Segmentacion de Memoria
La segmentacion de memoria consiste en dividirla en segmentos, cada uno de los cuales tiene una longitud variable, este esta definido por el tamaño de ese segmento del programa. Podriamos definir tambien la segmentacion como el programa y sus datos asociados a estos conjuntos de segmentos los cuales pueden ser de distinta longitud pero siempre con la condicion que debe existir un maximo tamalo de segmento.
Una direccion logica en segmentacion se divide en dos partes S y D donde S es el en numero de segmento y D el desplazamiento dentro del segmento.
Para cada uno de los segmentos es guardado una entrada en la tabla de segmentos la cual contendra los campos numero de segmento, base y longitud, a continuacion se muestra una grafica en la cual podemos analizar la traduccion de direcciones S,D a direcciones fisicas o reales:
imagen tomada de: http://es.scribd.com/doc/2879619/25/Requisitos-para-la-gestion-de-memoria
Objetivos de la segmentacion de memoria
imagen tomada de: http://www.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria
fuentes consultadas: http://www.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria
http://es.scribd.com/doc/2879619/25/Requisitos-para-la-gestion-de-memoria
Una direccion logica en segmentacion se divide en dos partes S y D donde S es el en numero de segmento y D el desplazamiento dentro del segmento.
Para cada uno de los segmentos es guardado una entrada en la tabla de segmentos la cual contendra los campos numero de segmento, base y longitud, a continuacion se muestra una grafica en la cual podemos analizar la traduccion de direcciones S,D a direcciones fisicas o reales:
imagen tomada de: http://es.scribd.com/doc/2879619/25/Requisitos-para-la-gestion-de-memoria
Objetivos de la segmentacion de memoria
- Modularidad de programas: cada runtina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
- Estructuras de largo variable: donde cada estructura tiene su propio tamaño y este puede variar
- El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
- Es posible compilar módulos separados como segmentos, el enlace entre los segmendos puede suponer hasta tanto se haga una referencia de segmentos.
- Facil comparticion de los segmentos
- Los segmentos crecen dinamicamente segun las necesidades del programa en ejecucion.
- Incremento en los costos de HW y SW
- Al tener los segmentos un tamaño variable se pueden presentar problemas de fragmentacion externo, lo que amerita un plan de reubicacion de segmentos en memoria principal.
imagen tomada de: http://www.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria
fuentes consultadas: http://www.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria
http://es.scribd.com/doc/2879619/25/Requisitos-para-la-gestion-de-memoria
Paginacion de Memoria
Paginacion
Esta tecnica de gestion de memoria consiste en la division de los programas que se ejecutan en pequeñas partes o paginas, asi como la memoria tambien es dividida en trozos o fragmentos fisicos de igual tamaño denominados marcos de pagina, los programas son divididos en unidades logicas, de esta manera de carga una pagina de informacion en cualquier marco de pagina, la relevancia de los mecanismos de paginacion es que gracias a estos se permite una correcta correspondencia entre las direcciones virtuales que son dadas por los programas y las direcciones reales de memoria que sean referenciadas.
Para poder tener el control de las paginas generadas se debe mantener una tabla en memoria denominada mapa de pagina, esta se genera para cada uno de los procesos. Cada pagina tiene un numero que se utiliza como indice en la tabla de paginas, lo que da por resultado el numero del marco correspondiente a esa pagina virtual. Si el bit presente/ausente es 0, se provoca un señalamiento denominado trap hacia el sistema operativo. si el bit es 1, el numero de marco de pagina que aparece en la tabla de pagina se copia en los bits de mayor orden del resgitro de salida. A continuacion una grafica de como es el proceso de paginacion de memoria.
imagen tomada de: http://wwwdi.ujaen.es/~lina/TemasSO/ADMINISTRACIONDELAMEMORIA/5.1Paginacion.htm
imagen tomada de: http://wwwdi.ujaen.es/~lina/TemasSO/ADMINISTRACIONDELAMEMORIA/5.1Paginacion.htm
Caracteristicas:
- El espacio de direcciones lógico de un proceso puede ser no contiguo
- Se divide la memoria física en bloques de tamaño fijo llamados marcos(frames).
- Se divide la memoria en bloques de tamaño llamados paginas.
- se mantiene información den los marcos libres.
- para correr un programa de N paginas de tamaño, se necesitan encontrar N marcos y cargar.
- Se puede comenzar a ejecutar un programa cargando solo una parte del mismo en memoria, el resto se cargara bajo solicitud.
- No hay necesidad de que las paginas esten contiguas en memoria, por lo que no se necesitan procesos de compactacion cuando existen marcos de paginas libres dispersos en la memoria.
- Es facil controlar todas las paginas, ya que tienen el mismo tamaño.
Desventajas
- Se deben reservar areas de memoria para las PMT de los procesos,. Al no ser fijo el tamaño de estas, se crea un problema smejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u "overhead" dekl procesador).
- Aumento en los costos de HW y SW por la nueva informacion que debe manejarse y el mecanismo de traduccion de direcciones necesario. Se consumen muchos mas recursos de memori, tiempo en el procesador para su implantación.
sábado, 25 de mayo de 2013
Gestion de Memoria II
GESTION DE MEMORIA
Es asi como se denomina a la forma o manera de realizar el manejo de la memoria de un dispositivo informatico. consiste en proveer los mecanismos necesarios para ir asignando las secciones de memoria segun como sean necesitadas por los programas, y de la misma forma llegar a liberar aquellas que no esten siendo utilizadas para que puedan estar disponibles para los otros programas. Cuando estamos asignando memoria a un programa hacemos referencia en algunos sistemas operativos a "Allocate" cuyo significado es asignar. Esta tarea de asignacion de memoria es una de las de mayor importancia a realizar por los sitemas operativos.
REQUISITOS PARA LA GESTION DE MEMORIA
Cuando hablamos de gestion de memoria para sistemas operativos multitarea, esta debe realizar las siguientes tareas:
REASIGNACION O REUBICACION
Al tratarse de un sistema operativo multitarea la memoria que se encuentra disponible esta siendo compartida por varios procesos los cual lleva a la memoria a poder descargar y cargar los procesos activos en memoria.
Cuando un proceso haya sido descargado al almazenamiento secundario, sera preciso conocer si cuando ese proceso vuelva a ser cargado debe situarse en la misma region de memoria principal en la que estaba anteriormente o bien puede situarse en posiciones diferentes a las que tenia en el instante de ser descargado.
PROTECCION
Los procesos no deberían poder referenciar la memoria de otros procesos sin permiso, para evitarlo existe la protección de memoria, que evita que código malicioso o erróneo de un programa interfiera con la operación de otros programas en ejecución.
ORGANIZACION LOGICA
La memoria de los programas es organizada en modulos, algunos modificables y otros no.
Si se llega a tratar de forma efectiva los programas ejecutados por el usuario y aquellos datos que este necesite se pueden obtener las siguientes ventajas:
- Los modulos pueden escribirse y compilarse y compilarse independientemente
- Se pueden introducir ciertos mecanismos a traves de los cuales los procesos pueden compartir modulos
- Se garantiza al usuario una parte o porcion de la memoria cuanta sea necesaria.
La memoria suele dividirse en un almacenamiento primario de alta velocidad y uno secundario de menor velocidad. La gestión de memoria del sistema operativo se ocupa de trasladar la información entre estos dos niveles de memoria.
lunes, 20 de mayo de 2013
Gestion de Memoria
PROCESO DE CARGA
INTRODUCCIÓN:
PARA LLEGAR A CREAR UN PROCESO Y QUE ESTE SE CONSIDERE ACTIVO
ES NECESARIO CARGAR UN PROGRAMA EN LA MEMORIA PRINCIPAL, CREANDO ENTONCES UNA
IMAGEN DEL PROCESO, UBICÁNDOLA EN EL BCP O BLOQUE DE CONTROL DE PROCESOS, ESTO
LO QUE NOS QUIERE DECIR EN TÉRMINOS MENOS TÉCNICOS ES PODER CONVERTIR UN
ARCHIVO QUE ESTÁ ALOJADO EN EL DISCO DURO EN UNA SERIE DE INSTRUCCIONES QUE
PUEDAN SER LEÍDAS E INTERPRETADAS POR EL PROCESADOR. RECORDEMOS LA IMPORTANCIA DEL BCP, SIENDO
ESTE ES UN REGISTRO ESPECIAL DONDE EL SISTEMA OPERATIVO AGRUPA TODA LA
INFORMACIÓN QUE NECESITA CONOCER RESPECTO A UN PROCESO PARTICULAR. CADA VEZ QUE
SE CREA UN PROCESO EL SISTEMA OPERATIVO CREA EL BCP CORRESPONDIENTE PARA QUE
SIRVA COMO DESCRIPCIÓN EN TIEMPO DE EJECUCIÓN DURANTE TODA LA VIDA DEL PROCESO.
(DEFINICIÓN BCP TOMADA DE:
HTTP://ES.WIKIPEDIA.ORG/WIKI/BLOQUE_DE_CONTROL_DEL_PROCESO)
CARGA
ES POR MEDIO DE ESTE PROCESO QUE EL MODULO ES LLEVADO A LA
MEMORIA PRINCIPAL, SIENDO UBICADO EN LA POSICIÓN X, CUMPLIENDO CON CONDICIONES
PARA ESTO. LA CARGA DE ARCHIVOS SE PUEDE REALIZAR DE TRES MANERAS:
• CARGA ABSOLUTA
• CARGA
REUBICABLE
• CARGA DINÁMICA
EN TIEMPO DE EJECUCIÓN
CARGA ABSOLUTA:
ESTE TIPO DE CARGA CONSISTE EN QUE EL MÓDULO DE CARGA OCUPARA
SIEMPRE LA MISMA POSICIÓN EN LA MEMORIA PRINCIPAL, ESTA POSICIÓN ES DEFINIDA
POR EL PROGRAMADOR EN EL COMPILADOR O EN EL ENSAMBLADOR. DE AHÍ QUE ESAS
DIRECCIONES EN MEMORIA DEBEN SER ESPECÍFICAS O ABSOLUTAS.
MODULO:
EN COMPUTACIÓN, UN MÓDULO CARGABLE DEL NÚCLEO ES UN ARCHIVO
QUE CONTIENE CÓDIGO OBJETO QUE PUEDE EXTENDER EL NÚCLEO EN EJECUCIÓN (TAMBIÉN
LLAMADO NÚCLEO BASE) DE UN SISTEMA OPERATIVO. LA MAYORÍA DE LOS SISTEMAS ESTILO
UNIX, Y MICROSOFT WINDOWS, SOPORTAN MÓDULOS CARGABLES EN EL NÚCLEO, AUNQUE
SUELEN UTILIZAR DISTINTOS NOMBRES PARA ELLOS, COMO "EXTENSIÓN DEL
NÚCLEO" EN MAC OS X.
LOS MÓDULOS CARGABLES EN EL NÚCLEO SON GENERALMENTE
UTILIZADOS PARA BRINDAR SOPORTE A NUEVOS DISPOSITIVOS DE HARDWARE Y SISTEMA DE
ARCHIVOS, ASÍ COMO PARA AGREGAR LLAMADAS AL SISTEMA. CUANDO LA FUNCIONALIDAD
PROVISTA POR UN MÓDULO DEL NÚCLEO DEJA DE SER REQUERIDA, NORMALMENTE ÉSTE PUEDE
SER DESCARGADO, LIBERANDO SU MEMORIA.
UN EJEMPLO TÍPICO DE MÓDULO CARGABLE SON LOS CONTROLADORES DE
DISPOSITIVO.
COMPILADOR:
UN COMPILADOR ES UN PROGRAMA INFORMÁTICO QUE TRADUCE UN
PROGRAMA ESCRITO EN UN LENGUAJE DE PROGRAMACIÓN A OTRO LENGUAJE DE
PROGRAMACIÓN, GENERANDO UN PROGRAMA EQUIVALENTE QUE LA MÁQUINA SERÁ CAPAZ DE
INTERPRETAR. USUALMENTE EL SEGUNDO LENGUAJE ES LENGUAJE DE MÁQUINA, PERO
TAMBIÉN PUEDE SER UN CÓDIGO INTERMEDIO (BYTECODE), O SIMPLEMENTE TEXTO. ESTE
PROCESO DE TRADUCCIÓN SE CONOCE COMO COMPILACIÓN.
UN COMPILADOR ES UN PROGRAMA QUE PERMITE TRADUCIR EL CÓDIGO
FUENTE DE UN PROGRAMA EN LENGUAJE DE ALTO NIVEL, A OTRO LENGUAJE DE NIVEL
INFERIOR (TÍPICAMENTE LENGUAJE DE MÁQUINA). DE ESTA MANERA UN PROGRAMADOR PUEDE
DISEÑAR UN PROGRAMA EN UN LENGUAJE MUCHO MÁS CERCANO A COMO PIENSA UN SER
HUMANO, PARA LUEGO COMPILARLO A UN PROGRAMA MÁS MANEJABLE POR UNA COMPUTADORA.
ENSAMBLADOR:
TIPO DE PROGRAMA INFORMÁTICO QUE SE ENCARGA DE TRADUCIR UN
FICHERO FUENTE ESCRITO EN UN LENGUAJE ENSAMBLADOR, A UN FICHERO OBJETO QUE
CONTIENE CÓDIGO MÁQUINA, EJECUTABLE DIRECTAMENTE POR EL MICROPROCESADOR.
FUNCIONAMIENTO
EL PROGRAMA LEE EL FICHERO ESCRITO EN LENGUAJE ENSAMBLADOR Y
SUSTITUYE CADA UNO DE LOS CÓDIGOS NEMOTÉCNICOS QUE APARECEN POR SU CÓDIGO DE
OPERACIÓN CORRESPONDIENTE EN SISTEMA BINARIO PARA LA PLATAFORMA QUE SE ELIGIÓ
COMO DESTINO EN LAS OPCIONES ESPECÍFICAS DEL ENSAMBLADOR.
CARGADOR:
DEFINIDO COMO UN PROGRAMA ESPECIAL DEL SISTEMA OPERATIVO EL
CUAL SE ENCARGA DE UBICAR EN LA MEMORIA LASINSTRUCCIONES O DATOS DE UN PROGRAMA
ESPECIFICO EL CUAL SE ENCUENTRA CODIFICADO EN LENGUAJE MAQUINA, PARA ENTONCES
ESTA PUEDA SER PROCESADA.
CARGA ABSOLUTA:
ESTE TIPO DE CARGA CONSISTE EN QUE EL MÓDULO DE CARGA OCUPARA
SIEMPRE LA MISMA POSICIÓN EN LA MEMORIA PRINCIPAL, ESTA POSICIÓN ES DEFINIDA
POR EL PROGRAMADOR EN EL COMPILADOR O EN EL ENSAMBLADOR. DE AHÍ QUE ESAS
DIRECCIONES EN MEMORIA DEBEN SER ESPECÍFICAS O ABSOLUTAS.
Suscribirse a:
Comentarios (Atom)