Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Sistema Operativo Investigacion

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

Un 

sistema operativo (SO o, frecuentemente, OS —del inglés Operating System—) es un programa o conjunto de


programas de un sistema informático que gestiona los recursos de hardware y provee servicios a los programas de
aplicación, ejecutándose en modo privilegiado respecto de los restantes (aunque puede que parte de él se ejecute
en espacio de usuario).

¿Qué es un Sistema Operativo?


En Breve
 Un Sistema Operativo (SO) es el software básico de una computadora que provee una interfaz entre el resto de
programas del ordenador, los dispositivos hardware y el usuario.
 Las funciones básicas del Sistema Operativo son administrar los recursos de la máquina, coordinar el hardware y
organizar archivos y directorios en dispositivos de almacenamiento.
 Los Sistemas Operativos más utilizados son Dos, Windows, Linux y Mac. Algunos SO ya vienen con un navegador
integrado, como Windows que trae el navegador Internet Explorer.

Definición de Sistema Operativo


El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros
programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas
básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista
archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.
En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se
asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema
operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al
sistema.

El sistema operativo funciona como un intermediario para que el usuario pueda comunicarse con el hardware y así el
sistema pueda proporcionar un ambiente en donde el usuario pueda ejecutar programas. Esta relación hace que el
sistema operativo y el hardware funcionen de manera eficiente. Un sistema operativo forma parte de un sistema de
computación y este se divide en 4(que se mencionaran más adelante), el sistema operativo es una parte indispensable
para que funcione todo el sistema.

EVOLUCION DE LOS SISTEMAS OPERATIVOS

La década de 1940[editar]
A finales de la década de 1940, con lo que se podría considerar la aparición de la primera generación de computadoras,
se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores
que permitían introducir directamente el programa en la memoria de la computadora.
La década de 1950 (Sistema Batch)[editar]
A principios de los años 50 con el objeto de facilitar la interacción entre persona y computadora, los sistemas operativos
hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el
almacenamiento temporal.
Monitor residente[editar]
Su funcionamiento era bastante simple, se limitaba a cargar programas a memoria, leyéndolos de una cinta o de tarjetas
perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y
el montaje del siguiente.
Procesamiento por lotes[editar]
Como solución para optimizar, en una misma cinta o conjunto de tarjetas, se cargaban varios programas, de forma que
se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.
Almacenamiento temporal[editar]
Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de
datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.
La década de 1960[editar]
En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado
la mayoría orientados a seguir incrementando el potencial de los ordenadores. Para ello se utilizaban técnicas de lo más
diversas.
Multiprogramación[editar]
En un sistema "multiprogramado" la memoria principal alberga a más de un programa de usuario. La CPU ejecuta
instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de
esperar a que termine la operación de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de
E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo
almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera óptima los recursos disponibles.
Tiempo compartido[editar]
Artículo principal:  Tiempo compartido
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece la falta
de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con
un terminal en línea, utilizando el modo de operación de tiempo compartido. En estos sistemas igual que en
la multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema
operativo lo detiene para que se ejecute otra aplicación.
Tiempo real[editar]
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de
sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las
operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para
resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa
el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones.
Multiprocesador[editar]
Diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos
programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo
que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:
La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. La
arquitectura SMP, donde todos los procesadores comparten toda la memoria. Esta última debe lidiar con el problema de
la coherencia de caché. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un
microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro
microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabaja con una copia
obsoleta del dato almacenado.
Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La
mayoría de los sistemas operativos actuales poseen esta capacidad.
La década de 1970[editar]
Sistemas operativos desarrollados[editar]
Además del Atlas Supervisor y el OS/360, los años 1970 marcaron el inicio de UNIX, a mediados de los 60 aparece
Multics, sistema operativo multiusuario - multitarea desarrollado por los laboratorios Bell de AT&T y Unix,
convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio
a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk.
Inconvenientes de los Sistemas operativos[editar]
Se trataba de sistemas grandes, complejos y costosos, pues antes no se había construido nada similar y muchos de los
proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba
como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un
complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que
ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de
procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de
multiprogramación y tiempo compartido.
Sistemas operativos desarrollados[editar]
 MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado
por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los
laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el
mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180.
Fue uno de los primeros. Además, los traducía a instrucciones de alto nivel destinadas a BDOS.
 BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS.
 CP/M: (Control Program for Microcomputers) fue un sistema operativo desarrollado por Gary Kildall para el
microprocesador Intel 8080 (los Intel 8085 y Zilog Z80 podían ejecutar directamente el código del 8080, aunque
lo normal era que se entregara el código recompilado para el microprocesador de la máquina). Se trataba del
sistema operativo más popular entre las computadoras personales en los años 70. Aunque fue modificado para
ejecutarse en un IBM PC, el hecho que IBM eligiera MS-DOS, al fracasar las negociaciones con Digital Research,
hizo que el uso de CP/M disminuyera hasta hacerlo desaparecer. CP/M originalmente significaba Control
Program/Monitor. Más tarde fue renombrado a Control Program for Microcomputers. En la época, la barra
inclinada (/) tenía el significado de "diseñado para". No obstante, Gary Kildall redefinió el significado del
acrónimo poco después. CP/M se convirtió en un estándar de industria para los primeros micro-ordenadores.
El hecho de que, años después, IBM eligiera para sus PC a MS-DOS supuso su mayor fracaso, por lo que acabó
desapareciendo.
La década de 1980[editar]
Con la creación de los circuitos LSI (integración a gran escala), chips que contenían miles de transistores en un
centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el
rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto
reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron
utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C+
+ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación
declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de
computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos
sistemas operativos eran los mayoritarios: MS-DOS (Micro Soft Disk Operating System), escrito por Microsoft para IBM
PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores
personales que hacían uso del Motorola 68000.
SunOS[editar]
Artículo principal:  SunOS
SunOS fue la versión del sistema operativo derivado de Unix y BSD desarrollado por Sun Microsystems para sus
estaciones de trabajo y servidores hasta el principio de los años 1990. Ésta estaba basada en los UNIX BSD con algunos
añadidos de los System V UNIX en versiones posteriores.
SunOS 1.0 estaba basada básicamente en BSD 4.1 y se publicó en 1982. SunOS 2.0, que salió en 1985, usaba BSD 4.2
como una base e introducía una capa de sistema de ficheros virtual (VFS) y el protocolo NFS. SunOS 3.0 coincidía con el
lanzamiento de la serie Sun-3 en 1986 e incorporaba varias utilidades de System V. SunOS 4.0, que salió en 1989, migró
a la base de BSD 4.3, introdujo un nuevo sistema de memoria virtual, enlazamiento dinámico y una implementación de
la arquitectura System V STREAMS I/O.
SunOS 5.0 y las versiones posteriores están basadas en UNIX System V Release 4.
Mac OS[editar]
Artículo principal:  Macintosh
El lanzamiento oficial del ordenador Macintosh en enero de 1984, al precio de US $1,995 (después cambiado a $2,495
dólares)[1]. Incluía su sistema operativo Mac OS cuya características novedosas era una GUI (Graphic User Interface),
Multitareas y Mouse. Provocó diferentes reacciones entre los usuarios acostumbrados a la línea de comandos y algunos
tachando el uso del Mouse como juguete.
AmigaOS[editar]
Artículo principal:  AmigaOS
AmigaOS es el nombre que recibe el conjunto de la familia de gestores de ventanas y ROMs que incluían por defecto los
ordenadores personales Commodore Amiga como sistema operativo. Fue desarrollado originalmente por Commodore
International, e inicialmente presentado en 1985 junto con el Amiga 1000.
MS-DOS[editar]
Artículo principal:  MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió
en la primera versión de MS-DOS (Micro Soft Disk OperatingSystem). A partir de aquí se sucedieron una serie de
cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como un
componente del Sistema Operativo.
OS/2[editar]
Artículo principal:  OS/2
OS/2 es un sistema operativo de IBM que intentó suceder a DOS como sistema operativo de las computadoras
personales. Se desarrolló inicialmente de manera conjunta entre Microsoft e IBM, hasta que la primera decidió seguir su
camino con su Windows e IBM se ocupó en solitario de OS/2.
OS/2 ya no es comercializado por IBM, y el soporte estándar de IBM para OS / 2 se suspendió el 31 de diciembre de
2006. Se ha mantenido desde entonces con relativamente pocas nuevas características bajo el nombre eComStation.
La década de 1990[editar]
BeOS[editar]
Artículo principal:  BeOS
BeOS es un sistema operativo para PC desarrollado por Be Incorporated en 1990, orientado principalmente a proveer
alto rendimiento en aplicaciones multimedia. A pesar de la creencia común fomentada por la inclusión de la interfaz de
comandos Bash en el sistema operativo, el diseño de BeOS no estaba basado en UNIX.
Originalmente (1995-1996) el sistema operativo corría sobre su propio hardware, conocido como BeBox. Más tarde
(1997) fue extendido a la plataforma PowerPC y finalmente (1998) se añadió compatibilidad con procesadores x86.
GNU/Linux[editar]
Artículo principal:  GNU/Linux
Este sistema al parecer es una versión mejorada de Unix, basado en el estándar POSIX, un sistema que en principio
trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas
como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un
entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar Linux de una forma visual atractiva.
Existen muchas distribuciones actuales de Gnu/Linux (Debian, Fedora, Ubuntu, Slackware, etc.) donde todas ellas tienen
en común que ocupan el mismo núcleo Linux. Dentro de las cualidades de Gnu/Linux se puede caracterizar el hecho de
que la navegación a través de la web es sin riegos de ser afectada por virus, esto debido al sistema de permisos
implementado, el cual no deja correr ninguna aplicación sin los permisos necesarios, permisos que son otorgados por el
usuario. A todo esto se suma que los virus que vienen en dispositivos desmontables tampoco afectan al sistema, debido
al mismo sistema de permisos.
Solaris[editar]
Artículo principal:  Solaris (sistema operativo)
Solaris es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente por Sun Microsystems y actualmente
por Oracle Corporation como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona
en arquitecturas SPARC y x86 para servidores y estaciones de trabajo.
Microsoft Windows NT[editar]
Artículo principal:  Windows NT
Windows NT es una familia de sistemas operativos producidos por Microsoft, de la cual la primera versión fue publicada
en julio de 1993.
Previamente a la aparición del famoso Windows 95 la empresa Microsoft concibió una nueva línea de sistemas
operativos orientados a estaciones de trabajo y servidor de red. Un sistema operativo con interfaz gráfica propia, estable
y con características similares a los sistemas de red UNIX. Las letras NT provienen de la designación del producto como
"Tecnología Nueva" (New Technology).
Las versiones publicadas de este sistema son: 3.1, 3.5, 3.51 y 4.0. Además, Windows NT se distribuía en dos versiones,
dependiendo de la utilidad que se le fuera a dar: Workstation para ser utilizado como estación de trabajo y Server para
ser utilizado como servidor.
FreeBSD[editar]
Artículo principal:  FreeBSD
FreeBSD es un sistema operativo multiusuario, capaz de efectuar multitarea con apropiación y multiproceso en
plataformas compatibles con múltiples procesadores; el funcionamiento de FreeBSD está inspirado en la variante
4.4 BSD-Lite de UNIX. Aunque FreeBSD no puede ser propiamente llamado UNIX, al no haber adquirido la debida licencia
de The Open Group, FreeBSD sí está hecho para ser compatible con la norma POSIX, al igual que varios otros sistemas
"clones de UNIX".
El sistema FreeBSD incluye el núcleo, la estructura de ficheros del sistema, bibliotecas de la API de C, y algunas utilidades
básicas. La versión 6.14 trajo importantes mejoras como mayor apoyo para dispositivos Bluetooth y controladores para
tarjetas de sonido y red.
La versión 7.0, lanzada el 27 de febrero del año 2008, incluye compatibilidad con el sistema de archivos ZFS de Sun y a la
arquitectura ARM, entre otras novedades.
La distribución más notable es PC-BSD esto fue verdad
Microsoft Windows[editar]
Artículo principal:  Microsoft Windows
Windows es el nombre de una familia de sistemas operativos desarrollados y vendidos por Microsoft basado en MS-
DOS. Windows nunca fue realmente un Sistema Operativo con verdadero entorno gráfico hasta Windows 95. Hasta la
versión 3.11 Windows fue un entorno de escritorio para MS-DOS.
Windows 95 es un sistema operativo con interfaz gráfica de usuario híbrido de entre 16 y 32 bits. Fue lanzado al
mercado el 24 de agosto de 1995 por la empresa de software Microsoft con notable éxito de ventas. Durante su
desarrollo se conoció como Windows 4 o por el nombre clave Chicago. Esta serie de Windows terminó con Windows Me.
ReactOS[editar]
Artículo principal:  ReactOS
ReactOS (React Operating System) es un sistema operativo de código abierto destinado a lograr la compatibilidad binaria
con aplicaciones de software y controladores de dispositivos hechos para Microsoft Windows NT versiones 5.x en
adelante (Windows XP y sus sucesores).
En 1996 un grupo de programadores y desarrolladores de software libre comenzaron un proyecto llamado FreeWin95 el
cual consistía en implementar un clon de Windows 95. El proyecto estuvo bajo discusión por el diseño del sistema ya
habiendo desarrollado la capa compatible con MS-DOS, pero lamentablemente esta fue una situación que no se
completó. Para 1997 el proyecto no había lanzado ninguna versión, por lo que los miembros de éste, coordinados por
Jason Filby, pudieron revivirlo. Se decidió cambiar el núcleo del sistema compatible con MS-DOS y de ahora en adelante
basarlo en uno compatible con Windows NT, y así el proyecto pudo seguir adelante con el nombre actual de ReactOS,
que comenzó en febrero de 1998, desarrollando las bases del kernel y algunos drivers básicos.
FreeDOS[editar]
Artículo principal:  FreeDOS
FreeDOS es un proyecto que aspira a crear un sistema operativo libre que sea totalmente compatible con las
aplicaciones y los controladores de MS-DOS.
El programa ya ha alcanzado un alto grado de madurez y tiene algunas características que no existían en MS-DOS.
Algunos comandos de FreeDOS son idénticos o mejores que sus equivalentes de MS-DOS, pero aún faltan algunos del
sistema operativo original.
El intérprete de línea de comandos usado por FreeDOS se llama FreeCOM.
La década de 2000[editar]
Darwin[editar]
Artículo principal:  Darwin (sistema operativo)
Darwin es el sistema que subyace en Mac OS X, cuya primera versión final salió en el año 2001 para funcionar en
computadoras Macintosh.
Integra el micronúcleo XNU y servicios de sistema operativo de tipo UNIX basados en BSD 4.4 (en particular FreeBSD)
que proporcionan una estabilidad y un rendimiento mayor que el de versiones anteriores de Mac OS. Se trata de una
evolución del sistema operativo NEXTSTEP (basado en Mach 2.5 y código BSD 4.3) desarrollado
por NeXT en 1989 comprado por Apple Computer en diciembre de 1996.
Darwin proporciona al Mac OS X prestaciones modernas, como la memoria protegida, la multitarea por desalojo o
expulsiva, la gestión avanzada de memoria y el multiproceso simétrico.
OS X[editar]
Artículo principal:  OS X
OS X, antes llamado Mac OS X, es un sistema operativo basado en Unix, desarrollado, comercializado y vendido por
Apple Inc.
La primera versión del sistema fue Mac OS X Server 1.0 en 1999, y en cuanto al escritorio, fue Mac OS X v10.0 «Cheetah»
(publicada el 24 de marzo de 2001).
La variante para servidores, Mac OS X Server, es arquitectónicamente idéntica a su contraparte para escritorio, además
de incluir herramientas para administrar grupos de trabajo y proveer acceso a los servicios de red. Estas herramientas
incluyen un servidor de correo, un servidor Samba, un servidor LDAP y un servidor de dominio entre otros.
Haiku[editar]
Artículo principal:  Haiku (sistema operativo)
Haiku es un sistema operativo de código abierto actualmente en desarrollo que se centra específicamente en la
informática personal y multimedia. Inspirado por BeOS (Be Operating System), Haiku aspira a convertirse en un sistema
rápido, eficiente, fácil de usar y fácil de aprender, sin descuidar su potencia para los usuarios de todos los niveles.
OpenSolaris[editar]
Artículo principal:  OpenSolaris
OpenSolaris fue un sistema operativo libre publicado en 2005 a partir de la versión privativa de Solaris de Sun
Microsystems, ahora parte de Oracle Corporation. OpenSolaris es también el nombre de un proyecto iniciado en 2005
por Sun para construir y desarrollar una comunidad de usuarios alrededor de las tecnologías del sistema operativo del
mismo nombre. Después de la adquisición de Sun Microsystems, en agosto de 2010, Oracle decidió interrumpir la
publicación y distribución de OpenSolaris, así como su modelo de desarrollo, basado en la disponibilidad de versiones de
desarrollo compiladas cada dos semanas y versiones estables cada seis meses. Sin embargo, los términos de su licencia
libre no han sido modificados, por lo que el código fuente afectado por ella será publicado cuando Oracle publique
nuevas versiones de Solaris.
La década de 2010[editar]
IllumOS[editar]
Artículo principal:  Illumos
Illumos es un proyecto de software libre derivado de OpenSolaris. Fue anunciado por conferencia web desde Nueva York
el 3 de agosto de 2010. El nombre del proyecto es un neologismo procedente del latín "Illum" (la luz) y de "OS"
(operating system, sistema operativo).
Se trata del código base a partir del cual cualquiera podrá crear su propia distribución de software basada en el sistema
operativo OpenSolaris. Pero Illumos no es una distribución, ni una bifurcación (fork), al menos por el momento, en la
medida que no pretende separarse del tronco principal, sino un derivado de la "consolidación" OS/Net (más conocida
como ON), que consiste básicamente en el código fuente del kernel (SunOS), los drivers, los servicios de red, las
bibliotecas del sistema y los comandos básicos del sistema operativo.
OpenIndiana[editar]
Artículo principal:  Openindiana
OpenIndiana Es un sistema operativo tipo Unix liberado como software libre y de código abierto. Es una bifurcación de
OpenSolaris concebida después de la compra de Sun Microsystems por parte de Oracle y tiene como objetivo continuar
con el desarrollo y la distribución del código base de OpenSolaris. El proyecto opera bajo el patrocinio de la Illumos
Foundation (Fundación Illumos). El objetivo declarado del proyecto es convertirse en la distribución de OpenSolaris de
facto instalada en servidores de producción donde se requieren soluciones de seguridad y errores de forma gratuita.

Clasificación de los Sistemas Operativos.


Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de
la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la
actualidad, con algunas de sus características:
Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).
Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa
varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es
un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se
esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se
encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En
la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben
tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando
esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas
multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción
de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden
secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del
ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas.
Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están
ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga
alguna tarea que ejecutar, aprovechando al máximo su utilización.
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un
procesador distinto, es decir, involucra máquinas con más de una UCP.
Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.
Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:
 Mejora productividad del sistema y utilización de recursos.
 Multiplexa recursos entre varios programas.
 Generalmente soportan múltiples usuarios (multiusuarios).
 Proporcionan facilidades para mantener el entorno de usuarios individuales.
 Requieren validación de usuario para seguridad y protección.
 Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
 Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo
real.
 Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de
múltiples tareas sobre diferentes procesadores.
 En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos
compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.
Sistema Operativo Monotareas.
Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo
pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando
la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones
hasta que se termine la impresión.
Sistema Operativo Monousuario.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones
creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea
que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe
un solo usuario. Y están orientados principalmente por los microcomputadores.
Sistema Operativo Multiusuario.
Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente
las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean
especialmente en redes.
En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Sistemas Operativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los
usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando
la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y
antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es
mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los
trabajos.
Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a
procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.
Algunas otras características con que cuentan los Sistemas Operativos por lotes son:
 Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.
 Permiten poca o ninguna interacción usuario/programa en ejecución.
 Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.
 No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.
 Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.).
 Se encuentra en muchos computadores personales combinados con procesamiento serial.
 Planificación del procesador sencilla, típicamente procesados en orden de llegada.
 Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas
transitorios.
 No requieren gestión crítica de dispositivos en el tiempo.
 Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de
concurrencia para el acceso.
Sistemas Operativos de tiempo real.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por
lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo
requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico
aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la
electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación
de los Sistemas Operativos de tiempo real son los siguientes:
 Control de trenes.
 Telecomunicaciones.
 Sistemas de fabricación integrada.
 Producción y distribución de energía eléctrica.
 Control de edificios.
 Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas
Operativos de tiempo real, cuentan con las siguientes características:
 Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos
al sistema computacional, en breve tiempo o dentro de ciertos plazos.
 Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real.,
aplicaciones militares, etc.
 Objetivo es proporcionar rápidos tiempos de respuesta.
 Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
 Proceso se activa tras ocurrencia de suceso, mediante interrupción.
 Proceso de mayor prioridad expropia recursos.
 Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.
 Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes
en memoria.
 Población de procesos estática en gran medida.
 Poco movimiento de programas entre almacenamiento secundario y memoria.
 Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.
Sistemas Operativos de tiempo compartido.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la
computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre
los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como
consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal
y secundaria.
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.
Características de los Sistemas Operativos de tiempo compartido:
 Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por
computador, procesamiento de texto, etc.
 Dan la ilusión de que cada usuario tiene una máquina para sí.
 Mayoría utilizan algoritmo de reparto circular.
 Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de
concedido el servicio.
 Evitan monopolización del sistema asignando tiempos de procesador (time slot).
 Gestión de memoria proporciona protección a programas residentes.
 Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples
usuarios accesando un mismo archivos.
Sistemas Operativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de
procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas
básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos
tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no
comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro
componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach,
Chorus, Spring, Amoeba, Taos, etc.
Características de los Sistemas Operativos distribuidos:
 Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware
y software .
 Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.
 Objetivo clave es la transparencia.
 Generalmente proporcionan medios para la compartición global de recursos.
 Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de
cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
Sistemas Operativos de red.
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico
o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando
posteriormente a procesadores Intel como Novell Netware.
Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager,
Windows NT Server, UNIX, LANtastic.
Sistemas Operativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún
recurso se puedan realizar o ejecutar al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando
paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a
que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente
después de haber creado el proceso.
Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000
de IBM.

Funciones y características de los sistemas operativos.


Funciones de los sistemas operativos.
1.- Aceptar todos los trabajos y conservarlos hasta su finalización.
2.- Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador.
3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las
unidades de disco, el teclado o el Mouse.
4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos
flexibles, discos duros, discos compactos o cintas magnéticas.
5.- Manejo de errores: Gestiona los errores de hardware y la pérdida de datos.
6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el
orden. (Quien va primero y quien después).
7.- Protección: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario.
8.- Multiacceso: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella.
9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos.
Características de los sistemas operativos.
En general, se puede decir que un Sistema Operativo tiene las siguientes características:
 Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora.
 Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más
eficiente posible.
 Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo,
prueba o introducción 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 través del kernel). El Sistema Operativo se debe encargar de comunicar a los
dispositivos periféricos, cuando el usuario así lo requiera.
 Organizar datos para acceso rápido y seguro.
 Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo
referente a la instalación y uso de las redes de computadoras.
 Procesamiento por bytes de flujo a través del bus de datos.
 Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los
dispositivos de Entrada/Salida de la computadora.

¿Cuál es la organización de un sistema operativo?

El núcleo fundamental de un Sistema Operativo es lo que conocemos como KERNEL. El Kernel de un sistema operativo
está formado por conjuntos de programas ejecutivos, servicios funcionales dinámicos, programas comunicacionales y
configuraciones que le indican al sistema en todo momento cómo ejecutar estos componentes o partes.

Desde un punto de vista funcional, todos los sistemas operativos contemplan la misma estructura funcional (Windows,
Linux, MacOS, ReactOS, FreeDos, etc). Igualmente, comparten esta organización los sistemas operativos de distintos
componentes electrónicos (PC's, Notebooks, Palms, Teléfonos celulares, iPODs, iPADs, etc).

El Kernel está constituído integralmente por tres componentes principales:

·      Drivers: Un conjunto de utilidades que le garantizan al sistema operativo en primer término la comunicación con
todos los dispositivos conectados al sistema principal Micro+Chipset+Ram.

·      Programas: Un conjunto de programas que permiten poner en marcha al sistema operativo para atender a las tareas
que debe realizar para mantener funcionando correctamente al sistema (administración de la memoria, ejecución de
tareas, almacenamiento de datos y configuraciones, etc), un conjunto de funciones que garantizen el flujo continuo y
sincronizado de datos desde el corazón del sistema a los periféricos y viceversa.

·      Servicios: Un conjunto de funcionalizades que le permiten reaccionar ante un evento que suceda en el sistema para
dar una respuesta dinámica y eficaz, lo que constituye la máxima potencialidad posible del sistema operativo y le
permite la escalabilidad necesaria para poder aceptar diferntes configuraciones. 

Cada uno de estos componentes del Kernel puede ser controlado y visualizado por el técnico gracias a un conjunto de
herramientas provistas por los mismos sistemas operativos para controlar la ejecución correcta y coordinada de cada
uno.

En el caso de Windows, estas herramientas son


·  El Administrador de Servicios para ver las funcionalidades disponibles que responden a distintos eventos dentro del
sistema
·  El Administrador de Programas para ver los Procesos cargados en memoria Ram que esperan por los eventos que los
activarán. Recuerde el técnico que un programa que se carga en Ram recibe el nombre de PROCESO.
·  El Administrador de Dispositivos, que permite saber el estado comunicacional del sistema con el exterior, vale decir
Micro+Chipser+Ram con Periféricos

El Kernel opera con un lenguaje de programación básico y primitivo, orientado principalmente a mantener contacto
fluído con el bajo nivel de hardware. Esto quiere decir que está más relacionado al uso de programas preparados para
interpretar señales eléctricas que a comunicarse con el alto nivel o software del usuario. 
Los núcleos actuales de los sistemas operativos Linux y Windows (este último basado en núcleos NT) son muy estables y
fiables. La mayor parte de las veces las inestabilidades generadas en NT dependen de malas configuraciones técnicas y
una administración deficiente del personal humano y no de problemas de diseño del sistema operativo.

El núcleo del sistema operativo


El núcleo del sistema operativo, también llamado kernel (núcleo en alemán) es aquella parte de un sistema
operativo que interactúa de forma directa con el hardware de una máquina. Entre las funciones principales del kernel se
encuentran:
 La gestión de memoria.
 La administración del sistema de archivos.
 La administración de servicios de entrada/salida.
 La asignación de recursos entre los usuarios.
La manipulación del hardware se realiza por medio de controladores de dispositivo, que conocen la forma
de comunicarse directamente con el hardware de la máquina.
El software por su parte puede comunicarse con el kernel por medio de llamadas al sistema, las cuales le indican al
kernel que realice tareas como abrir y escribir un archivo, ejecutar un programa, finalizar un proceso u obtener la fecha
y hora del sistema.

Procesos del sistema operativo


Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computadora destinado a
permitir una administración eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el
hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario.

Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen
microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus
funciones (teléfonos móviles, reproductores de DVD, autorradios, computadoras, etc.).

Introducción a los procesos.-

Todas las computadoras modernas pueden realizar varias tareas al mismo tiempo. En estos sistemas de
multiprogramación la CPU debe cambiar de un programa a otro, ejecutando cada uno en decenas o cientos de
milisegundos. Pero en cualquier instante de tiempo la CPU puede estar ejecutando solo un programa.

Todo el software ejecutable en la computadora, que con frecuencia incluye al sistema operativo, se organiza en varios
procesos secuenciales. Un proceso es básicamente un programa ejecutante donde intervienen los valores corrientes del
contador de programa, registros y variables.
Proceso.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:
 Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
 Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho
programa.
 Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
 Otra información que permite al sistema operativo su planificación.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o
más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de
instrucciones y estado de ejecución.
Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de
la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea
otro proceso se denomina bifurcación (fork). Los nuevos procesos son independientes y no comparten memoria (es
decir, información) con el proceso que los ha creado.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso
solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.
Tipos de Sistemas Operativos
Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial,
quizá el más complejo e importante en una computadora. El SO despierta a la computadora y hace que reconozca a la
CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco.
Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir
de la cual se corran programas de aplicación.
Los sistemas operativos más conocidos son los siguientes:
1) DOS: El famoso DOS, que quiere decir Disk Operating System (sistema operativo de disco), es más conocido por los
nombres de PC-DOS y MS-DOS. MS-DOS fue hecho por la compañía de software Microsoft y es en esencia el mismo SO
que el PC-DOS.
La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de
computadoras con procesador Intel.
Cuando Intel liberó el 80286, DOS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS
representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad
para que los productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien
como las computadoras IBM lo hacían.
Aún con los nuevos sistemas operativos que han salido al mercado, todavía el DOS es un sólido contendiente en la
guerra de los SO.
2) Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que tuviera una interfaz gráfica amigable para
el usuario, y como resultado obtuvo Windows. Este sistema muestra íconos en la pantalla que representan diferentes
archivos o programas, a los cuales se puede accesar al darles doble click con el puntero del mouse. Todas las
aplicaciones elaboradas para Windows se parecen, por lo que es muy fácil aprender a usar nuevo software una vez
aprendido las bases.
3) Windows 95: En 1995, Microsoft introdujo una nueva y mejorada versión del Windows 3.1. Las mejoras de este SO
incluyen soporte multitareas y arquitectura de 32 bits, permitiendo así correr mejores aplicaciónes para mejorar la
eficacia del trabajo.
4) Windows NT: Esta versión de Windows se especializa en las redes y servidores. Con este SO se puede interactuar de
forma eficaz entre dos o más computadoras.
5) OS/2: Este SO fue hecho por IBM. Tiene soporte de 32 bits y su interfaz es muy buena. El problema que presenta este
sistema operativo es que no se le ha dad el apoyo que se merece en cuanto a aplicaciones se refiere. Es decir, no se han
creado muchas aplicaciones que aprovechen las características de el SO, ya que la mayoría del mercado de software ha
sido monopolizado por Windows.
6) Mac OS: Las computadoras Macintosh no serían tan populares como lo son si no tuvieran el Mac OS como sistema
operativo de planta. Este sistema operativo es tan amigable para el usuario que cualquier persona puede aprender a
usarlo en muy poco tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos de manera eficaz. Este fue
creado por Apple Computer, Inc.
7) UNIX: El sistema operativo UNIX fue creado por los laboratorios Bell de AT&T en 1969 y es ahora usado como una de
las bases para la supercarretera de la información. Unix es un SO multiusuario y multitarea, que corre en diferentes
computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de
trabajo. Esto quiere decir que muchos usuarios puede estar usando una misma computadora por medio de terminales o
usar muchas de ellas.

Funcionamiento del mecanismo de interrupciones

Todos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada
una línea única capaz de avisar al CPU cuando le requiere para realizar una operación. Esta línea se denomina IRQ.
Las IRQ son líneas que llegan al controlador de interrupciones, un componente de hardware dedicado a la gestión de las
interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al mismo. El
controlador de interrupciones debe ser capaz de habilitar o inhibir las líneas de interrupción y establecer prioridades
entre las mismas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones
utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. También puede
darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento
de una interrupción de mayor prioridad a la que se estaba ejecutando; aunque hay interrupciones que no se pueden
deshabilitar (conocidas como interrupciones no enmascarables o NMI).
Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una única línea de
interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una
interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones
para averiguar cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la
dirección de la rutina a la que debe llamar para atender la petición del dispositivo asociado a dicha IRQ.
Procesamiento de una interrupción[editar]
1. Terminar la ejecución de la instrucción máquina en curso.
2. Salvar el estado del procesador (valores de registros y flags) y el valor del contador de programa, IP, en la pila,
de manera que en la CPU, al terminar el proceso de interrupción, pueda seguir ejecutando el programa a partir
de la última instrucción.
3. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service
Routine, o abreviado ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la
interrupción.
4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila
en el paso 2 y retorna al programa que se estaba usando anteriormente.
Mecanismo y líneas de petición de interrupción[editar]
El bus de control de la placa base dispone de líneas específicas para el sistema de interrupciones. Un PC típico dispone
en su placa base de un controlador de interrupciones 8259 de Intelo de un circuito integrado análogo. Este dispositivo
electrónico dispone de hasta 16 líneas IRQ, numeradas desde el 00 hasta el 15. En las nuevas placas base este circuito
está integrado junto con el resto del chipset y permite hasta 24 interrupciones.
En el IBM PC y XT existían 8 líneas de petición de interrupción manejadas por el controlador de interrupciones Intel
8259. Estas líneas están numeradas del 0 al 7, las dos primeras están asignadas al timer tick del temporizador Intel 8253,
y al teclado. Solo quedaban 6 líneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2 - IRQ7).
A partir del modelo AT se añadieron otras 8 líneas, numeradas del 8 al 15, mediante un segundo controlador de
interrupciones (PIC), aunque la tecnología empleada exigió colgarlo de la línea IRQ2 del primero, de forma que esta línea
se dedica a atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se dedicó
al reloj de tiempo real, un dispositivo que no existía en los modelos XT.
Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo (son las marcadas
con asterisco en la tabla que sigue). La razón de esta ausencia en los zócalos de conexión es que son de asignación fija, y
solo son usadas por ciertos dispositivos instalados en la propia placa base. En concreto la línea NMI está asignada al
mecanismo de control de paridad de la memoria, la línea 0 está asignada al cronómetro del sistema y la línea 1 al chip
que controla el teclado (dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre
denominar IRQx a las que tienen prolongación en el bus.
Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la práctica algunas están
reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre asignado al puerto serie COM2 y el IRQ4 al
COM1; IRQ6 al controlador estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las
asignaciones clásicas para el XT y el AT.
En sistemas más modernos utilizan la arquitectura APIC de Intel con 24 líneas y 8 extra para enrutar las interrupciones
PCI.
Nombr
Int (hex) XT: Descripción AT: Descripción
e
NMI --- Paridad* Paridad*
IRQ0 08 Temporizador* Temporizador*
IRQ1 09 Teclado* Teclado*
IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)
Puertos
IRQ3 0B Puerto serie COM2/COM4
serie COM2/COM4
Puertos serie
IRQ4 0C Puertos serie COM1/COM3
COM1/COM3
IRQ5 0D Disco duro Puerto Paralelo LPT2
IRQ6 0E Disquete Disquete
IRQ7 0F Puerto Paralelo LPT1 Puerto Paralelo LPT1
IRQ8 70 No existe Reloj de tiempo real*
IRQ9 71 No existe Redirigido a IRQ2*
IRQ10 72 No existe no asignado
IRQ11 73 No existe no asignado
IRQ12 74 No existe Ratón PS2
IRQ13 75 No existe Coprocesador 80287*
IRQ14 76 No existe Contr. disco IDE primario
IRQ15 77 No existe Contr. disco IDE secundario
IR716 78 Existe Contr. disco SATA primario
Cuando se instala un dispositivo de entrada o de salida que puede necesitar muchísima atención del procesador
Pentium, debe asignársele una IRQ adecuada. Dicho en otras palabras, cuando un dispositivo periférico requiera
atención, debe enviar una señal en la línea IRQ especificada. Inicialmente esta asignación se efectuaba de forma manual
y automática, por medio de puentes (jumpers) en la placa o dispositivo móvil, pero actualmente esta selección puede
hacerse mediante software.
Tipos de interrupciones[editar]
Atendiendo a la fuente que las produce, las interrupciones pueden clasificarse de la siguiente forma:
 Interrupciones de hardware. Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en
cualquier momento independientemente de lo que esté haciendo el CPU en ese momento. Las causas que las
producen son externas al procesador y a menudo suelen estar ligadas con los distintos dispositivos de entrada o
salida.
 Excepciones. Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían
predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado
en la CPU. Normalmente son causadas al realizarse operaciones no permitidas tales como la división entre 0, el
desbordamiento, el acceso a una posición de memoria no permitida, etc.
 Interrupciones por software. Las interrupciones por software son aquellas generadas por un programa en
ejecución. Para generarlas, existen distintas instrucciones en el código máquina que permiten al programador
producir una interrupción, las cuales suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza
la instrucción INT 0x21 y en Unixse utiliza INT 0x80 para hacer llamadas de sistema).
Interrupciones de hardware[editar]
Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una
operación de E/S. No son producidas por ninguna instrucción de un programa sino por las señales que emiten
los dispositivos periféricos para indicarle al procesador que necesitan ser atendidos.
Cuando el microprocesador accede a un periférico (disco duro, puerto de comunicación...), puede transcurrir algún
tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o
hasta que se haya efectuado la transmisión (polling), pero esta solución bloquea todos los programas en ejecución, y eso
no puede admitirse en un sistema multitarea. Por ello, en los sistemas modernos se prefiere un funcionamiento
mediante interrupciones, ya que éstas permiten mejorar la productividad del procesador, de forma que este último
puede ordenar una operación de entrada o salida y, en lugar de tener que realizar una espera activa, se puede dedicar a
atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el
encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar o terminar
la operación de entrada o salida.
Excepciones[editar]
Las excepciones son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa,
como por ejemplo una división entre 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera
un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. Así pues, las excepciones son
un mecanismo de protección que permite garantizar la integridad de los datos almacenados tanto en el espacio de
usuario como en el espacio kernel. Cuando el Sistema Operativo detecta una excepción intenta solucionarla, pero en
caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.
Interrupciones por software[editar]
Las interrupciones por software, también denominadas llamadas al sistema, son aquellas generadas por un programa
mientras este está ejecutándose. En general, actúan de la siguiente manera:
1. Un programa que se venía ejecutando luego de su instrucción I5, llama al sistema operativo, por ejemplo para
leer un archivo en el disco duro (cuando un programa necesita un dato exterior, se detiene y pasa a cumplir con
las tareas de recoger ese dato).
2. A tal efecto, luego de I5 existe en el programa, la instrucción de código de máquina CD21, simbolizada INT 21 en
Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir la ejecución de la instrucción I6
y siguientes del programa hasta que no se haya leído el disco y esté en memoria principal dicho archivo,
virtualmente el programa se ha interrumpido, siendo, además, que luego de INT 21, las instrucciones que se
ejecutarán no serán del programa, sino del sistema operativo (se detiene el programa y ordena en este caso
mediante INT21 [interrupción predefinida] que recoge el dato solicitado, para poder sequir el programa que la
ordeno).
3. La ejecución de INT 21 permite hallar la subrutina del sistema operativo.
4. Se ejecuta la subrutina del sistema operativo que prepara la lectura del disco.
5. Luego de ejecutarse la subrutina del sistema operativo, y una vez que se haya leído el disco y verificado que la
lectura es correcta, el sistema operativo ordenará reanudar la ejecución del programa autointerrumpido en
espera.
6. La ejecución del programa se reanuda.
Determinación de la dirección de la rutina de servicio de interrupción[editar]
Hay dos alternativas para determinar la dirección de la rutina de servicio de interrupción que se debe ejecutar al recibir
una interrupción determinada:
 Direcciones fijas. Se hallan cableadas en el procesador y por tanto nunca pueden ser cambiadas. Esto implica
que las RSI siempre estarán en una determinada posición de la memoria.
 Direcciones variables (por interrupciones vectorizadas). En este grupo se incluyen aquellas que presentan una
dirección variable y que, por tanto, no se halla cableada en el procesador. De esta manera el dispositivo debe
dar información acerca de la localización de la dirección de comienzo de la RSI asociada a dicho periférico.
Direcciones variables[editar]
Hay distintas metodologías de diseño para las interrupciones con direcciones variables. En la actualidad, las alternativas
que son implementadas de manera habitual son las siguientes:
 Direccionamiento absoluto: En este caso es el dispositivo o la interfaz del dispositivo la encargada de conocer la
dirección de la RSI y de enviarla al procesador para que éste pueda localizar dicha subrutina y ejecutarla.
 Direccionamiento relativo: El dispositivo solo suministra parte de la dirección de comienzo y es el procesador el
encargado de completarla (añadiendo bits o sumando una determinada cantidad, que siempre será fija). Esta
alternativa tiene una ventaja sobre la anterior y es que permite especificar la dirección de comienzo con menos
bits y por tanto simplifica el diseño. Ahora bien tiene una desventaja principal y es que limita el número de
dispositivos que podemos conectar y además ciertos bits de la dirección quedan fijados de forma permanente
por la CPU lo que reduce la capacidad de reubicabilidad de la RSI. Una alternativa que utilizan ciertos
procesadores como el 8080 o el 8085 es que en vez de enviar solamente la dirección de comienzo de la RSI se
envía también el código de la operación de salto (por ejemplo CALL).
 Direccionamiento indirecto: También conocida como direccionamiento por interrupciones vectorizadas. Se
mantiene una tabla de vectores de interrupción (direcciones de comienzo de las distintas RSI) y a cada
interrupción se le asocia un número que será el índice por el cual se accederá a la tabla y se recuperará la
información de la dirección de comienzo. Necesita señales de conformidad o handshaking para sincronizar al
procesador con la interfaz, ya que esta última tiene que indicarle al procesador cuando va a enviarle el índice
que necesita para buscar el vector de interrupción (INT) y el procesador deberá enviar otra señal para indicar
que se ha reconocido la interrupción (INTA#).
Determinación de la fuente que genera la interrupción[editar]
Hay distintas formas de identificar la fuente de una determinada interrupción. La primera alternativa que se consideró
fue asignar una línea (un bit) para cada interrupción, lo cual suponía un gran costo en cuanto a la relación de número de
dispositivos y número de bits usados y a menudo limitaba el número de dispositivos que se podían conectar. Por ello, se
pensó con posterioridad en que en cada patilla de interrupción debería poder conectarse más de un dispositivo,
debiendo implementar por tanto una metodología que permitiese identificar de forma unívoca de qué dispositivo se
trataba. Para ello hay varias directrices:
 Polling: el microprocesador comprueba de manera sistemática todos los dispositivos de manera que «busca»
cuál de ellos fue el que solicitó la interrupción. Esto tiene una ventaja y es que es barato a nivel de coste
hardware ya que el polling se implementa en software, no obstante tiene otras desventajas que no podemos
olvidar y es que suele ser lento porque tiene que comprobar en serie todos los dispositivos y establece una
prioridad en los dispositivos (el orden de sondeo) y por tanto puede provocar inanición.
 Interrupciones vectorizadas: este concepto fue ya tratado en el apartado anterior. Como ventajas podemos
destacar que suele ser rápido pero implica un alto costo en el hardware.
 Hardware paralelo: se utiliza un registro de interrupción cuyos bits se controlan de forma independiente por las
señales de petición de interrupción   de cada periférico. Según la posición de cada bit en el registro, se
establece la prioridad.
Sistemas de prioridad[editar]
El sistema operativo necesita un mecanismo para priorizar las interrupciones y tratar primero las más urgentes. Para
ello, existen varias alternativas:
 Interrupciones simultáneas: No tienen por qué ocurrir de manera simultánea sino que se refiere a que en un
momento dado pueden haber varias interrupciones activas.
 Interrupciones anidadas: Mientras se está procesando una determinada rutina de servicio de interrupción
sucede otra señal de interrupción.
 Inhibición de interrupciones: Se deshabilitan las demás interrupciones mientras se está tratando una.
Interrupciones simultáneas[editar]
En este método tenemos dos alternativas, una de ellas es que exista algún hardware que tenga como entradas las
señales de interrupción y de como salida la interrupción más prioritaria que está activa en ese momento. Otra
alternativa es tener un método de identificación de prioridades distribuida y no generalizada como en el caso anterior,
en este caso tenemos que destacar dos técnicas distintas que se pueden implementar en la práctica:
 Polling: el microprocesador verifica los dispositivos y el orden de sondeo determina la prioridad.
 Daisy-chain (conexión en cadena): se puede conectar los distintos dispositivos en cadena, en orden decreciente
de prioridad y por tanto la señal de reconocimiento de interrupción (INTA#) solo será pasada al siguiente
dispositivo en caso de que el anterior (más prioritario) no haya solicitado los servicios del procesador. Sin
embargo, algo importante es que las señales de interrupción que van al procesador están conectadas todas a un
mismo cable, por tanto, deberemos utilizar alguna técnica especial para que no se produzca un cortocircuito.
Para evitar precisamente que la pista se cortocircuite se utiliza la técnica del open-collecto o «colector abierto» y
consiste en conectar el colector de un transistor a la pista común (un transistor por cada dispositivo) y por tanto
estarán tantos colectores conectados como dispositivos tengamos (se entiende que son dispositivos que
mandan petición de interrupción al procesador).
 Híbrida: mezcla las dos técnicas explicadas anteriormente.
Interrupciones anidadas[editar]
Existen dos métodos para tratar las interrupciones anidadas. El primero se basa en inhabilitar las interrupciones
mientras se está ejecutando una determinada RSI. Esto puede realizarlo el hardware de manera automática en algunos
procesadores, pero en otros será el usuario el encargado de deshabilitarlas en caso de que no desee que ninguna otra
interrupción pueda interrumpir el transcurso normal de la rutina de servicio de interrupción. No es aconsejable
deshabilitar las interrupciones durante mucho tiempo ya que esto puede provocar errores y pérdida de información.
La otra alternativa es permitir que solo las interrupciones más prioritarias puedan suspender la ejecución de la RSI
actual. Para esto tendremos que definir qué líneas son más prioritarias que otras. Otra consideración de esta segunda
alternativa es que al anidar distintas llamadas a rutinas tendremos que contar con una pila suficientemente grande para
que esta no se desborde.
Inhibición de interrupciones[editar]
Hay distintas alternativas de inhibición de interrupciones. Como ya hemos visto estas se pueden hacer de manera
automática por el hardware en algunos casos mientras que en otros será el usuario el encargado de realizarlo por
software y esto depende de la arquitectura del procesador que consideremos. Las distintas opciones son:
 Deshabilitar todas las interrupciones. Para esto basta con inhibir el bit del registro de flag dedicado a las
interrupciones.
 Deshabilitar al principio de la RSI y activarlas de nuevo al finalizar la misma. Puede ser de manera automática o
por el usuario.
 Desactivar solo las interrupciones que tengan menor prioridad que la asociada a la RSI que se está ejecutando en
ese momento.
 Deshabilitar de forma selectiva distintos niveles de prioridad de interrupción. Para lo cual se emplean registros
especiales denominados máscaras en el que cada uno de sus bits identifican a un nivel distinto y modificando su
contenido se puede establecer que niveles están activos en ese momento. Se puede cambiar por el
programador.

En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo
mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que
compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de
procesos, no existe una solución general para los interbloqueos.
Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la
vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha.
Ninguno puede jugar hasta que alguno libere lo que tomó.
En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser
utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere
el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya
utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro
recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro
proceso.

Representación de Bloqueos Mutuos usando grafos[editar]

Ejemplo de representación de Bloqueo Mutuo en grafos de alocación de recursos con dos procesos A y B, y dos
recursos R1 y R2.
El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un
cuadrado y el recurso, por un círculo. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al
cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.
En la figura del ejemplo, se pueden ver dos procesos diferentes (A y B), cada uno con un recurso diferente asignado
(R1 y R2). En este ejemplo clásico de bloqueo mutuo, es fácilmente visible la condición de espera circular en la que los
procesos se encuentran, donde cada uno solicita un recurso que está asignado a otro proceso.
Condiciones necesarias[editar]
También conocidas como condiciones de Coffman por su primera descripción en 1971 en un artículo escrito por E. G.
Coffman.
Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes entre ellas.
Sean los procesos P0, P1, ..., Pn y los recursos R0, R1, ..., Rm:
 Condición de exclusión mutua: existencia de al menos de un recurso compartido por los procesos, al cual sólo
puede acceder uno simultáneamente.
 Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo retiene mientras espera
al menos un recurso Rj que ya ha sido asignado a otro proceso.
 Condición de no expropiación: los recursos no pueden ser expropiados por los procesos, es decir, los recursos
sólo podrán ser liberados voluntariamente por sus propietarios.
 Condición de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de procesos
original),P0 está esperando un recurso adquirido por P1, que está esperando un recurso adquirido por P2,... ,que
está esperando un recurso adquirido por Pm, que está esperando un recurso adquirido por P0. Esta condición
implica la condición de retención y espera.
Evitando bloqueos mutuos[editar]
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de
recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro,
donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se
asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o
inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia,
disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
 Algoritmo del banquero, introducido por Dijkstra.
 Algoritmo de grafo de asignación de recursos.
 Algoritmo de Seguridad.
 Algoritmo de solicitud de recursos.
Prevención[editar]
Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las condiciones necesarias vistas
anteriormente.
 Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso. Esto es imposible
para procesos que no pueden ser encolados (puestos en un spool), e incluso con colas también pueden ocurrir
interbloqueos.
 La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que
van a necesitar antes de empezar. Este conocimiento por adelantado muchas veces es imposible nuevamente.
Otra forma es requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan.
Esto también es poco práctico en general.
 La condición de no expropiación puede ser también imposible de eliminar dado que un proceso debe poder
tener un recurso por un cierto tiempo o el procesamiento puede quedar inconsistente.
 La condición de espera circular es la más fácil de atacar. Se le permite a un proceso poseer sólo un recurso en un
determinado momento, o una jerarquía puede ser impuesta de modo tal que los ciclos de espera no sean
posibles.
Livelock[editar]
Un livelock es similar a un deadlock, excepto que el estado de los dos procesos envueltos en el livelock constantemente
cambia con respecto al otro. Livelock es una forma de inanición y la definición general sólo dice que un proceso
específico no está procesando.
En un ejemplo del mundo real, un livelock ocurre por ejemplo cuando dos personas, al encontrarse en un pasillo angosto
avanzando en sentidos opuestos, y cada una trata de ser amable moviéndose a un lado para dejar a la otra persona
pasar, pero terminan moviéndose de lado a lado sin tener ningún progreso, pues ambos se mueven hacia el mismo lado,
al mismo tiempo.
Livelock es un riesgo con algunos algoritmos que detectan y recuperan los interbloqueos, pues si más de uno toma
cartas en el asunto, la detección del interbloqueo puede ser disparada continuamente; pudiendo ser arreglado
asegurándose que sólo un proceso (escogido al azar o por prioridad) tome acción.

También podría gustarte