sábado, 28 de marzo de 2009
¿ UBUNTU ?
Ubuntu ofrece un sistema operativo Linux completo, que incluye más de 1.000 paquetes (programas) entre los cuales se incluyen Gnome (gestor de ventanas). También se incluyen las aplicaciones que se esperan en cualquier ordenador de escritorio, como procesador de texto, hoja de cálculo y navegador para Internet.
Todo esto incluido en el CD de instalación. Además, a través de Internet, tenemos acceso a más de 1.300 paquetes con soporte completo por parte de Ubuntu Linux. Con Ubuntu Linux tenemos un completo ordenador de escritorio, apto para el uso doméstico, profesional o educativo.
Ubuntu Linux asegura una nueva distribución cada 6 meses, con las últimas versiones del kernel (el núcleo del sistema operativo), del entorno gráfico (Gnome) y de las aplicaciones clave. Ubuntu Linux es una buena opción si estas buscando un sistema operativo completo, sólido y estable.
viernes, 27 de marzo de 2009
Gestión de Archivos
Es un conjunto de información relacionada que es almacenada en una unidad de almacenamiento no volátil, este posee un conjunto de características comunes (el nombre, la ubicación, la extensión) que permiten identificarlo dentro del SO.
Creación de archivos: Para hacer esto se deben realizar dos pasos. Primero se debe encontrar un espacio en el sistema de archivos y segundo se debe anotar el nuevo archivo en el directorio pasandole como entrada al directorio el nombre del archivo y su ubicación.
Escritura de archivos: Para escribir un archivo efectuamos una llamada al sistema especificando el nombre del archivo y la información que se escribirá en él. Al recibir el nombre del archivo, el sistema busca en el directorio para determinar su ubicación. La entrada del directorio tendrá que almacenar un apuntador al bloque actual del archivo (generalmente el inicial) y con este apuntador podemos calcular la dirección del siguiente bloque y escribir la información. Hay que actualizar el apuntador de escritura y así se puede escribir una serie de bloques en el archivo mediante escrituras sucesivas.
Lectura de archivos: Para leer un archivo usamos una llamada al sistema que especifica el nombre del archivo y el lugar (en memoria) donde debe colocarse el siguiente bloque, Una vez más, se busca en el directorio le entrada correspondiente y se necesitará un apuntador al siguiente bloque que se leerá. Una vez que se ha leído el bloque, se actualiza el apuntador.
Reposicionamiento de archivos: Se busca en el directorio la entrada indicada y la posición actual se modifica de manera que apunte al inicio del archivo, no es obligatorio que se lleve a cabo operaciones de entrada o salida para el re posicionamiento.
Eliminación de archivos: Para eliminar un archivo buscamos su nombre en el directorio. una vez localizado, se libera todo el espacio del archivo (para permitir que este sea usado por otro) y se invalida la entrada del directorio.
Nombre: Es el identificador del archivo consiste en una cadena de texto (codigoASCII).
Tipo: Es necesaria para el Sistema Operativo ya que con ella se identifica el programa con el que se abre el archivo.
Ubicación: Es el apuntador a la posición del archivo dentro de un dispositivo.
Tamaño: Tamaño actual del archivo: en bytes, palabras o bloques; junto con el tamaño máximo permitido.
Protección: Es el control de acceso que determina quien puede leer, escribir, ejecutar el archivo.
Hora, fecha e identificación del usuario: creación, última modificación, último uso: datos para protección, seguridad, y control de uso.
Métodos de acceso a archivos
Acceso secuencial:
Es el método mas común de acceso, la información del archivo se procesa en un orden, un registro tras otro, los programas de edición generalmente acceden a los archivos por este método.
Acceso aleatorio:
En este método no existen restricciones de acuerdo al orden de lectura o escritura, podemos ingresar directamente a un registro intermedio sin pasar por sus predecesores.
La semantica de coutilizacion es un conjunto de criterios que se toman en cuenta al momento que un archivo es solicitado por varios usuarios y se desea mostrar las actualizaciones hechas a este archivo.
- Las modificaciones a un archivo abierto son visibles de inmediato por los demás usuarios.
- El archivo tiene una sola imagen que intercala todos los accesos, sea cual sea su origen.
- Las modificaciones a un archivo abierto no son visibles de inmediato por los demás usuarios.
- Las modificaciones que sufre un archivo son visibles solo después de que se cierra un archivo.
- Su nombre no se puede reutilizar.
- Su contenido no se puede alterar.
- Se comparte con solo lectura.
Directorio de un solo nivel: Consiste en un solo directorio para todos los usuarios.
Deficiencias:
- Problemas de nombramiento.
- Problemas de agrupamiento.
Ventajas:
- Búsqueda eficiente.
- Nombre del camino - Path.
- Puede tenerse el mismo nombre de archivo para diferente usuario.
- Sin capacidad de agrupamiento.
Ventajas:
- Permite el agrupamiento a través de sub-directorios.
- Permite realizar la busqueda de forma eficiente a través de nombres de camino absolutos o relativos.
- La creación de un nuevo archivo se realiza en el directorio actual.
- La creación de un nuevo subdirectorio se realiza en el directorio actual.
- Los usuarios pueden acceder además de sus archivos, a los archivos de otros usuarios.
martes, 17 de marzo de 2009
Gestión de Memoria
La Gestión de Memoria
Es el proceso mas importante de la computadora. La parte de la computadora encargada de tratar con este recurso es el gestor de memoria, este hace puente entre los requisitos de las aplicaciones y los requerimientos de hardware, esta es la parte del sistema operativo mas encargada del hardware.
En la multiprogramacion, el sistema operatico esta encargado de proporsionar los requerimientos que necesita cada proceso de manera que crea que tiene una maquina para el solo.
El gestor de memoria con el apoyo de hardware de gestion de memoria del procesador deberá repartir el almacenamiento existente generando un espacio de memoria independiente para cada porceso de manera tal que no ocurra ina interferencia coluntaria o involuntaria de cualquier proceso,
cabe destacar que a nivel de procesador se hara un reparto en el tiempo y en la memoria se trata de un reparto en el espacio. Estas acciones combinadas ofrecen a los programas una abstraccion de procesador virtual que les independiza del resto de los procesos.
Los objetivos principales para la gestion de memorias son los siguientes:
- Ofrecer a cada proceso un espacio logico propio.
- Proporcionar proteccion entre procesos.
- Permitir a los procesos compartan memoria.
- Dar soporte a las distintas regiones del procesos.
- Maximizar el rendimiento del sistema.
- Proporcionar a los procesos mapas de memorias muy grandes.
- Espacios logicos independientes.
Un archivo ejecutable incluye referencias a memorias, estas se encuentran en tre un rango de
en este rpceso de traduccion cuando se le asigna un espacio de memoria a cada programa se realiza un proceso de traduccion donde este crea, un espacio logico (o mapa) independiente para cada proceso proyectandolo sobre la parte correspondiente de la memoria proncipal de acuerdo con una fucion de traducion:
traduccion(direccion logica)---> direccion fisica.
Dado que hay q aplicar funciones a cada una de las direcciones que genera el programa, es necesario que sea el procesador el encargado de realizar estas traduccion, la traduccion se lleva a cabo dentro de la unidad de gestion de memoria (MMU).
En algunois softwares antiguos que no disponian de hardware de traduccion, es realizar la reubicacion de las direcciones que contienen el programa en el momento de cargar la memoria. Con esta segunda solucion, no permite al programam o un fragmento del mismo se pueda mover en tiempo de ejecucion, lo cual este es un requisito de algunas de las tecnicas de gestion de memoria con la memoria virtal, ni asegura la proteccion entre procesos.
El sistema operatico al igual que otros procesos necesita del uso de la memoria, sin embargo no seria estricta la traduccion ya que el sistema operativo puede situarse de forma contigua al principio de la memoria eliminando esta necesidad.
Proteccion.
En un sistema de monoprogramamcion es necesario proteger al sistema operativo de los accesos que realiza el programa en ejecucion para evitar que, voluntaria o involuntariamente, pueda interferir en correcto funcionamiento del mismo. Para las personas que han trabajado en sistemas que un cumplan con el requisito de proteccion, como es el ejemplo de MS-DOS saben como un error en la programacion en una aplicación puede causar que todo el sistema colapse durante la ejecucion de misma con una alteracion de los datos o su estructura.
En un sistema con multiprogramacion el prblema se acentua ya que no solo hay que proteger al sistema operativo sino que tambien a los procesos entre si. Para lograr proteger estos tipos de sistema se necesita ayuda del hardware, puesto que es necesario validar cada una de las direcciones que genera el programa en tiempo de ejecucion.
Sistemas Operativos
SISTEMAS OPERATIVOS
Descripción del sistema operativo
Para que un ordenador pueda hacer funcionar un programa informático (a veces conocido como aplicación o software), debe contar con la capacidad necesaria para realizar cierta cantidad de operaciones preparatorias que puedan garantizar el intercambio entre el procesador, la memoria y los recursos físicos (periféricos).
El sistema operativo (a veces también citado mediante su forma abreviada OS en inglés) se encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones (procesador de texto, videojuegos, etcétera). Cuando un programa desea acceder a un recurso material, no necesita enviar información específica a los dispositivos periféricos; simplemente envía la información al sistema operativo, el cual la transmite a los periféricos correspondientes a través de su driver (controlador). Si no existe ningún driver, cada programa debe reconocer y tener presente la comunicación con cada tipo de periférico.
De esta forma, el sistema operativo permite la "disociación" de programas y hardware, principalmente para simplificar la gestión de recursos y proporcionar una interfaz de usuario (MMI por sus siglas en inglés) sencilla con el fin de reducir la complejidad del equipo.
Funciones del sistema operativo
El sistema operativo cumple varias funciones:
- Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado.
- Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.
- Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida).
- Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir".
- Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes.
- Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.
- Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.
Componentes del sistema operativo
El sistema operativo está compuesto por un conjunto de paquetes de software que pueden utilizarse para gestionar las interacciones con el hardware. Estos elementos se incluyen por lo general en este conjunto de software:
- El núcleo, que representa las funciones básicas del sistema operativo, como por ejemplo, la gestión de la memoria, de los procesos, de los archivos, de las entradas/salidas principales y de las funciones de comunicación.
- El intérprete de comandos, que posibilita la comunicación con el sistema operativo a través de un lenguaje de control, permitiendo al usuario controlar los periféricos sin conocer las características del hardware utilizado, la gestión de las direcciones físicas, etcétera.
- El sistema de archivos, que permite que los archivos se registren en una estructura arbórea.
Sistemas de multiprocesos
Un sistema operativo se denominade multiprocesos cuando muchas "tareas" (también conocidas como procesos) se pueden ejecutar al mismo tiempo.
Las aplicaciones consisten en una secuencia de instrucciones llamadas "procesos". Estos procesos permanecen activos, en espera, suspendidos, o se eliminan en forma alternativa, según la prioridad que se les haya concedido, o se pueden ejecutar en forma simultánea.
Un sistema se considera preventivo cuando cuenta con un programador (también llamado planificador) el cual, según los criterios de prioridad, asigna el tiempo de los equipos entre varios procesos que lo solicitan.
Se denomina sistema de tiempo compartido a un sistema cuando el programador asigna una cantidad determinada de tiempo a cada proceso. Éste es el caso de los sistemas de usuarios múltiples que permiten a varios usuarios utilizar aplicaciones diferentes o similares en el mismo equipo al mismo tiempo. De este modo, el sistema se denomina "sistema transaccional". Para realizar esto, el sistema asigna un período de tiempo a cada usuario.
Sistemas de multiprocesadores
La técnica de multiprocesamiento consiste en hacer funcionar varios procesadores en forma paralela para obtener un poder de cálculo mayor que el obtenido al usar un procesador de alta tecnología o al aumentar la disponibilidad del sistema (en el caso de fallas del procesador).
Las siglas SMP (multiprocesamiento simétrico o multiprocesador simétrico) hacen referencia a la arquitectura en la que todos los procesadores acceden a la misma memoria compartida.
Un sistema de multiprocesadores debe tener capacidad para gestionar la repartición de memoria entre varios procesadores, pero también debe distribuir la carga de trabajo.
Sistemas fijos
Los sistemas fijos son sistemas operativos diseñados para funcionar en equipos pequeños, como los PDA (asistentes personales digitales) o los dispositivos electrónicos autónomos (sondas espaciales, robots, vehículos con ordenador de a bordo, etcétera) con autonomía reducida. En consecuencia, una característica esencial de los sistemas fijos es su avanzada administración de energía y su capacidad de funcionar con recursos limitados.
Los principales sistemas fijos de "uso general" para PDA son los siguientes:
- PalmOS
- Windows CE / Windows Mobile / Window Smartphone
Sistemas de tiempo real
Los sistemas de tiempo real se utilizan principalmente en la industria y son sistemas diseñados para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener capacidad para operar en forma fiable según limitaciones de tiempo específicas; en otras palabras, debe tener capacidad para procesar adecuadamente la información recibida a intervalos definidos claramente (regulares o de otro tipo).
Estos son algunos ejemplos de sistemas operativos de tiempo real:
- OS-9;
- RTLinux (RealTime Linux);
- QNX;
- VxWorks.
Tipos de sistemas operativos
Existen varios tipos de sistemas operativos, definidos según su capacidad para administrar simultáneamente información de 16 bits, 32 bits, 64 bits o más.
Sistema | Programación | Usuario único | Usuario múltiple | Tarea única | Multitarea |
---|---|---|---|---|---|
DOS | 16 bits | X | | X | |
Windows3.1 | 16/32 bits | X | | | no preventivo |
Windows95/98/Me | 32 bits | X | | | cooperativo |
WindowsNT/2000 | 32 bits | | X | | preventivo |
WindowsXP | 32/64 bits | | X | | preventivo |
Unix / Linux | 32/64 bits | | X | | preventivo |
MAC/OS X | 32 bits | | X | | preventivo |
VMS | 32 bits | | X | | preventivo |
lunes, 16 de marzo de 2009
Procesos
Cada que hacemos doble clip en un programa generamos un proceso, que no es mas que un programa en ejecución. Cada vez que iniciamos un proceso nuestro Sistema Operativo le asigna a este una cantidad de memoria así como un tiempo de ejecución en el procesador (entre otros) lo que permite que este programa corra sin problemas, esta tarea del SO es conocida como asignación de recursos siendo esta una de las tareas primordiales del SO. El Sistema Operativo busca administrar los recursos de la computadora de forma que la computadora emplee sus recursos de la forma mas eficiente.
Un proceso puede encontrarse en 5 tipos de estados en diferentes momentos, estos estado pueden ser: en Ejecución, Listo, en Espera, Nuevo, Terminado.
Ejecución: El proceso se esta ejecutando actualmente.
Listo: El proceso esta listo para ser ejecutado, solo espera que el planificador de la señal.
Espera: El proceso no se puede ejecutar hasta que se produzca algún suceso, como una operación de entrada o salida.
Nuevo: El proceso esta recién creado y todavía no ha sido admitido por el sistema operativo. En la mayoría de estos casos este proceso el proceso no ha sido cargado en memoria.
Terminado: El proceso ha culminado su ejecución, o ha culminado por algún error.
Los sistemas operativos se pueden clasificar como monotarea y multitarea, haciendo referencia a la cantidad de procesos que puede sostener al mismo tiempo. La base de la programación multitarea se encuentra en 3 condiciones:
- Paralelismo real ente E/S y procesador.
- Alternancia en los procesos de fases de E/S y procesamiento.
- Memoria principal capaz de almacenar varios procesos.
Caracteristicas de los procesos:
Grado de multiprogramación: Se le denomina grado de multiprogramación a la cantidad de procesos que puede sostener un SO.
Jerarquía de procesos: Los procesos pueden poseer jerarquía, un proceso puede ser padre, hijo, abuelo o hermano.
Imagen de memoria: Esta no es mas que el espacio de memoria destinado para ese proceso.
domingo, 15 de marzo de 2009
Interrupciones
INTERRUPCIONES
Generalmente se aplica para realizar tareas elementales asincrónicas en el computador tales como responder al teclado, escribir en la pantalla, leer y escribir archivos. Podemos considerar una tarea asincrónica como aquella que es solicitada sin previo aviso y aleatoriamente desde el punto de vista del computador. Tomemos el caso de la operación Ctrl-Alt-Supr. En Windows tiene el efecto de que aparece en pantalla una lista de los procesos y ventanas en ejecución en el computador. En cambio en el Sistema Operativo DOS cuando el usuario presiona simultáneamente dichas teclas el computador procede a reinicializarse, aunque pueda estar ocupado ejecutando un programa en ese instante. Vale decir fuerza obligadamente a que el computador se reinicialice. Ya sea en el sistema Windows o en DOS, el computador no está constantemente monitoreando el teclado para ver si el usuario ha solicitado un Ctrl-Alt-Del, ya que en ese caso consumiría mucho tiempo de proceso en ello y por ende la capacidad de proceso se vería significativamente afectada. La solución empleada es una interrupción.
Luego cada vez que el usuario presiona una tecla, la CPU es advertida a través de una señal especial de interrupción. Cuando la CPU advierte/recibe una señal de interrupción suspende temporalmente el proceso actual almacenando en memoria RAM un bloque con toda la información necesaria para restablecer posteriormente la ejecución del programa si es que procede. Enseguida la CPU determina qué elemento ha solicitado la interrupción y para cada caso existe un bloque de instrucciones que realiza la tarea correspondiente que es ejecutada a continuación. Terminada la ejecución se restablece el programa original en el mismo punto en que fue interrumpido usando para ello la información almacenada previamente.
Cada interrupción tiene asignada un número único. El PC está diseñado de manera que la interrupción tiene asignada 4 bytes de memoria RAM. La dirección de los cuatro bytes en la memoria corresponde al número de la interrupción multiplicado por 4. Por ejemplo la interrupción IRQ 5 tiene asignada 4 bytes en la dirección 0x00014 (0000:0014). El contenido de los 4 bytes de memoria RAM asignados a una interrupción contiene a su vez una dirección que es un puntero a un bloque de instrucciones de máquina que realiza el procedimiento correspondiente. De este modo al iniciar la ejecución de una interrupción de los cuatro bytes que tiene asignados se obtiene la dirección del bloque de instrucciones que efectivamente se ejecutan. Por ejemplo si en la dirección 0000:0014 estuviera almacenado el valor 0xFFF00, ello significa que en dicha dirección (ó (F000:FF00) se encuentra el bloque de instrucciones a ejecutar cuando la interrupción IRQ 5 sea requerida.
Existen tres tipos de interrupciones :
Una lista de las interrupciones generadas por hardware es la siguiente
IRQ | Prioridad | Función |
0 | 1 | Timer |
1 | 2 | Teclado Hardware |
2 | | Reservada |
3 | 11 | COM 2 |
4 | 12 | COM 1 |
5 | 13 | Tarjeta de Sonido |
6 | 14 | Controlador Floppy |
7 | 15 | Puerta Paralela |
8 | 3 | Reloj (tics) |
9 | 4 | Libre para tarjeta de red, sonido, puerta SCSI |
10 | 5 | idem |
11 | 6 | idem |
12 | 7 | PS-mouse |
13 | 8 | Co-procesador matemático |
14 | 9 | Canal IDE primario |
15 | 10 | Canal IDE secundario |
sábado, 28 de febrero de 2009
martes, 17 de febrero de 2009
Sistemas Operativos
A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podían pagar su alto precio, y no existían los sistemas operativos. En su lugar, el programador debía tener un conocimiento y contacto profundo con el hardware, y en el infortunado caso de que su programa fallara, debía examinar los valores de los registros y páneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa, además de enfrentarse nuevamente a los procedimientos de apartar tiempo del sistema y poner a punto los compiladores, ligadores, etc; para volver a correr su programa, es decir, enfrentaba el problema del procesamiento serial ( serial processing ).
La importancia de los sistemas operativos nace históricamente desde los 50's, cuando se hizo evidente que el operar una computadora por medio de tableros enchufables en la primera generación y luego por medio del trabajo en lote en la segunda generación se podía mejorar notoriamente, pues el operador realizaba siempre una secuencia de pasos repetitivos, lo cual es una de las características contempladas en la definición de lo que es un programa. Es decir, se comenzó a ver que las tareas mismas del operador podían plasmarse en un programa, el cual a través del tiempo y por su enorme complejidad se le llamó "Sistema Operativo". Así, tenemos entre los primeros sistemas operativos al Fortran Monitor System ( FMS ) e IBSYS.
Posteriormente, en la tercera generación de computadoras nace uno de los primeros sistemas operativos con la filosofía de administrar una familia de computadoras: el OS/360 de IBM. Fue este un proyecto tan novedoso y ambicioso que enfrentó por primera vez una serie de problemas conflictivos debido a que anteriormente las computadoras eran creadas para dos propósitos en general: el comercial y el científico. Así, al tratar de crear un solo sistema operativo para computadoras que podían dedicarse a un propósito, al otro o ambos, puso en evidencia la problemática del trabajo en equipos de análisis, diseño e implantación de sistemas grandes. El resultado fue un sistema del cual uno de sus mismos diseñadores patentizó su opinión en la portada de un libro: una horda de bestias prehistóricas atascadas en un foso de brea.
Surge también en la tercera generación de computadoras el concepto de la multiprogramación, porque debido al alto costo de las computadoras era necesario idear un esquema de trabajo que mantuviese a la unidad central de procesamiento más tiempo ocupada, así como el encolado (spooling ) de trabajos para su lectura hacia los lugares libres de memoria o la escritura de resultados. Sin embargo, se puede afirmar que los sistemas durante la tercera generación siguieron siendo básicamente sistemas de lote.
En la cuarta generación la electrónica avanza hacia la integración a gran escala, pudiendo crear circuitos con miles de transistores en un centímetro cuadrado de silicón y ya es posible hablar de las computadoras personales y las estaciones de trabajo. Surgen los conceptos de interfaces amigables intentando así atraer al público en general al uso de las computadoras como herramientas cotidianas. Se hacen populares el MS-DOS y UNIX en estas máquinas. También es común encontrar clones de computadoras personales y una multitud de empresas pequeñas ensamblándolas por todo el mundo.
Para mediados de los 80's, comienza el auge de las redes de computadoras y la necesidad de sistemas operativos en red y sistemas operativos distribuidos. La red mundial Internet se va haciendo accesible a toda clase de instituciones y se comienzan a dar muchas soluciones ( y problemas ) al querer hacer convivir recursos residentes en computadoras con sistemas operativos diferentes. Para los 90's el paradigma de la programación orientada a objetos cobra auge, así como el manejo de objetos desde los sistemas operativos. Las aplicaciones intentan crearse para ser ejecutadas en una plataforma específica y poder ver sus resultados en la pantalla o monitor de otra diferente (por ejemplo, ejecutar una simulación en una máquina con UNIX y ver los resultados en otra con DOS ). Los niveles de interacción se van haciendo cada vez más profundos.