Software Concepto
Software Concepto
Software Concepto
Un sistema operativo SO (Operating System, OS) es tal vez la parte más importante del software del sistema y es
el software que controla y gestiona los recursos del computador.
En la práctica, el sistema operativo es la colección de programas de computador que controla la interacción del
usuario y el hardware del computador.
El sistema operativo es el administrador principal del computador, y por ello a veces, se le compara con el director
de una orquesta ya que este software es el responsable de dirigir todas las operaciones del computador y gestionar
todos sus recursos.
El sistema operativo asigna recursos, planifica el uso de recursos y tareas del computador, y monitoriza a las
actividades del sistema informático. Estos recursos incluyen memoria, dispositivos de E/S (Entrada/Salida), y la
UCP (Unidad Central de Proceso).
El sistema operativo proporciona servicios tales como asignar memoria a un programa y manipulación del control
de los dispositivos de E/S tales como el monitor el teclado o las unidades de disco.
Cuando un usuario interactúa con un computador, la interacción está controlada por el sistema operativo. Un
usuario se comunica con un sistema operativo a través de una interfaz de usuario de ese sistema operativo.
Los sistemas operativos modernos utilizan una interfaz gráfica de usuario, IGU (Graphical User Interface, GUI) que
hace uso masivo de iconos, botones, barras y cuadros de diálogo para realizar tareas que se controlan por el
teclado o el ratón (mouse) entre otros dispositivos.
Normalmente, el sistema operativo se almacena de modo permanente en un chip de memoria de sólo lectura
(ROM) de modo que esté disponible tan pronto el computador se pone en marcha (“se enciende” o “se prende”).
Otra parte del sistema operativo puede residir en disco que se almacena en memoria RAM en la inicialización del
sistema por primera vez en una operación que se llama carga del sistema(booting).
Uno de los programas más importante es el sistema operativo, que sirve, esencialmente, para facilitar la escritura y
uso de sus propios programas.
El sistema operativo dirige las operaciones globales de la computadora, instruye a la computadora para ejecutar
otros programas y controla el almacenamiento y recuperación de archivos (programas y datos) de cintas y discos.
Gracias al sistema operativo es posible que el programador pueda introducir y grabar nuevos programas, así como
instruir a la computadora para que los ejecute.
Los sistemas operativos pueden ser: monousuarios (un solo usuario) y multiusuarios, o tiempo
compartido (diferentes usuarios); atendiendo al número de usuarios y monocarga (una sola tarea) o multitarea
(múltiples tareas) según las tareas (procesos) que puede realizar simultáneamente.
C++ corre prácticamente en todos los sistemas operativos, Windows XP, Windows 95, Windows NT, Windows
2000, UNIX, Linux, Vista, y en casi todas las computadoras personales actuales PC, Mac, Sun, etc.
Sistemas operativos más utilizados en educación
y en la empresa
Windows Vista: Nuevo sistema operativo de Microsoft presentado en 2006, pero que se lanzará
comercialmente en 2007.
Windows XP: Sistema operativo más utilizado en la actualidad, tanto en el campo de la enseñanza, como en la
industria y negocios. Su fabricante es Microsoft.
Windows 98/ME/2000: Versiones anteriores de Windows pero que todavía hoy son muy utilizados.
UNIX: Sistema operativo abierto, escrito en C y todavía muy utilizado en el campo profesional.
Linux: Sistema operativo de software abierto, gratuito y de libre distribución, similar a UNIX, y una gran
alternativa a Windows. Muy utilizado actualmente en servidores de aplicaciones para Internet.
Mac OS: Sistema operativo de las computadoras Apple Macintosh.
DOS y OS/2: Sistemas operativos creados por Microsoft e IBM respectivamente, ya poco utilizados pero que
han sido la base de los actuales sistemas operativos.
CP/M: Sistema operativo de 8 bits para las primeras microcomputadoras nacidas en la década de los setenta.
Symbian: Sistema operativo para teléfonos móviles apoyado fundamentalmente por el fabricante de teléfonos
celulares Nokia.
PalmOS: Sistema operativo para agendas digitales, PDA, del fabricante Palm.
Windows Mobile, CE: Sistema operativo para teléfonos móviles con arquitectura y apariencias similares a
Windows XP.
Los sistemas operativos monotareas son más primitivos y, solo pueden manejar un proceso en cada momento o
que solo puede ejecutar las tareas de una en una.
Un sistema operativo multitarea 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.
Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecución concurrente de dos o más
procesos activos. La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos
simultáneamente en memoria y multiplexando el procesador y los dispositivos de E/S entre ellos.
La multitarea suele asociarse con soporte hardware y software para protección de memoria con el fin de evitar que
procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes.
Asimétrica.
Cuando se trabaja de manera asimétrica, 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 demás procesadores, que
reciben el nombre de esclavos.
Simétrica.
Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a
cuál quiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga
de trabajo bajo este esquema.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área
de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto.
Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios
procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman
ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los
cuales son ejecutados al mismo tiempo en procesadores diferentes.
Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta
última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar
tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial.