Download 4. Conceptos básicos de Software
Document related concepts
Transcript
Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación 4. Conceptos básicos de Software 4.1 Introducción En los primeros tiempos de la informática (década de 1940) la utilización de computadoras se restringía a organizaciones que podían pagar su alto precio, y no existía ese software de gerenciamiento de la máquina denominado “sistema operativo”. Por su naturaleza, el programador debía tener un conocimiento pleno del hardware, dado que programaba en código de máquina; y en el caso de que un programa fallara, debía examinar los valores de los registros y paneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa. No existía un software de gerenciamiento de la máquina denominado “Sistema Operativo”. Como una segunda mejora al procesamiento de información se introdujeron las tarjetas perforadas, como métodos de ingreso y salida de información. La forma en que se procesaban los trabajos de los distintos usuarios era serial o por lotes. En ese entonces, la utilización de una computadora requería de los usuarios cierto conocimiento técnico y una alta complejidad a la hora de escribir un programa y ejecutarlo. Bajo estas condiciones la utilización de las computadoras era restrictiva. La necesidad de administrar de forma eficiente los recursos de una computadora, a los efectos de obtener una mayor perfomance, se hace imperante en la década de 1950, donde nacen los sistemas operativos. Se comenzó a ver que las tareas propias del operador podían plasmarse en un programa, el cual se denominó en un principio “monitor” y luego “sistema operativo”. 4.1.1 El sistema operativo como una máquina ampliada Como mencionáramos antes, la arquitectura (conjunto de instrucciones, organización de la memoria, E/S y estructura de bus) de muchas computadoras en el nivel del lenguaje de máquina es primitiva y difícil de programar, especialmente con la entrada/salida. Sin incursionar en detalles reales, debe estar claro que el programador probablemente no desea verse demasiado envuelo en la programación de los distintos elementos de hardware. En su lugar, lo que un programador desea es una abstracción simple de alto nivel con la cual trabajar. El sistema operativo es, en este caso, el programa que oculta la verdad del hardware al programador y los usuarios, presentándola de una forma simple y accesible. Pág. 1 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación En esta visión, la función del sistema operativo es la de presentar al usuario con el equivalente de una máquina ampliada o máquina virtual que sea más fácil de programar que el hardware implícito. 4.1.2 El sistema operativo como manejador de recursos Las computadoras actuales cuentan con procesadores, memoria, discos, relojes, interfaces de red, dispositivos de almacenamiento, etc. En esta visión el sistema operativo permite ofrecer una distribución ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten con ellos. Por ejemplo, podría ser el caso de tres programas trataran de enviar su salida impresa en forma simultánea en la misma impresora. El sistema operativo es el encargado de administrar y ordenar la salida poniendo en “cola” las distintas impresiones. Cuando una computadora tiene múltiples usuarios, la necesidad de manejar y proteger la memoria, dispositivos de E/S y otros recursos es aún más evidente. El sistema operativo es el que lleva el control de quén utiliza cuál recurso, conceder requisiciones de recursos, explicar el uso e interceder en requisiciones conflictiva de diferentes programas y usuarios. 4.2 Definición de sistema operativo (condensado de los apuntes del ciclo de ingreso a la FI de la UNLP) Se puede definir que básicamente en el sistema operativo se incorporan las funciones de control del hardware de una computadora, de administración de sus recursos físicos y de sus usuarios, así como el control efectivo de la ejecución de los programas que en ella se carguen. El funcionamiento del Sistema Operativo implica de existencia de al menos un programa que está permanentemente ejecutándose junto con las demás aplicaciones. Esto significa que un subconjunto de los recursos de las computadoras son “tomados” por el Sistema Operativo que se comunica directa o indirectamente con los programas de aplicación que se ejecutan para cooperar en la ejecución o retomar el control del hardware en caso de problemas. En resumen, las dos funciones principales de un sistema operativo son: 1) Administrar los recursos de hardware y software de la computadora y, Pág. 2 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación 2) brindar facilidades a los usuarios para su utilización (interface de usuario). Teniendo en cuenta estas funciones también se podría definir sistema operativo desde dos puntos de vistas: 1) Desde el punto de vista de GESTOR DE RECURSOS, como el administrador de los recursos ofrecidos por el hardware para alcanzar un rendimiento eficaz de los mismos. Los sistemas operativos construyen recursos de alto nivel, denominados VIRTUALES, a base de encubrir los realmente existentes de bajo nivel, denominados FISICOS. De esta manera, desde el punto de vista del usuario o de un proceso, la máquina física es convertida por el sistema operativo en una máquina virtual o máquina extendida, que, a diferencia de la física, ofrece muchas más funciones y es más fácil de utilizar. 2) Desde el punto de vista del USUARIO, como el conjunto de programas y funciones que ocultan los detalles del hardware, ofreciendo al usuario una manera sencilla y flexible de acceder al mismo. Este ocultamiento tiene dos objetivos: a) la abstracción, por la cual el software da una visión global y abstracta de la computadora haciendo fácil su uso ocultando por completo la gestión interna y b) la seguridad, necesaria para restringir determinadas operaciones a los usuarios creando varios niveles de privilegio, de tal forma que cada usuario tenga protegida su información y sus procesos. 4.3 Algunas de las funciones del sistema operativo (condensado de los apuntes del ciclo de ingreso a la FI de la UNLP) Comunicación con los periféricos Una de las tareas más complejas realizadas por una computadora es la comunicación con pantallas, scanners, impresoras, unidades de disco, mouses, teclados, placas de sonido, placas conversoras analógico/digitales y otros dispositivos periféricos. El sistema operativo incluye programas que se encargan de un modo transparente al usuario de los detalles de comunicación con los periféricos o con el hardware que controla estos periféricos. Control de autorización de usuarios En el caso de las computadoras monousuario el sistema operativo puede Pág. 3 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación verificar (mediante una clave por ejemplo) que el usuario que trata de utilizar el equipo está habilitado para ello. Más aún puede tener derechos sobre determinados recursos del equipo pero no sobre todos los recursos. Cuando se trata de computadoras multiusuario, o en el caso de redes de computadoras, la tarea de administración de usuarios del sistema operativo es bastante más compleja, porque los derechos de cada usuario pueden ser diferentes sobre cada máquina, cada base de datos o cada periférico. En algunos casos este control de usuarios, incluye control de tiempos de utilización para el cobro posterior de los servicios. Control de la ejecución de programas La ejecución efectiva de un programa (escrito en cualquier lenguaje de programación o aplicación) requiere una comunicación permanente con el sistema operativo para acceder a los recursos de la computadora, recursos que el sistema operativo controla y verifica. De este modo se puede detectar que una orden de impresión escrita en un programa es imposible de ejecutar porque la impresora no está encendida, o que un dato de un archivo no se puede recuperar porque falla el dispositivo periférico, o que la ejecución de un programa ha tardado más de un tiempo máximo determinado, etc. También el sistema operativo monitorea el resultado de la ejecución para trasmitir al usuario el mensaje adecuado resultante de la evolución de la ejecución. Control de concurrencia Las computadoras multiusuario (que tienen terminales conectadas a un gran procesador central), las redes de computadoras o las modernas computadoras paralelas con varios procesadores internos, pueden tener varios trabajos ejecutándose al mismo tiempo (procesamiento concurrente). Esto exige que el sistema operativo controle que hace cada proceso y permita que los mismos compartan datos y recursos (es decir se comuniquen y se sincronicen). Por otra parte estos múltiples procesos pueden tener diferente prioridad para acceder a los recursos, lo que debe ser controlado también por el sistema operativo. Control de errores Como se mencionó anteriormente, cada error de ejecución de una aplicación termina entregando el control al sistema operativo que debe manejar la solución al error (desde el punto de vista que el sistema de cómputo siga funcionando) y también la comunicación clara al usuario de las causas del error. Administración de memoria Pág. 4 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación Al poder procesar concurrentemente varios trabajos, el sistema operativo debe controlar la forma de usar la memoria de la computadora, de modo que un trabajo no invada el espacio físico de otro. Los esquemas de administración de memoria pueden ser muy sencillos (división en partes asignadas a cada proceso) o más sofisticada de modo de asignar y liberar memoria en forma dinámica según los requerimientos y prioridades de los procesos. Controles de seguridad de datos Los datos almacenados en una computadora pueden tener protecciones (imaginen una base de datos con la información de cada alumno de la Facultad, incluyendo las notas de sus exámenes) de modo de autorizar las modificaciones, agregados o consultas. Estas funciones de seguridad también forman parte del sistema operativo. Manipulación del sistema de archivos Un sistema operativo debe facilitar las herramientas necesarias para leer, escribir y eliminar archivos. Un sistema de archivos es una estructura de directorios con algún tipo de organización el cual nos permite almacenar, crear y borrar archivos en diferentes formatos. Es evidente que existe la necesidad por parte de los usuarios y aplicaciones de almacenar datos en algún medio, a veces por períodos largos y a veces por instantes, cada aplicación y cada usuario debe tener ciertos derechos con sus datos, como son el poder crearlos y borrarlos, o cambiarlos de lugar; además de poder preservarlos de los demás. 4.4 Modelo de capas de la computadora Ahora, habiendo definido sistema operativo, es posible presentar un modelo de capas que muestra las distintas partes de una computadora: Pág. 5 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación Usuarios Utilitarios Sistema Lenguajes Usuarios Hardware Usuarios Operativo Sistemas Usuarios Distintas capas que componen un sistema informático 4.5 Tipos de sistemas operativos Existen diferentes formas de categorizar a los sistemas operativos, una de ellas es por los servicios que prestan: 4.5.1 Sistemas Operativos por Servicios 4.5.1.1 Por el número de usuarios a) Monousuarios Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales de los primeros tiempos son ejemplos de esta categoría. b) Multiusuarios Pág. 6 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente. 4.5.1.2 Por el número de tareas a) Monotareas Los sistemas monotareas son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez. b) Multitareas Un sistema operativo multitarea es aquel que le permite al usuario estar realizando varias tareas al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad. 4.5.1.3 Por el número de procesadores a) Uniproceso Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. Los ejemplos más típicos de este tipo de sistemas son DOS y MacOS. b) Multiproceso Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos Pág. 7 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual será el procesador maestro y será el encargado de distribuir la carga de trabajo a los demás procesadores. Cuando se trabaja de manera simétrica, los procesos o partes de ellos son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo una mejor distribución y equilibrio. 4.6 Software de Sistema vs. Software de Aplicación Como se vio oportunamente, un Sistema Operativo es una interfase entre el usuario y los recursos de la computadora, que sólo permite el uso de los recursos del hardware. Sin embargo, las necesidades de cualquier usuario van mucho más allá: redactar notas, confeccionar informes, enviar e-mails, realizar cálculos, armar presentaciones, etc. Surge entones la necesidad de desarrollar “programas comerciales” que, haciendo uso de los servicios que brinda el sistema operativo, permitan a un usuario satisfacer sus requerimientos. Este conjunto de programas se denomina Software de Aplicación. El software de aplicación describe programas que son para el usuario. Así por ejemplo, un procesador de texto, una planilla de cálculos, constituyen un software de aplicación. Existen literalmente miles de estos programas para ser aplicados en diferentes tareas, desde procesamiento de palabras hasta cómo seleccionar una universidad. Las siguientes categorías intentan reunir todos los programas disponibles: 4.6.1 Aplicaciones de negocios Estas incluyen programas tales como los procesadores de textos, planillas de cálculo, autoedición, administración de bases de datos, aplicaciones gráficas, aplicaciones corporativas, etc. 4.6.2 Aplicaciones de utilerías (o utilitarios). Permiten administrar y mantener la computadora, tales como antivirus, anti-espías, herramientas de mantenimiento de sistemas de Pág. 8 de 9 Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Computación archivos, herramientas para mejorar rendimiento, recuperadores de bases de datos, etc. 4.6.3 Aplicaciones personales Se refieren a las aplicaciones para uso personal, como agendas, tareas para hacer, correo electrónico, etc. 4.6.4 Aplicaciones de entretenimiento Son los programas dedicados a los juegos interactivos, también incluyen los programas educativos. Pág. 9 de 9