Un sistema operativo (portugués europeo) o sistema operativo (portugués brasileño) es un programa o un conjunto de programas cuya función es gestionar los recursos del sistema (definir cual programa recibe atención del procesador, gestionar memoria, crear un sistema de archivos, etc.), además de suministrar una interfaz entre el ordenador y el usuario. ES el primer programa que la máquina ejecuta en el momento en que es conectada (en un proceso llamado de bootstrapping ) y, a partir de entonces, no deja de funcionar hasta que el ordenador sea desconectado. El sistema operativo reveza su ejecución con a de otros programas, como se estuviera vigilando, controlando y orquestando todo el proceso computacional.
Según algunos autores (Silberschatz et al, 2005; Stallings, 2004; Tanenbaum, 1999), existen dos modos distinguidos de conceituar un sistema operativo:
La sigla usual para designar esta clase de programas es SO (en portugués) o Los (del inglés Operating System).
Tabla de contenido |
En la primera generación (aproximadamente 1945-1955), los ordenadores eran tan grandes que ocupaban salas inmensas. Fueron básicamente construidos con válvulas y paneles, los sistemas operativos "no existían". Los programadores, que también eran los operadores, controlaban el ordenador por medio de llaves , hilos y luces de aviso. Nombres como Howard Aiken (Harvard), John von Neumann (Instituto de Estudios Avanzados de Princeton), John Adam Presper Eckert Jr y William Mauchley (Universidad de la Pennsylvania) y Konrad Zuse (Alemania) formaron, con sus contribuciones, la base humana para el éxito en la construcción de los ordenadores primitivos.
En la generación siguiente (aproximadamente 1955-1965), fueron creados los sistemas en lote (batch systems), que permitieron mejor uso de los recursos computacionais. La base del sistema operativo era un programa monitor, usado para enfileirar tareas (jobs). El usuario fue alejado del ordenador; cada programa era escrito en tarjetas perforadas, que por su parte eran cargados, juntamente con el respectivo compilador (normalmente Fortran o Cobol), por un operador, que por su parte usaba un lenguaje de control llamada JCL (job control language).
En el inicio de la computación los primeros sistemas operativos eran únicos, pues cada mainframe vendido necesitaba de un sistema operativo específico. Ese problema era resultado de arquiteturas diferentes y del lenguaje de máquina utilizada. Después de esa fase, se inició la investigación de sistemas operativos que automatizaran el cambio de tareas (jobs), pues los sistemas eran monousuários y tenían tarjetas perforadas como entrada (eliminando, así, el trabajo de personas que eran contratadas sólo para intercambiar las tarjetas perforadas).
Uno de los primeros sistemas operativos de propósito general fue el CTSS, desarrollado en el MIT. Después del CTSS, el MIT, los laboratorios Bell de la AT&T y la General Eletric desarrollaron el Multics, cuyo objetivo era soportar centenares de usuarios. A pesar del fracaso comercial, el Multics sirvió como base para el estudio y desarrollo de sistemas operativos. Uno de los desenvolvedores del Multics, que trabajaba para la Bell, Ken Thompson, comenzó la reescrever el Multics en un concepto menos ambicioso, creando el Unics (en 1969), que más tarde pasó a llamarse Unix. Los sistemas operativos eran generalmente programandos en assembly, incluso el Unix en su inicio. Entonces, Dennis Ritchie (también de la Bell) creó el lenguaje C a partir del lenguaje B, que había sido creada por Thompson. Finalmente, Thompson y Ritchie reescreveram el Unix en C. El Unix creó un ecossistema de versiones, donde se destacan: System V y derivados (HP-UX, AIX); familia BSD (FreeBSD, NetBSD, OpenBSD, etc.), Linux y hasta el Mac Los X (que deriva del Mach y FreeBSD).
En la década de 1970, cuando comenzaron a aparecer los ordenadores personales, hube la necesidad de un sistema operativo de utilización más fácil. En 1980, William (Bill) Gates y su compañero de facultad, Paul Allen, fundadores de la Microsoft, compran el sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, lo bautizan de DE Los (Disk Operating System) y venden licencias a la IBM. Lo DE Los vendió muchas copias, como el sistema operativo normalizado para los ordenadores personales desarrollados por la IBM . IBM y Microsoft harían, aún, una parceria para el desarrollo de un sistema operativo multitarefa llamado Los/2. Después del fin de la breve parceria la IBM siguió sola en el desarrollo del Los/2.
En el comienzo de la década de 1990, un estudiante de computación finlandés postou un comentario en una lista de discusión de la Usenet diciendo que estaba desarrollando un núcleo de sistema operativo y preguntó si alguien me gustaría de auxiliá-lo en la tarea. Este estudiante se llamaba Linus Torvalds y el primer paso en dirección al tan conocido Linux fue dado en aquel momento.
Un sistema operativo puede ser visto como un programa de gran complejidad que es responsable por todo el funcionamiento de una máquina desde el software a todo hardwareinstalado en la máquina. Todos los procesos de un ordenador están por de tras de una programación compleja que comanda todas la funciones que un utilizador impone a la máquina. Existen varios sistemas operativos; entre ellos, los más utilizados el día a día, normalmente utilizados en ordenadores domésticos, son el Windows, Linux y Mac Los X.
Un ordenador con el sistema operativo instalado podrá no dar acceso a todo su contenido dependiendo del utilizador. Con un sistema operativo, podemos establecer permisos a varios utilizadores que trabajan con este. Existen dos tipos de cuentas que pueden ser creadas en un sistema operativo, las cuentas de Administrador y las cuentas limitadas. La cuenta Administrador es una cuenta que ofrece todo el acceso a la máquina, desde la gestión de carpetas, ficheros y software de trabajo o entretenimiento al controlo de todo su Hardware instalado. La cuenta Limitada es una cuenta que no tiene permisos para acceder a algunas carpetas o instalar software que sea instalado en la raíz del sistema o entonces que haya conexión con algún Hardware que altere su funcionamiento normal o personalizado por el Administrador. Para que este tipo de cuenta pueda tener acceso a otros contenidos del disco o de software, el administrador podrá personalizar la cuenta ofreciendo permisos a algunas funciones del sistema como también podrá retirar accesos a ciertas áreas del sistema.
El sistema operativo funciona con la iniciação de procesos que este irá a necesitar para funcionar correctamente. Esos procesos podrán ser ficheros que necesitan de ser frecuentemente actualizados, o ficheros que procesan datos útiles para el sistema. Podremos tener acceso a varios procesos del sistema operativo a partir del gestor de tareas, donde se encuentran todos los procesos que están en funcionamiento desde el arranque del sistema operativo hasta su utilización actual. Se puede también visualizar la utilización de la memoria por cada proceso, en el caso del sistema operativo comenzar a mostrar errores o fallos de acceso a programas haciéndose lento, se puede verificar en el gestor de tareas cual de los procesos estará bloqueado o con elevado número de procesamiento que está afectando el funcionamiento normal de la memoria.
Un sistema operativo posee las siguientes funciones:
El sistema operativo multitarefa es preparado para dar al usuario la ilusión que el número de procesos en ejecución simultánea en el ordenador es mayor que el número de procesadores instalados. Cada proceso recibe una rebanada del tiempo y la alternância entre varios procesos es tan rápida que el usuario piensa que su ejecución es simultánea.
Son utilizados algoritmos para determinar cual proceso será ejecutado en determinado momento y por cuánto tiempo.
Los procesos pueden comunicarse, es decir conocido como IPC (Inter-Process Communication). Los mecanismos generalmente utilizados son:
El sistema operativo, normalmente, debe posibilitar el multiprocessamento (SMP o EN UNA). En este caso, procesos diferentes y threads pueden ser ejecutados en diferentes procesadores. Para esa tarea, él debe ser reentrante e interrompível, lo que significa que puede ser interrumpido en medio de la ejecución de una tarea.
El sistema operativo tiene acceso completo a la memoria del sistema y debe permitir que los procesos de los usuarios tengan acceso seguro a la memoria cuando el requisitam.
Varios sistemas operativos usan memoria virtual, que posee 3 funciones básicas:
La memoria principal del ordenador es volátil, y su tamaño es limitado por el coste del hardware. Así, los usuarios necesitan de algún método para almacenar y recuperar informaciones de modo permanente.
Un archivo es un conjunto de bytes , normalmente almacenado en un dispositivo periférico no volátil (p.ej., disco), que puede ser leído y grabado por uno o más procesos.
Los sistemas operativos suministran abstracción de hardware para que sus recursos puedan ser usados de manera correcta y padronizada, pero para ser posible operar un ordenador, es necesario suministrar también una interfaz para que el usuario pueda disfrutar de los recursos del sistema. Actualmente existen dos tipos de interfaz : el GUI (graphical user interfaz), conocida también por interfaz gráfica, y el CUI (command-line interfaz), siendo esa más conocida como interfaz de línea de mando.
En ese tipo de interfaz , el usuario tiene la disposición un ambiente de trabajo compuesto por menús, iconos, ventanas y otros itens disponibles. El usuario interage con ese tipo de interfaz usando el mouse, pudiendo también usar el teclado y teclas de atajo. ES posible hacer todo tipo de tarea usando interfaz gráfica, como edición de vídeos e imágenes, siendo solamente algunos tipos muy específicos de tareas que se salen mejor en línea de mando. Añadir facilidad de uso y agilidade es el objetivo de la GUI, teniendo la desvantagem de consumir muy más memoria que interfaces de línea de mando. En sistemas unix-likes, existe la posibilidad de escoger el gerenciador de ventanas a utilizar, aumentando en mucho la libertad de elección del ambiente.
Además de la interfaz gráfica, existe la interfaz de línea de mando, que funciona básicamente con la digitación de mandos, siendo en ese relativamente poco interactiva. Los mandos tecleados son interpretados por un interpretador de mandos, conocidos también por shells, bastante comunes en sistemas unix-likes. Un ejemplo de interpretador de mandos sería el Bash. Usada generalmente por usuarios avanzados y en actividades específicas, como gestión remota, utiliza pocos recursos de hardware en comparación la interfaz gráfica. En ese tipo de ambiente, raramente se usa el mouse, aunque sea posible a través del uso de la biblioteca ncurses en el desarrollo de los softwares.
En relación a su proyecto (arquitetura), según Tanenbaum (1999):
En cuanto a la gestión de procesos, se puede usar la siguiente clasificación:
En cuanto a la cantidad de usuarios que pueden utilizar el sistema simultáneamente:
ace:OSckb:سیستەمی کار