martes, 5 de octubre de 2010

Divisiones de la memoria de un proceso

Ejemplo: Dos usuarios en Unix, utilizando el programa LS para listar archivos
Esto genera dos programas distintos pero comparten el segmento de texto (Código de programa)
Un programa encuentra en el estado ejecutado(Running) cuando está haciendo uso del procesador
Después de permanecer ene estado running durante un periodo de tiempo, el S.O. conmuta a otro proceso, quedando el anterior en estado Ready, es decir, para ser ejecutado próximamente
La conmutación entre procesos la realiza una parte del S.O. denominado Scheduler(Organizador) y la selección del proceso al cual se conmuta se utiliza realizando un algoritmo denominado algoritmo scheduling o planificación

Un proceso se bloquea cuando no puede continuar su ejecución, generalmente se produce cuando espera por datos en su entrada y aun no están disponibles. Por ejemplo, el intérprete de comandos (Shell) permanece bloqueado hasta que el usuario ingresa un crew.



Para administrar procesos el S.O. mantiene por cada uno de ellos, una estructura de datos, denominada PCB (Process Control Block) la cual contiene informacion de los recursos utilizados por el usuario

Sistemas Operativos// Procesos

Proceso es el nombre con el que se denomina la ejecución de un programa individual, representado por una serie de instrucciones que el procesador debe ejecutar. La mayoría de los sistemas operativos modernos basan toda su estructura alrededor de este concepto. Tres requisitos fundamentales que debe seguir todo S.O.
En relación a los procesos:

- El S.O. debe intercalar la ejecución de la ejecución de un conjunto de procesos para maximizar la utilización del procesador ofreciendo a la vez un tiempo de respuesta razonable

-El S.O. debe asignar los recursos a los procesos en conformidad con una política especifica (por ejemplo, ciertas funciones o aplicaciones son de prioridad más alta) evitando al mismo tiempo el interbloqueo que se presenta cuando dos o más procesos se bloquean mutuamente y de manera permanente debido a algún factor externo como puede ser la espera de un recurso físico

- El S.O. podría tener que dar soporte a la comunicación entre procesos y la creación de procesos por parte del usuario, labores que pueden ser de ayuda en la estructuración de aplicaciones

viernes, 1 de octubre de 2010

Interfaz

Interfaz de programación de aplicaciones

Una interfaz de programación de aplicaciones o API (del inglés application programming interface) es el conjunto de funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Son usados generalmente en las bibliotecas.

 Características

Una interfaz de programación representa una interfaz de comunicación entre componentes de software. Se trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso a ciertos servicios desde los procesos y representa un método para conseguir abstracción en la programación, generalmente (aunque no necesariamente) entre los niveles BURBLE BURLBLEEE o capas inferiores y los superiores del software. Uno de los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el trabajo de programar todo desde el principio. Las APIs asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementación de esa API.
Por ejemplo, se puede ver la tarea de escribir "Hola Mundo" sobre la pantalla en diferentes niveles de abstracción:
  1. Haciendo todo el trabajo desde el principio:

    1. Traza, sobre papel milimetrado, la forma de las letras (y espacio) "H,o, l, a,M,u, n, d, o".
    2. Crea una matriz de cuadrados negros y blancos que se asemeje a la sucesión de letras.
    3. Mediante instrucciones en ensamblador, escribe la información de la matriz en la memoria intermedia ("buffer") de pantalla.
    4. Mediante la instrucción adecuada, haz que la tarjeta gráfica realice el volcado de esa información sobre la pantalla.
  2. Por medio de un sistema operativo para hacer parte del trabajo:

    1. Carga una fuente tipográfica proporcionada por el sistema operativo.
    2. Haz que el sistema operativo borre la pantalla.
    3. Haz que el sistema operativo dibuje el texto "Hola Mundo" usando la fuente cargada.
  3. Usando una aplicación (que a su vez usa el sistema operativo) para realizar la mayor parte del trabajo:

    1. Escribe un documento HTML con las palabras "Hola Mundo" para que un navegador Web como Google Chrome, Mozilla, Firefox, Opera o Internet Explorer pueda representarlo en el monitor.
Como se puede ver, la primera opción requiere más pasos, cada uno de los cuales es mucho más complicado que los pasos de las opciones siguientes. Además, no resulta nada práctico usar el primer planteamiento para representar una gran cantidad de información, como un artículo enciclopédico sobre la pantalla, mientras que el segundo enfoque simplifica la tarea eliminando un paso y haciendo el resto más sencillos y la tercera forma simplemente requiere escribir "Hola Mundo". Sin embargo, las APIs de alto nivel generalmente pierden flexibilidad; por ejemplo, resulta mucho más difícil en un navegador web hacer girar texto alrededor de un punto con un contorno parpadeante que programarlo a bajo nivel. Al elegir usar una API se debe llegar a un cierto equilibrio entre su potencia, simplicidad y pérdida de flexibilidad.

La interfaz gráfica de usuario, conocida también como GUI  es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.
Habitualmente las acciones se realizan mediante manipulación directa, para facilitar la interacción del usuario con la computadora. Surge como evolución de los intérpretes de comandos que se usaban para operar los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplos de interfaz gráfica de usuario, cabe citar los entornos de escritorio Windows, el X-Window de GNU/Linux o el de Mac OS X, Aqua.
En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático.

La Interfaz Textual de Usuario, por su acrónimo en inglés de Text User Interface (TUI), es un tipo de interfaz gráfica que utiliza solo texto ASCII para dibujar las ventanas, botones y decoraciones.
Para competir con la interfaz gráfica de usuario, algunas líneas de comando hacen uso exhaustivo de toda la pantalla, con todos los colores o tonos y posibilidades de posicionamiento que ofrece el periférico (ver, por ejemplo, los navegadores Lynx y W3m, el particionador de discos "cfdisk", etc.). El administrador de archivos Midnight Commander es un ejemplo de optimización, pues su funcionalidad no deja nada que desear comparado con un administrador de ficheros gráfico, pero sólo necesita una ventana de texto para su funcionamiento. Se ha acuñado el término interfaz textual de usuario (text user interface), para referirse a las interfaces que usan sólo el modo texto, pero exhaustivamente, para su funcionamiento. Los programas que usan TUI pueden tener menúes, ventanas y cursores del mouse, pero todo representado por medio de texto (para su programación en ambiente GNU/Linux, ver Ncurses). En ese sentido, CLI y TUI no es lo mismo, aunque ambos usan el mismo periférico.

S.O. con maquina virtual

Presenta una interfaz a cada proceso mostrando una maquina real subyacente
Ejemplo: Virtual box

S.O. de red son aquellos que tiene la capacidad de interactuar con S.O. en otras maquinas por medio de un medio de transmision. El PTO crucial es que el usuario debe conocer la ubicacion de los recursos que desea acordar

S.O. distribuidos abarcan lso servicios de red logrando integrar recursos en una sola maquina a la que el usuario accede de forma transparente

Capas de un S.O.

Programas de usuario
Shell(Interprete de comandos)
Funcion de liberia estandar
k      e      r      n      e      l
H      a      r      d      w      a      r      e

S.O. Monoliticos

-Construccion del programa final, a base de modulos compilados separadamente que se unen a través del enlazador (o linicer)
-Buena definicion de parametros de enlace entre las distintas rtinas existentes, lo que puede provocar mucho acoplamiento
-Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos del ordenador como memoria, disco, etc
-Generalemente estan hechos a medida, por lo que son eficientes y rapidos en su ejecucion y gestion pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo u otro tipo de aplicaciones

Sistema de proteccion

Ha de proteger los recursos asginados a mi proceso, evitando a sus segmentos de memoria o ecrituras en zonas del disco que el tenga en uso. ademas ha de evitar que los erroes en un subsistema que esta funcionando de firma incorrecta afecten al resto del sistema.


Administrador de redes
-La msision fundamental de estemodulo es el control del flujo de informaciondentro de la red en lo que afecta al propio sistema


Tipos de S.G.
-Clasificacion de estructura: Monoliticos, con capas, maquina virtual
-Clasificacion de servicios ofrecidos: Monousuario, monotarea, multiusuario, multitarea, monoproceso y multiproceso.
-Clasificaciones por soporte a lo servicios:
--Sistemas operativos de red
--Sistemas distribuidos
--Sistema operativo monopuesto