miércoles, 27 de octubre de 2010

Organización física

Sabemos que la memoria del ordenador se organiza en al menos 2 niveles: La memoria principal y la memoria secundaria. La tarea de mover información entre 2 niveles de memoria es responsabilidad del S.O.

Organizacion lógica

La mayoría de los programas se organizan en módulos. El S.O. y el hardware del ordenador pueden tratar de forma efectiva los programas del usuario y de los datos en forma de módulos de algún tipo, se conseguirá una serie de ventajas tales como:
1-los módulos pueden escribirse y complicarse independientemente mientras que el sistema resuelve durante la ejecución todas las referencias de un módulo a otro
2-Con un escaso coste adicional, pueden otorgarse distintos grados de protección a los distintos módulos
3-se pueden introducir mecanismos por medio de los cuales los procesos pueden compartir los módulos. La ventaja de compartir el que se corresponde con la visión del problema que tiene el usuario y, por lo tanto, es fácil para el usuario especificar el compartimiento que desea

martes, 26 de octubre de 2010

Requisitos de la gestion de memoria

-Reubicación la memoria principal se ubica generalmente compartida por varios procesos. En general, el programador no puede conocer por adelantado que estos programa. El S.O. tiene que conocer la ubicación de la información de control del proceso y de la pila de ejecución así como el punto de partida para comenzar la ejecución del programa para dicho procesador, ya que el S.O. gestiona la memoria y es responsable de traer el proceso a la memoria principal.
-Protección cada proceso debe protegerse contra inferencias no deseadas de otros procesos, sean accidentales o intencionadas. El código de un proceso no puede hacer referencias a posiciones de memoria de otros procesos, con fines de lectura o escritura, sin permiso. Puesto que se desconoce la ubicación de un programa en la memoria principal, es imposible comprobar las direcciones absolutas durante la compilación.
Así todas las referencias a la memoria generadas por un proceso. Deben comprobarse durante la ejecución para asegurar que sólo hacen referencia al espacio de memoria, estimado a dicho proceso, y los mecanismos que respaldan también forman parten básica del cumplimiento de las necesidades de protección

GESTION DE MEMORIA

La labor de gestión de memoria consiste en llevar un registro de las partes de memoria que se estan utilizando y aquellos que no, con el fin de asignar espacio en memoria a los procesos cuando estos la necesiten y el disco en los casos en los que la memoria principal no le pueda dar capacidad los porcesos que tienen necesidad de ello.

viernes, 22 de octubre de 2010

Algoritmo de rueda: ROUND-ROBIN

-La asignación de tiempos de ejecución a los procesos se realiza de forma secuencial
-A cada proceso se le asigna el mismo quantum o intervalo de tiempo de ejecución
Ciclo de llegada/Ciclo de CPU/Ciclo inicial/ Ciclo final
a/ 0 4 1 4
b/ 2 6 5 14
c/ 4 4 9 12

viernes, 8 de octubre de 2010

planificador

Planificador


El planificador (o scheduler en inglés) es un componente funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.

Tipos de Algoritmos



- Algoritmo de rueda:
También llamado Round-Robin y en el la asignacion de tiempos de ejecucion a los proceoss es la misma y de forma secuencial. A cada uno se le asigna el mismo Quantum o intervalo de tiempo de ejecución. Los procesos se realizan mediante una cola FIFO (el primero en entrar es el primero en salir o ser servido).

- Algoritmo FCFS:
(First Come First Serve) Los ciclos de UCP vinculados a cada proceso se asigna en función de una cola FIFO. Al primer proceso que llega se le asigna tiempos o ciclos de UCP hasta que termine completamente.

- Algoritmo STR:
(Short Time Remainder)  Este tipo de algoritmo permite asignar el tiempo de ejecución de forma prioritaria a los procesos mas cortos con el fin de ejecutarlos en el menor tiempo posible. Así si se está ejecutando un proceso y llega otro, independientemente de la duración que tenga el nuevo, interrumpirá el que este en ejecución y el siguiente en consumir ciclos de UCP.

- Algoritmo SRTF:
Variedad STR donde la asignación de ciclos de UCP va en función del proceso que tenga menos ciclos pendientes de terminar. Cuando llega un nuevo proceso, se estiman los ciclos que le quedan tanto al proceso en ejecución como a los que legan después.

Actividad

Definicion de planificador
tipos de algoritmos de planificacion
explicar como isntalar un S.O. con maquina virtual
dudas

Exclusion mutua/Interbloqueo/Inanicion

Es un mecanismo empleado en el diseño de los S.O. para evitar lso problemas de competencia por recursos. se basa en definir una zona o región critica la cual esta marcada por las instrucciones  hacen uso de trecuros o recursos por los que se presenta  la competencia (recurso critico) existen diferentes metodos de aplicaion de la exclusión mutua tanto por hardware como software

Interbloqueo: este problema se presenta cuando dos o mas procesos se bnloquean mutuamente a la erspera de un recurso critico  y esta situacion se mantiene de manera permanente

Inanición:se presenta cuando un proceso nunca logra acceder a un recurso critico y por tanto, no pueda continuar con su normal ejecución

Finalizacion de un proceso

Un proceso puede finalizar por varias razones
-El proceso ejecuta su ultima instruccion y le pide al S.O. que lo borre o ejecuta la llamada al sistema exit (). En ambos casos, el sistema operativo. Libera los recursos utilizados por el
-El proceso padre puede finalizar la ejecucion del proceso hijo
-El S.O. finaliza el proceso hijo, si ya finalizo el proceso padre
--------------------------------------------------------------------
Comunicacion entre procesos
-El S.O. nos provee de mecanismos para que los procesos puedan intercomunicarse. La comunicación se puede realizar utilizando o no almacenamiento compartido: Se comparte algún medio de almacenamiento entre ambos procesos, como un archivo variable o buffer. Ambos procesos pueden leer y escribir el recurso compartido----> Problemas concurrencia

Operaciones con procesos

Generalmente el S.O.nos provee alguna forma para crear procesos, como por ejemplo mediante llamadas al sistema. Los procesos se identifican en el sistema como un nº llamado identificador de procesos (PIP), el cual es unico para cada proceso
Ejemplos de creación de procesos de Linux:
-Fork() -Crea un proceso hijo (Creado) identico al padre (Creador)
-Getpid()- obtiene su propio identificador de proceso
-Execve()- Ejecuta un programa, sobreescribe los segmentos de texto, datos y stack del proceso llamante con el programa a ejecutar si tiene exito, esta funcion no retorna
-Waitpid()- Espera hasta que finaliza el proceso hijo

miércoles, 6 de octubre de 2010

PCB

Para administrar procesos, el S.O. mantiene por cada uno de los procesos una estructura de datos denominada PCB la cual tiene informacion de los recursos utilizados por el proceso
Alguno de los datos contenidos en una estructuar seran:
-Registros del procesador
-Program counter y stack pointer
-Tiempo utilizo el procesador
-Identificador de proceso (PID)
-ETC

Existe la posibilidad de que, dentro de un proceso, existan varios hilos de ejecucion cada uno con su PC, conjunto de recursos del procesador y segmento de st
ack, pero comparten con los demas hilos de ejecucion el segmenyo de datos, el segmento del texto recursos del sistema y el PCB tambien se denominan threads o lightweight process

Ciclos de vida de un proceso:
El mas sencillo (y limitado)-->ejecutandose/no ejecutandose

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