lunes, 29 de noviembre de 2010

Unidad I, punto N°4


Llamadas al sistema

            Proveen una interfaz entre los procesos y el Sistema de Operación. Una llamada al sistema básicamente es la solicitud por parte de algún proceso hacia el Sistema operativo solicitando recursos para que pueda funcionar o realizar alguna tarea determinada. De ésta forma, el proceso avisa al sistema operativo para que sepa que necesita ser atendido, y así le asigne los recursos necesarios. Ésta es la única forma de acceder a recursos de hardware en S.O de multitarea.


Control de trabajos o procesos
            El sistema operativo controla todos los procesos mediante el BLOQUE DE CONTROL DE PROCESOS (PCB,  Process Control Block). Éste, es un registro y descriptor de los procesos. El PCB contiene la siguiente información sobre un proceso:
·         Identificador del proceso
·         El estado del proceso
·         Prioridad del proceso.
·         Estado hardware (contador de programa, códigos de condición, punteros de pila, etc.).
·         Espacio de direcciones de memoria.
·         Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
·         Datos del propietario (owner).
·         Permisos asignados.
El sistema operativo mantiene listas de PCB para cada uno de los estados del sistema (preparado, activo, etc.). Cada proceso pertenece a una única lista. El planificador se encarga de gestionar el paso de los procesos de una lista a otra.
De ésta manera el S.O tiene el control e información de todos los procesos independientemente del estado en que estén.

Estructura de un sistema operativo

El sistema operativo está compuesto principalmente por 3 capas:

Las aplicaciones del usuario: Son todas las encargadas de satisfacer las necesidades del usuario. Las aplicaciones más comunes en la actualidad, trabajan con un nivel de abstracción muy alto, esto quiere decir que el usuario no requiere conocimientos de programación elevados. A estas alturas, casi la totalidad de los softwares trabajan con interfaz gráfica, que es interpretada por el Shell.

Shell: Muchas personas lo confunden con el Kernel, siendo cosas muy distintas. Es el interprete de ordenes del usuario, puede ser a través de una interfaz gráfica tipo Windows, GNU/Linux (KDE, Gnome y etc) y MacOSo, o con lineas de comandos tipo MSDOS. Una vez interpretadas las ordenes, el Shell se las envía al kernel.

Entorno de llamadas del sistema: Proveen una interfaz entre los procesos y el Sistema de Operación. Una llamada al sistema básicamente es la solicitud por parte de algún proceso hacia el Sistema operativo, solicitando recursos para que pueda funcionar o realizar alguna tarea determinada. Esta actividad es llevada a cavo por el Kernel.

El Kernel o núcleo: Es el corazón del SO, es el encargado de la comunicación entre el hardware y el software. Lleva a cavo la gestión de procesos, gestión de memoria y en él residen los controladores del hardware. Otra cosa fundamental, es que traduce las ordenes recibidas por el Shell que están en un alto nivel, a un nivel de máquina (baja abstracción). 


Maquina virtual

            Es una técnica que permite simular un sistema operativo dentro de otro primario o real. Lo bueno que tienen estas máquinas virtuales es que se puede instalar cualquier sistema operativo en ellas, incluso sistemas operativos diferentes al sistema operativo real. Ej: En mi PC tengo Windows XP como S.O real y a través de software simulo un S.O Linux para probar éste último. La maquina virtual también simula una bios, una memoria, conexiones de red, puertos, discos duros, etc.


Manipulación de archivos

Una de las principales funciones de un Sistema Operativo es la administración del almacenamiento de información, para lo cual es necesario contar con un “Sistema de Archivos”. Esto se refiere a cómo el sistema operativo organiza la información en medios físicos tales como discos y diskettes (aspecto físico del sistema de archivos), y la visión que es ofrecida al usuario para permitir la manipulación de la información almacenada (interfaz para que el usuario abra, elimine, cree o modifique archivos). A través del Sistema de archivos, los archivos van quedando almacenados de forma organizada en directorios, formándose una estructura jerarquizada además de determinando el tamaño de los clusters y la capacidad máxima de almacenaje que puede tener el disco duro y de la seguridad para los archivos.


Gestión de dispositivos

“Los dispositivos” son aparatos que cumplen determinada función y pueden ser conectados a una computadora. Los dispositivos de entrada son el medio para que el usuario pueda comunicarse con la máquina o ingresar información (ratón, escáner, teclado y etc), y los dispositivos de salida son aquellos que proporcionan al usuario el resultado final del procesamiento de información (pantalla, impresora, parlantes y etc).Existen 3 tipos de procesos de entrada y salida, en función de como el SO se sincroniza con el controlador.

E/S programada: La CPU hace una consulta al registro de estado del controlador (Polling), produciendo un bucle que es solucionado con los SO multiprogramados.

E/S por interrupciones: El controlador lleva a cabo el proceso de interrupción, si otra parea está siendo ejecutada por la CPU, es interrumpida. Este mecanismo da la base del sistema multiprogramado.

E/S por DNA: Los dispositivos que llevan a cabo una transferencia de datos muy elevada, se auxilian con la memoria principal.


Interrupciones

Es una señal recibida por la CPU, que indica que debe interrumpir la ejecución actual de x programa y pasar a ejecutar instrucciones específicas para tratar la nueva tarea..
Este concepto surge de las necesidades que tienen los dispositivos externos, así como impresora, fax y etc, de enviar información al procesador.
Polling: Es la primera técnica que se implementó, consiste en que el procesador se encargara de “escanear” el dispositivo cada cierto tiempo para averiguar si tiene pendiente alguna instrucción para él. La CPU constantemente consumía tiempo en realizar el escaneo, por lo tanto el método fue clasificado como ineficiente. El mecanismo de interrupciones fue la solución que permitió eliminar dicho problema, y dejar en el dispositivo la responsabilidad de comunicarse con el procesador cuando sea necesario.

Programas del sistema

Hoy en día, los sistemas operativos vienen con software pre-instalado, con el fin de hacer fácil para el usuario el uso del computador. En la actualidad, muchos SO viene con un interprete de ordenes gráfico (GUI), dejando de lado a las lineas de comando, además, cuentan con gestores de memoria, con el fin de proteger a usuario de la cruda tarea de gestionar su memoria a través de un lenguaje de bajo nivel.

Las herramientas que vienen por defecto en un sistema, varían según la necesidad del usuario, gestor de particionado, calculadora de programador, hojas de calculo, cliente de correo electrónico, además de sus herramientas propias para la administración y configuración del equipo.


Jerarquía de Almacenamiento

Para poder ejecutarse y ser manipulados, los programas y su información tienen que residir en memoria principal, y los datos que no son necesarios, se quedan en la memoria secundaria. Como ya se sabe, la memoria principal (física) es costosa y de menor tamaño que la secundaria, pero más rápida.

Hoy en día existen sistemas con varios niveles de almacenamiento y los programas residentes van trasladándose de forma dinámica entre estos niveles, que son:

-Memoria Caché
-Memoria Principal
-Memoria Secundaria

En el caso del 1er y 2do nivel, la CPU puede acceder a los datos de forma directa, por lo contrario, en el 3er nivel (Memoria Secundaria) solo puede acceder a los datos si éstos son trasladados a la Memoria Principal (2do nivel). La rapidez de acceso de la CPU va decreciendo según el niveles.


 

lunes, 15 de noviembre de 2010

Unidad I, punto N°3.




Gestión del Sistema operativo

Gestion de archivos

Permite la administración correcta para la manipulación de archivos como crear,  abrir, borrar o cerrar archivos. El S.O, a través del sistema de archivos, permite gestionar los datos que residen en memoria secundaria, organizándolos en colecciones de datos llamadas archivos.  El sistema de archivos ayuda a: 

- Compartir archivos entre los usuarios.
- Permitir la transferencia de datos de unos archivos a otros.
- Gestión de soportes físicos.
- Seguridad y protección de archivos.
- Facilitar a los usuarios la posibilidad de estructurar los archivos de la manera más adecuada


Intérprete de órdenes  
 
Programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios. Lo que hace es recoger órdenes en  el canal de entrada  para que sean ejecutadas por la computadora. Esto se realiza mediante un conjunto de instrucciones entregadas por  el mismo intérprete que permiten comunicar las órdenes con el Sistema operativo.


Servicios del Sistema Operativo:

Ejecución de programas:

En el caso de la multiprogramación, el computador solo puede ejecutar un programa a la vez, pero como va alternando de forma rápida entre uno y otro, nos da una sensación de fluidez, como si todos los programas que usamos se estuvieran ejecutando al mismo tiempo.

En el caso del Multiprocesamiento, como se usan dos procesadores o más, el computador si puede ejecutar más de un programa a la vez.

Operaciones de E/S:

Consiste en usar un sistema de almacenamiento rápido y temporal (caché), una interfaz de controladores de dispositivos y otra exclusiva para dispositivos específicos. El Sistema Operativo debe gestionar el caché de E/S y encargarse de las interrupciones de los dispositivos.

Sistemas de Archivos:

En palabras muy simples, los archivos son una colección de información relacionada. Pueden contener el plano de un programa (código fuente), imágenes, música, textos, instrucciones y etc. El SO se encarga de:

-Construir y manipular archivos o directorios y también eliminarlos.

-Realizar copia de seguridad de archivos o directorios.

-Establecer el vinculo entre unidades de almacenamiento y archivos.

Unos ejemplos de sistemas de archivos son el FAT32, NTFS y EXT4. La diferencia de ellos es notoria, por ejemplo, el FAT 32 solo puede almacenar hasta 4GB, mientras que el NTFS y EXT4 tienen una capacidad considerablemente mayor.

Comunicación:

Para mantener las comunicaciones con otros sistemas, es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

Detección y manejo de errores:

Si la CPU intenta ejecutar una instrucción mal elaborada, la unidad de control enviará una excepción al Sistema Operativo para que éste pueda llevar a cavo la solución pertinente. Las razones por las que se puede presentar una excepción son:

-El código de operación puede ser incorrecto.

-Se intenta realizar alguna operación no definida, como dividir por cero.

-La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

-La instrucción puede no estar permitida en el modo de ejecución actual.

Las excepciones son importantes por que así se evita que alguna aplicación haga una operación que no se le está permitida.

Gestión de recursos:

Gracias al surgimiento del SO, el usuario ya contaba con un gestor de memoria y no tenía que interactuar con su hardware para poder gestionarla. El SO tiene varias funciones:

-Administrar la CPU.

-Administrar los dispositivos de E/S.

-Administrar los procesos.

-Administrar la memoria física y virtual.

En general, gestiona todos los recursos del sistema. Se acabó con la obligación del uso de lenguajes de bajo nivel para la gestión de recursos.

Protección:

El SO cuenta con la capacidad de establecer reglas y definir a que aplicaciones y/o recursos se pueden acceder según el grado de privilegios o autorización del usuario. El Sistema Operativo fuerza el uso de sistemas de seguridad, para así mantener su integridad y la de los archivos. Muchos usuarios no miden la importancia de este punto y se arriesgan a fallos drásticos. Los SO actuales cuentan con diferentes métodos de seguridad, los sistemas GNU/Linux hacen uso de privilegios y de un superusuario virtual, por otro lado, Windows proporciona algo un poco menos riguroso y más cómodo, pero más deficiente, ya que el usuario real tiene todos los privilegios, hasta de borrar los archivos con extensión dll, algo muy curioso.

domingo, 31 de octubre de 2010

Sistemas Paralelos

Los sistemas paralelos se iniciaron entre 1980 a 1990.
Estos tienen la capacidad de hacer varias operaciones en el mismo tiempo, manejando grandes cantidades de información y procesando cientos de peticiones por segundo.
Al existir más de un procesador en uso, estos están acoplados fuertemente compartiendo el bus del computador, el reloj, la memoria, los dispositivos periféricos y la comunicacion usualmente se realiza a través de una memoria compartida.
Esto permitiendo dar una mayor rapidez de respuesta (rendimiento), a la vez una mayor confiabilidad y abaratar costos a base de su funcionamiento compartido.

Algunos ejemplos de ellos son:  
-Alpha
-PVM
-la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

miércoles, 13 de octubre de 2010


Unidad I, punto N°2

Sistemas de tiempo real:

Estos sistemas operativos fueron diseñados para aplicaciones basadas en el tiempo real, por lo que se les exige continuas correcciones en sus acciones o respuestas. Son utilizados principalmente en la industria, experimentos científicos y sistemas médicos. Un sistema operativo de tiempo real debe tener la capacidad para funcionar en forma correcta y estable en tiempos específicos, en otras palabras, debe tener la capacidad para procesar adecuadamente la información recibida en intervalos de tiempo claramente definidos. Hay 2 clasificaciones:

-Sistemas de tiempo real por hardware: Garantizan que las tareas críticas se ejecuten a tiempo. Los datos son almacenados en la memoria ROM, por no ser volátil. No emplean uso de memoria virtual.

-Sistemas de tiempo real por software: Ejecutan tareas menos críticas y tienen menos utilidades que los implementados por hardware, por ejemplo, no pueden utilizarse para control industrial ni en robótica.

Algunas de sus características:
-No requieren mucha memoria.
-Son fiables.
-Pueden funcionar en diferentes arquitecturas de CPUs.

Ejemplos:
-OS-9;
-RTLinux (RealTime Linux);
-QNX;
-VxWorks.
Sistemas distribuidos:

Los sistemas operativos distribuidos desempeñan las mismas funciones que un sistema operativo normal, pero con la diferencia de trabajar en un entorno distribuido. Permiten repartir diferentes procesos entre un conjunto de CPUs, pudiendo ser que estén en un computador o en diferentes (vía remota). Este tipo de sistema debe ser muy confiable y estable ya que si un componente del sistema operativo se deteriora, otro componente debe de ser capaz de reemplazarlo inmediatamente para no afectar a los procesos del sistema. Existen dos esquemas para estos SOs:

-Sistema fuertemente acoplado: Es aquel que comparte la memoria y una frecuencia de reloj global.

-Sistema débilmente acoplado: En éste las CPUs no comparten ni memoria ni frecuencia, ya que cada una cuenta con su memoria propia.

Algunas características:

-Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .
-Proporciona abstracción de máquina virtual a los usuarios.
-Su objetivo clave es la transparencia.
-Generalmente proporcionan medios para la compartición global de recursos.

Ejemplos:
-Sprite
-Solaris-MC
-Mach
-Chorus
-Spring
-Amoeba
-Taos


Sistemas de Computación Personal
Son los más usados hoy en día por las personas. Su misión es entregar una buena interfaz a un solo usuario y administrar lo más eficientemente los recursos de la computadora. Se les usa mayormente para procesamiento de texto, hojas de cálculo y acceso a internet. Windows XP, Windows 7, Linux y Macintosh son ejemplos de este tipo de Sistemas. La gente al utilizar mayoritariamente estos S.O, hace que no conozcan que existen otros tipos de sistema.

jueves, 30 de septiembre de 2010

Unidad N°1: Diseño y estructuras de Hardware - Punto 1 - Parte 2

  • Sistemas Batch (por lotes) simple:
Es un tipo de sistema operativo que puede procesar una tarea a la vez, lo que lo hace poco eficiente y practico. Cuando una tarea está en ejecución, esta toma el control total de la CPU y de la memoria principal, lo que genera que ninguna otra tarea vaya quedando en cola de espera ni ejecutándose paralelamente. La tarea entregará el control de la CPU hasta que se termine de ejecutar completamente, y ahí recién podrá ser cargado otro programa en memoria para su ejecución. Cuando se está ejecutando una tarea que requiere que se produzca algún evento como el ingreso de un dispositivo de entrada y salida, en ese instante de espera la CPU queda ociosa.

Hay 3 tipos:
-El lineal: Este trabaja con una cola de espera sin prioridades. A medida que va terminando cada tarea, se ejecuta el siguiente programa en la cola de espera.

-Con prioridades: Tiene una cola de espera de tareas, pero se ejecutan de acuerdo a la prioridad que tenga cada una.

-Con prioridades y tiempo de salida: Trabaja con una cola de espera con prioridades pero además existe un intervalo de tiempo programado que determina el tiempo máximo que puede ejecutar una tarea. Si la tarea no se termina dentro del intervalo de tiempo, es de vuelta a la cola de espera y la CPU comienza a ejecutar un nuevo proceso.


  • Sistemas Batch (por lotes) multiprogramado:
Este tipo de SO permite que la CPU nunca quede ociosa, tratando de sacarle un máximo de eficiencia al procesador. Cuando se está ejecutando una tarea que requiere que se produzca algún evento como el ingreso de un dispositivo de entrada y salida, la CPU no queda ociosa como en la monoprogramación, sino que busca una nueva tarea para ejecutarla mientras ocurre el evento del proceso anterior(esto pasa sucesivamente y la CPU no quedara ociosa mientras hayan tareas por ejecutar).
Cuando hay muchos programas en cola de espera, la CPU debe elegir entre todos los procesos cual será ejecutado, por lo este tipo de SO trabaja con un sistema llamado “planificación de CPU” que permite que el procesador elija la tarea que se ejecutará dentro de muchas.


  • Sistemas de tiempo compartido:
En este tipo de sistema operativo, la CPU va alternando entre las diversas tareas, dando la sensación al usuario que está interactuando con varias aplicaciones a la vez ya que el tiempo de uso de CPU en cada proceso es muy corto. También permite que varios usuarios puedan usar los recursos del mismo computador, gracias a la rapidez con que la CPU va alternando entre las diversas tareas. Cabe destacar, que como residen varios programas en la memoria principal, este SO requiere algún tipo de administración de memoria, protección y planificación de la CPU.
El concepto de tiempo compartido, surgió en la década de los 60, pero como en esa época ese tipo de sistema era complejo y difícil de construir, no fueron comunes, por lo menos, hasta comienzos de la década de los 70.

miércoles, 15 de septiembre de 2010

Unidad N°1: Diseño y estructuras de Hardware - Punto 1


Durante la primera generación de computadoras, no existían sistemas operativos, por lo que la interacción entre maquina-usuario era directa a través de tableros de comando directo y sólo podían ser utilizados por personas especializadas.

El hecho de que se hayan creado los sistemas operativos, significó y significa que los computadores dejaran de ser simples hardware y pudieran ser controladas y utilizados de mejor manera por sus usuarios.

Gracias a la aparición de los S.O., la computadora se masificó y el desarrollo del software se hizo más simple, lo que provocó su desarrollo a mayor escala.

Ahora, para entender la primera parte explicaremos que es un sistema operativo.
Es el software base para el resto de aplicaciones (como los cimientos de una edificación). Sin el S.O los software no podrían ser ejecutado. Además brinda una interfaz para hacer el uso de la computadora más fácil para el usuario (lo protege de la complejidad de la máquina. Ej: Los usuarios no necesitan saber en qué parte de la RAM quedan las instrucciones de algún determinado programa).

Es importante decir que administra los recursos del sistema (de la manera mas eficiente que pueda), los dispositivos de entrada y salida, gestión y organización de archivos en unidades de almacenamiento, los procesos e interpreta las instrucciones de las aplicaciones a lenguaje máquina, para que el procesador las pueda ejecutar (si no interpretara las instrucciones, seria como que una persona le hablara en un idioma desconocido a otra, no entendería nada).

Posee un Shell, que es el que interpreta las ordenes del usuario (puede ser en modo gráfico o a través de lineas de comandos) para que la CPU las reconozca, y el Kernel, que es el núcleo del sistema operativo e intermediario entre el software y la máquina. Facilita a los programas un acceso seguro al hardware de la computadora, gestiona los recursos a través de servicios de llamada al sistema y también ofrece una serie de abstracciones del hardware para que los desarrolladores de programas no tengan que acceder directamente al hardware(sin esto, habrían menos programas ya que los programadores necesitarían saber el funcionamiento de cada parte del hardware).
Estructura funcional de un Sistema Operativo







sábado, 28 de agosto de 2010

PRIMERA GENERACIÓN DE COMPUTADORES

¿Cómo te verías teniendo una computadora que te ocupa toda tu pieza y que solo te deja hacer las operaciones matemáticas solamente?, pero así eran los antepasados de los computadores que hoy conocemos, que se desarrollaron entre 1945 y 1955 (es relativo) y que parecían verdaderos Goliat delante de las personas.

Antes de entrar a definir la primera generación de las computadoras, aclararemos que la primera computadora programable, así para muchos, es la Z1, calculadora mecánica binaria, inventada entre el año 1936 y 1938.

En esta generación, las computadoras eran hechas con fines científicos y militares.

En 1941, la armada real de Inglaterra presionó a su gobierno para que financiara la creación de una computadora que les permitiera descifrar los códigos de los mensajes radiales de los alemanes durante la segunda guerra mundial, así nace el Colossus.


 

En 1944, la gigante IBM creó el Mark I, que fue su primera computadora a gran escala. Este fue unos de sus primeros pasos para convertirse en la gran empresa multinacional que es hoy.


Von Neumann sugirió en el año 1945, que el sistema binario fuera incorporado en todos los computadores. Esta sugerencia fue tomada en cuenta por los futuros proyectos de desarrollo de estas máquinas. En la actualidad, las computadoras funcionan con código binario.

Se comprende que la primera generación de computadores parte con el ENIAC (Electronic Numerical Integrator And Computer), inaugurado el 14 de febrero de 1946, que era 1000 veces más rápido que cualquier máquina anterior, capaz de hacer 350 multiplicaciones por segundo. Su peso era alrededor de 27.000Kg, era muy grande y usaba un piso entero. Tenía ventiladores, pero aún así la temperatura ambiente llegaba a los 67° centígrados y al ocurrir esto, sólo se podía ocupar una vez y luego debía apagarse hasta que se enfríe por el aumento excesivo de temperatura. La máquina usaba el código decimal en vez del binario. Esta computadora fue usada solamente por el ejército, exclusivamente para cálculos balísticos o trayectoria de misiles.

En 1951, se inventó la primer computador comercial de gran escala, el UNIVAC (Universal Automatic Computer), inventado por Mauchly y Eckert. Fue usado por la Oficina del Censo de Estados Unidos (fue ocupado con fines sociales y estadísticos y no militares como el collosus).


En 1949, fue creado el BINAC, que nunca funcionó, pero sirvió como base para desarrollar el EDVAC (Electronic Discrete Variable Automatic Computer) que fue entregado a los militares en 1949 y sería terminado en el año 1952. El EDVAC fue considerado como el primer computador programable en vez del Z1. Además, fue la primera verdadera computadora electrónica digital de la historia.

En el año 1952, se anunció el IBM 701, la primera computadora científica comercial de IBM. Tenía la capacidad de almacenar 2048 palabras de 36 bits cada uno, que eran ampliables a 4096 palabras de 36 bits. El 701 puede coronarse como el primer computador que demostró el potencial de la inteligencia artificial, teniendo la capacidad de ejecutar un juego de Damas de Arthur Samuel.


                       IBM 701                                                      IBM 704


En 1954 se introdujo al mercado el IBM 704, una mejora científica respecto a el 701, en cuanto arquitectura, haciendo que no sea compatible con la ultima. IBM afirmó que el computador era capaz de ejecutar más de 40,000 instrucciones por segundo y podía almacenar 8192 palabras de 36 bits. Para su época poseía una capacidad de almacenamiento asombrosa respecto a sus antecesores.

En esta generación, la relación entre el usuario y la maquina era muy directa, ya que, en esos tiempos no existían sistemas operativos para usarlas. Además solo personas especializadas podían ocupar estas máquinas, siendo en nuestros tiempos muy distinto a través de los sistemas operativos, lo que los hace accesible para cualquier persona. 

El tiempo de procesamiento y respuesta eran lentas y en su mayoría realizaban cálculos matemáticos. 

Estas maquinas tenían un sistema eléctrico de tubos al vacío y generaban altas temperaturas y demasiado gasto de energía.

Por sus elevados costos solo era posible que los gobiernos, centros científicos y militares podían adquirir estas maquinas.