El software es un conjunto de programas elaborados por el hombre, que controlan la actuacin del computador, haciendo que ste siga en sus acciones una serie de esquemas lgicos predeterminados. Tal caracterstica lgica o inteligente del software es lo que hace que se le defina tambin como la parte inmaterial de la informtica, ya que aunque los programas que constituyen el software residan en un soporte fsico, como la memoria principal o los disquetes (o cualquier dispositivo rgido de almacenamiento), la funcin de los programas en un computador es semejante a la del pensamiento en un ser humano.
El software es el nexo de unin entre el hardware y el hombre. El computador, por s solo, no puede comunicarse con el hombre y viceversa, ya que lo separa la barerra del lenguaje. El software trata de acortar esa barrera, estableciendo procedimientos de comunicacin entre el hombre y la mquina; es decir, el software obra como un intermediario entre el hardware y el hombre.
Si las capacidades del hardware fuesen muy grandes, y en consecuencia el usuario tuviese plenas facilidades en su utilizacin, no sera necesario recurrir al software. Desgraciadamente, nunca ser as. Si bien el progreso del hardware es cada vez mayor y los dispositivos fsicos se construyen cada vez con ms inteligencia includa, en forma que se resuelven por hardware funciones anteriormente slo factibles por software, es prcticamente imposible que el avance tecnolgico llegue algn dia a eliminar la necesidad de software, ya que ste tambin evoluciona y las facilidades que el usuario pide al computador son cada da ms sofisticadas. Una relacin muy verdica y acertada para entender la divisin del software y hardware, es la divisin teolgica entre cuerpo y alma.
Tal y como he definido el software, ste es un conjunto de programas. La pregunta ahora es: qu es un programa? Un programa es una secuencia de instrucciones que pueden ser interpretadas por un computador, obteniendo como fruto de esa interpretacin un determinado resultado que ha sido predeterminadamente establecido por el ser humano.
Los programas estn divididos en rutinas. Una rutina es un subconjunto del conjunto de instrucciones que conforman el programa. Cada una de las rutinas de un programa realiza una determinada funcin dentro del mismo.
Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informtico en particular que se use, aislndolo especialmente del procesamiento referido a las caractersticas internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnstico o Herramientas de Correccin y Optimizacin o Servidores o Utilidades Software de programacin: Es el conjunto de herramientas que permiten al programador desarrollar programas informticos, usando diferentes alternativas y lenguajes de programacin, de una manera prctica. Incluyen bsicamente: o Editores de texto o Compiladores o Intrpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir mltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz grfica de usuario (GUI). Software de aplicacin: Es aquel que permite a los usuarios llevar a cabo una o varias tareas especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial nfasis en los negocios. Incluye entre muchos otros: o Aplicaciones para Control de sistemas y automatizacin industrial o Aplicaciones ofimticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (por ejemplo Internet y toda su estructura lgica) o Videojuegos o Software mdico o Software de clculo Numrico y simblico.
o o
3.- Concepto de sistema operativo. Se puede definir el sistema operativo como el software bsico que permite al usuario interactuar con el ordenador, administrando sus recursos, coordinando los sucesos y proporcionando la ayuda y los servicios necesarios para la mayora de los programas. Todas las actividades que puede realizar el ordenador son dirigidas y coordinadas por el sistema operativo; por ejemplo, facilita la comunicacin entre los diferentes perifricos que estn conectados a la unidad central. Como el sistema operativo es el que coordina todos los elementos del sistema, es ste el primero que se carga en la memoria del ordenador al ponerlo en funcionamiento, cargndose despus todos los programas que desee ejecutar el usuario. El sistema operativo se encarga de dirigir los procesos cada vez que se ejecuta un programa de usuario, por lo que funciona como intermediario entre el hardware del sistema y el programa o software y, a la vez, como el vnculo entre el ordenador y el usuario que lo utiliza. Es decir, el usuario no podr interactuar con el ordenador ni ejecutar ningn programa de aplicacin si no existe un sistema operativo.
4.- Clasificacin
Administracin de tareas
Monotarea: Solamente permite ejecutar un proceso (aparte de los procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un proceso, continuar hacindolo hasta su finalizacin y/o interrupcin. Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de SO. normalmente asigna los recursos disponibles (CPU, memoria, perifricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.
Administracin de usuarios
Monousuario: Si slo permite ejecutar los programas de un usuario al mismo tiempo. Multiusuario: Si permite que varios usuarios ejecuten simultneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan mtodos de proteccin de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.
Manejo de recursos
Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, perifricos...) de ms de una computadora al mismo tiempo.
Estructura monoltica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra Las caractersticas fundamentales de este tipo de estructura son: Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del ligador. Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc. Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y gestin, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.
Estructura jerrquica.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del software, del sistema operativo, donde una parte del sistema contena subpartes y esto organizado en forma de niveles. Se dividi el sistema operativo en pequeas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos (Ver Fig. 3). Se puede pensar tambin en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categora. En la estructura anterior se basan prcticamente la mayora de los sistemas operativos
actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o "rings" (Ver Fig. 4). En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas ms internas del sistema operativo o ncleo del sistema estarn ms protegidas de accesos indeseados desde las capas ms externas. Las capas ms internas sern, por tanto, ms privilegiadas que las externas.
Mquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una mquina que parece idntica a la mquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los sistemas operativos de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias mquinas diferentes. El ncleo de estos sistemas operativos se denomina monitor virtual y tiene como misin llevar a cabo la multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales como se soliciten. Estas mquinas virtuales no son mquinas extendidas, sino una rplica de la mquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que ser el que ofrezca la mquina extendida al usuario.
Monousuarios
Los sistemas operativos monousuarios son aqullos que soportan a un usuario a la vez, sin importar el nmero de procesadores que tenga la computadora o el nmero de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales tpicamente se han clasificado en este rengln.
Multiusuarios
Los sistemas operativos multiusuarios son capaces de dar servicio a ms 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 nmero de procesadores en la mquina ni el nmero de procesos que cada usuario puede ejecutar simultneamente.
Monotareas
Los sistemas monotarea son aquellos que slo 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.
Multitareas
Un sistema operativo multitarea es aqul que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el cdigo fuente de un programa durante su depuracin mientras compila otro programa, a la vez que est recibiendo correo electrnico en un proceso en background. Es comn encontrar en ellos interfaces grficas orientadas al uso de mens y el ratn, lo cual permite un rpido
Uniproceso
Un sistema operativo uniproceso es aqul que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese ms de uno le sera intil. El ejemplo ms tpico de este tipo de sistemas es el DOS y MacOS.
Multiproceso
Un sistema operativo multiproceso se refiere al nmero de procesadores del sistema, que es ms de uno y ste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simtrica o asimtricamente. Cuando se trabaja de manera asimtrica, el sistema operativo selecciona a uno de los procesadores el cual jugar el papel de procesador maestro y servir como pivote para distribuir la carga a los dems procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simtrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquiera de los procesadores disponibles, teniendo, tericamente, una mejor distribucin y equilibrio en la carga de trabajo bajo este esquema.
usuarios.
En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:
Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible.
Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio.
Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro.
Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de ordenadores.
Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
Inclusin de alguna nueva utilidad (un nuevo entorno grfico, un asistente para administrar alguna determinada funcin. Controladores para manejar nuevos perifricos (este servicio debe coordinarse a veces con el fabricante del hardware).
Correccin de errores de software. No todas las utilidades de administracin o servicios forman parte del sistema operativo, adems de ste, hay otros tipos importantes de software de administracin de sistemas, como los sistemas de administracin de base de datos o los programas de administracin de redes. El soporte de estos productos deber proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo).
La forma de interfaz entre el sistema operativo y el usuario en la que este escribe los comandos utilizando un lenguaje de comandos especial. Los sistemas con interfaces de lneas de comandos se consideran ms difciles de aprender y utilizar que los de las interfaces grficas. Sin embargo, los sistemas basados en comandos son por lo general programables, lo que les otorga una flexibilidad que no tienen los sistemas basados en grficos carentes de una interfaz de programacin.
Es el tipo de visualizacin que permite al usuario elegir comandos, iniciar programas y ver listas de archivos y otras opciones utilizando las representaciones visuales (iconos) y las listas de elementos del men. Las selecciones pueden activarse bien a travs del teclado o con el mouse.
Para los autores de aplicaciones, las interfaces grficas de usuario ofrecen un entorno que se encarga de la comunicacin con el ordenador o computadora. Esto hace que
el programador pueda concentrarse en la funcionalidad, ya que no esta sujeto a los detalles de la visualizacin ni a la entrada a travs del mouse o el teclado. Tambin permite a los programadores crear programas que realicen de la misma forma las tareas ms frecuentes, como guardar un archivo, porque la interfaz proporciona mecanismos estndar de control como ventanas y cuadros de dilogo. Otra ventaja es que las aplicaciones escritas para una interfaz grfica de usuario son independientes de los dispositivos: a medida que la interfaz cambia para permitir el uso de nuevos dispositivos de entrada y salida, como un monitor de pantalla grande o un dispositivo ptico de almacenamiento, las aplicaciones pueden utilizarlos sin necesidad de cambios.