SlideShare una empresa de Scribd logo
1 de 15
Sistema operativo

Un sistema operativo (SO, frecuentemente OS, del inglés Operating System) es
un programa o conjunto de programas que en un sistema informático gestiona los
recursos de hardware y provee servicios a los programas de aplicación,
ejecutándose en modo privilegiado respecto de los restantes y anteriores próximos
y viceversa.2
Nótese que es un error común muy extendido denominar al conjunto completo de
herramientas sistema operativo, es decir, la inclusión en el mismo término de
programas como el explorador de ficheros, el navegador web y todo tipo de
herramientas que permiten la interacción con el sistema operativo, también
llamado núcleo o kernel. Esta identidad entre kernel y sistema operativo es solo
cierta si el núcleo es monolítico. Otro ejemplo para comprender esta diferencia se
encuentra en la plataforma Amiga, donde el entorno gráfico de usuario se
distribuía por separado, de modo que, también podía reemplazarse por otro, como
era el caso de directory Opus o incluso manejarlo arrancando con una línea de
comandos y el sistema gráfico. De este modo, al arrancar un Amiga, comenzaba a
funcionar con el propio sistema operativo que llevaba incluido en una ROM, por lo
que era cuestión del usuario decidir si necesitaba un entorno gráfico para manejar
el sistema operativo o simplemente otra aplicación. Uno de los más prominentes
ejemplos de esta diferencia, es el núcleo Linux, usado en las
llamadas distribuciones Linux, ya que al estar también basadas en Unix,
proporcionan un sistema de funcionamiento similar. Este error de precisión, se
debe a la modernización de la informática llevada a cabo a finales de los 80,
cuando la filosofía de estructura básica de funcionamiento de los grandes
computadores3 se rediseñó a fin de llevarla a los hogares y facilitar su uso,
cambiando el concepto de computador multiusuario, (muchos usuarios al mismo
tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo)
más sencillo de gestionar.4 (Véase AmigaOS, beOS o MacOS como los
pioneros5 de dicha modernización, cuando los Amiga fueron bautizados con el
sobrenombre de Video Toasters6 por su capacidad para la Edición de vídeo en
entorno multitarea round robin, con gestión de miles de colores einterfaces
intuitivos para diseño en 3D.
Uno de los propósitos del sistema operativo que gestiona el
núcleo intermediario consiste en gestionar los recursos de localización y
protección de acceso del hardware, hecho que alivia a los programadores de
aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos
electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un
sistema operativo (teléfonos móviles, reproductores de DVD, computadoras,
radios, enrutadores, etc.). En cuyo caso, son manejados mediante una Interfaz
Gráfica de Usuario, un gestor de ventanas o un entorno de escritorio, si es un
celular, mediante una consola o control remoto si es un DVD y, mediante una línea
de comandos o navegador web si es un enrutador.

Perspectiva histórica
Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la
consola maestra por los programadores. Durante la década siguiente (1955-1965)
se llevaron a cabo avances en elhardware: lectoras de tarjetas, impresoras, cintas
magnéticas, etc. Esto a su vez provocó un avance en el
software: compiladores, ensambladores, cargadores, manejadores de dispositivos,
etc.
A finales de los años 1980, una computadora Commodore Amiga equipada con
una aceleradora Video Toaster era capaz de producir efectos comparados a
sistemas dedicados que costaban el triple. Un Video Toaster junto a Lightwave
ayudó a producir muchos programas de televisión y películas, entre las que se
incluyen Babylon 5, Seaquest DSV y Terminator II.7
Problemas de explotación y soluciones iniciales
El problema principal de los primeros sistemas era la baja utilización de los
mismos, la primera solución fue poner un operador profesional que lo manejase,
con lo que se eliminaron las hojas de reserva, se ahorró tiempo y se aumentó la
velocidad.
Para ello, los trabajos se agrupaban de forma manual en lotes mediante lo que se
conoce como procesamiento por lotes (batch) sin automatizar.
Monitores residentes

Fichas en lenguaje de procesamiento por lotes, con programa y datos, para
ejecución secuencial.
Según fue avanzando la complejidad de los programas, fue necesario implementar
soluciones que automatizaran la organización de tareas sin necesidad de un
operador. Debido a ello se crearon los monitores residentes: programas que
residían en memoria y que gestionaban la ejecución de una cola de trabajos.
Un monitor residente estaba compuesto por un cargador, un Intérprete de
comandos y un Controlador (drivers) para el manejo de entrada/salida.
Sistemas con almacenamiento temporal de E/S
Los avances en el hardware crearon el soporte de interrupciones y posteriormente
se llevó a cabo un intento de solución más avanzado: solapar la E/S de un trabajo
con sus propios cálculos, por lo que se creó el sistema de búfers con el siguiente
funcionamiento:
Un programa escribe su salida en un área de memoria (búfer 1).
El monitor residente inicia la salida desde el buffer y el programa de aplicación
calcula depositando la salida en el buffer 2.
La salida desde el buffer 1 termina y el nuevo cálculo también.
Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al
buffer 1.
El proceso se puede repetir de nuevo.
Los problemas surgen si hay muchas más operaciones de cálculo que de E/S
(limitado por la CPU) o si por el contrario hay muchas más operaciones de E/S
que cálculo (limitado por la E/S).
Spoolers
Hace aparición el disco magnético con lo que surgen nuevas soluciones a los
problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado
previo de los datos de dispositivos lentos y se sustituyen por discos (un disco
puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con
la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se
conoce como Spool (SimultaneousPeripherialOperation On-Line).
Sistemas operativos multiprogramados
Surge un nuevo avance en el hardware: el hardware con protección de memoria.
Lo que ofrece nuevas soluciones a los problemas de rendimiento:
Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.
Se pueden mantener en memoria varios programas.
Se asigna el uso de la CPU a los diferentes programas en memoria.
Debido a los cambios anteriores, se producen cambios en el monitor residente,
con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como
Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes
funciones:
Administrar la memoria.
Gestionar el uso de la CPU (planificación).
Administrar el uso de los dispositivos de E/S.
Cuando desempeña esas tareas, el monitor residente se transforma en un sistema
operativo multiprogramado.
Llamadas al sistema operativo
Definición breve: llamadas que ejecutan los programas de aplicación para pedir
algún servicio al SO.
Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de
llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje
que deben usar las aplicaciones para comunicarse con el SO. Por ello si
cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el
anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la
misma interfaz. Para ello:
Las llamadas correspondientes deben tener el mismo formato.
Cada llamada al nuevo SO tiene que dar los mismos resultados que la
correspondiente del anterior.
Modos de ejecución en un CPU
Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No
obstante el Sistema Operativo, tiene que poder utilizar todo el conjunto de
instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de
operación diferentes:
Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego
restringido de las aplicaciones.
Modo supervisor: la CPU debe poder ejecutar el juego completo de
instrucciones.
Llamadas al sistema
Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de
la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier
cambio en el S.O. haría que hubiera que reconstruir la aplicación.
Pero lo más importante es que una llamada de función no cambia el modo de
ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio,
sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de
operación de la CPU en la llamada (y la recuperación del modo anterior en el
retorno).
Esto se hace utilizando instrucciones máquina diseñadas específicamente para
este cometido, distintas de las que se usan para las llamadas de función.
Bibliotecas de interfaz de llamadas al sistema
Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes
de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de
funciones que pueden usarse para efectuar llamadas al sistema. Las hay para
distintos lenguajes de programación.
La aplicación llama a una función de la biblioteca de interfaz (mediante una
llamada normal) y esa función es la que realmente hace la llamada al sistema.
Interrupciones y excepciones
El SO ocupa una posición intermedia entre los programas de aplicación y el
hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que
hay situaciones en las que es el hardware el que necesita que se ejecute código
del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo
deberse estas llamadas a dos condiciones:
Algún dispositivo de E/S necesita atención.
Se ha producido una situación de error al intentar ejecutar una instrucción del
programa (normalmente de la aplicación).
En ambos casos, la acción realizada no está ordenada por el programa de
aplicación, es decir, no figura en el programa.
Según los dos casos anteriores tenemos las interrupciones y la excepciones:
Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que
la operación de la que se estaba ocupando, ya ha terminado.
Excepción: una situación de error detectada por la CPU mientras ejecutaba
una instrucción, que requiere tratamiento por parte del SO.
Tratamiento de las interrupciones
Una interrupción se trata en todo caso, después de terminar la ejecución de la
instrucción en curso.
El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la
interrupción, ante la cual debe poder identificar el dispositivo que la ha causado.
La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando
continuamente rutinas para consultar el estado del periférico. El inconveniente es
que el dispositivo debe tener los circuitos electrónicos necesarios para acceder al
sistema de interrupciones del computador.
Importancia de las interrupciones
El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU
en servicio de una aplicación, mientras otra permanece a la espera de que
concluya una operación en un dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado
y el SO puede intervenir entonces, si es conveniente, para hacer que el programa
que estaba esperando por el dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción.
Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben
poder hacerlo las mismas).
Un ejemplo de sincronismo por interrupción es el almacenamiento de caracteres
introducidos mediante el teclado. Cuando se introduce un carácter, se codifica en
el registro de datos del dispositivo y además se activa un bit del registro de estado
quien crea una interrupción en el hardware. El procesador deja temporalmente la
tarea que estaba completando y ejecuta la rutina de atención a la interrupción
correspondiente. El teclado almacena el carácter en el vector de memoria
intermedia ( también llamado buffer) asociada al teclado y despierta el proceso
que había en el estado de espera de la operación de entrada/salida.
Excepciones
Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la
unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento
adecuado. Al contrario que en una interrupción, la instrucción en curso es
abortada. Las excepciones al igual que las interrupciones deben estar
identificadas.
Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas
razones:
El código de operación puede ser incorrecto.
Se intenta realizar alguna operación no definida, como dividir por cero.
La instrucción puede no estar permitida en el modo de ejecución actual.
La dirección de algún operando puede ser incorrecta o se intenta violar alguno
de sus permisos de uso.
Importancia de las excepciones
El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a
los modos de ejecución de la CPU y los mecanismos de protección de la memoria,
que las aplicaciones realicen operaciones que no les están permitidas. En
cualquier caso, el tratamiento específico de una excepción lo realiza el SO.
Como en el caso de las interrupciones, el hardware se limita a dejar el control al
SO, y éste es el que trata la situación como convenga.
Es bastante frecuente que el tratamiento de una excepción no retorne al programa
que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte
la ejecución de ese programa. Este factor depende de la pericia del programador
para controlar la excepción adecuadamente.

La Definición de Software Libre
La definición de software libre estipula los criterios que se tienen que cumplir para
que un programa sea considerado libre. De vez en cuando modificamos esta
definición para clarificarla o para resolver problemas sobre cuestiones delicadas.
Más abajo en esta página, en la sección Historial, se puede consultar la lista de
modificaciones que afectan la definición de software libre.
«Software libre» significa que el software respeta la libertad de los usuarios y la
comunidad. En términos generales, los usuarios tienen la libertad de copiar,
distribuir, estudiar, modificar y mejorar el software. Con estas libertades, los
usuarios (tanto individualmente como en forma colectiva) controlan el programa y
lo que hace.
Cuando los usuarios no controlan el programa, el programa controla a los
usuarios. El programador controla el programa y, a través del programa, controla a
los usuarios. Un programa que no es libre, llamado «privativo», es por lo tanto un
instrumento de poder injusto.
Por tanto, el «software libre» es una cuestión de libertad, no de precio. Para
entender el concepto, piense en «libre» como en «libre expresión», no como en
«barra libre».
Un programa es software libre si los usuarios tienen las cuatro libertades
esenciales:
La libertad de ejecutar el programa para cualquier propósito (libertad 0).
La libertad de estudiar cómo funciona el programa, y cambiarlo para que
haga lo que usted quiera (libertad 1). El acceso al código fuente es una
condición necesaria para ello.
La libertad de redistribuir copias para ayudar a su prójimo (libertad 2).
La libertad de distribuir copias de sus versiones modificadas a terceros
(libertad 3). Esto le permite ofrecer a toda la comunidad la oportunidad de
beneficiarse de las modificaciones. El acceso al código fuente es una
condición necesaria para ello.
Un programa es software libre si los usuarios tienen todas esas libertades. Por
tanto, usted debe ser libre de redistribuir copias, tanto con como sin
modificaciones, ya sea gratuitamente o cobrando una tarifa por la distribución, a
cualquiera en cualquier parte. El ser libre de hacer estas cosas significa, entre
otras cosas, que no tiene que pedir ni pagar el permiso.
También debe tener la libertad de hacer modificaciones y usarlas en privado para
su propio trabajo o pasatiempo, sin siquiera mencionar que existen. Si publica sus
cambios, no debe estar obligado a notificarlo a nadie en particular, ni de ninguna
manera en particular.
La libertad de ejecutar el programa significa que cualquier tipo de persona u
organización es libre de usarlo en cualquier tipo de sistema de computación, para
cualquier tipo de trabajo y finalidad, sin que exista obligación alguna de
comunicarlo al programador ni a ninguna otra entidad específica. En esta libertad,
lo que importa es el propósito de los usuarios, no el de los programadores. Usted
como usuario es libre de ejecutar el programa para alcanzar sus propósitos, y si lo
distribuye a otra persona, también esa persona será libre de ejecutarlo para lo que
necesite; usted no tiene derecho a imponerle sus propios objetivos.
La libertad de redistribuir copias debe incluir las formas binarias o ejecutables del
programa, así como el código fuente, tanto para las versiones modificadas como
para las no lo estén. (Distribuir programas en forma de ejecutables es necesario
para que los sistemas operativos libres se puedan instalar fácilmente). Resulta
aceptable si no existe un modo de producir una formato binario o ejecutable para
un programa específico, dado que algunos lenguajes no incorporan esa
característica, pero debe tener la libertad de redistribuir dichos formatos si
encontrara o programara una forma de hacerlo.
Para que la libertad 1 y 3 de realizar cambios y publicar las versiones modificadas
tengan sentido, usted debe tener acceso al código fuente del programa. Por
consiguiente, el acceso al código fuente es una condición necesaria para el
software libre. El «código fuente» ofuscado no es código fuente real, y no cuenta
como código fuente.
La libertad 1 incluye la libertad de usar su versión modificada en lugar de la
original. Si el programa se entrega con un producto diseñado para ejecutar
versiones modificadas de terceros, pero rechaza ejecutar las suyas, una práctica
conocida como «tivoización» [«tivoization»] o «arranque seguro» [«lockdown»] (en
la terminología perversa de los que la practican); la libertad 1 se convierte más en
una ficción teórica que en una libertad práctica. Esto no es suficiente. En otras
palabras, estos binarios no son software libre, incluso si se compilaron desde un
código fuente que es libre.
Una manera importante de modificar el programa es agregándole subrutinas y
módulos libres ya disponibles. Si la licencia del programa especifica que no se
pueden añadir módulos que ya existen y que están bajo una licencia apropiada,
por ejemplo si requiere que usted sea el titular de los derechos de autor del código
que desea añadir, entonces se trata de una licencia demasiado restrictiva como
para considerarla libre.
La libertad 3 incluye la libertad de publicar sus versiones modificadas como
software libre. Una licencia libre también puede permitir otras formas de
publicarlas; en otras palabras, no tiene que ser una licencia de copyleft. No
obstante, una licencia que requiera que las versiones modificadas no sean libres,
no se puede considerar libre.
Para que estas libertades sean reales, deben ser permanentes e irrevocables
siempre que usted no cometa ningún error; si el programador del software tiene el
poder de revocar la licencia, o de añadir restricciones a las condiciones de uso en
forma retroactiva, sin que haya habido ninguna acción de parte del usuario que lo
justifique, el software no es libre.
Sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre
son aceptables, cuando no entran en conflicto con las libertades principales. Por
ejemplo, el copyleft (definido muy resumidamente) es la regla en base a la cual,
cuando redistribuye el programa, no puede agregar restricciones para denegar a
los demás las libertades principales. Esta regla no entra en conflicto con las
libertades principales, más bien las protege.
«Software libre» no significa que «no es comercial». Un programa libre debe estar
disponible para el uso comercial, la programación comercial y la distribución
comercial. La programación comercial de software libre ya no es inusual; tal
software libre comercial es muy importante. Puede haber pagado dinero para
obtener copias de software libre, o puede haber obtenido copias sin costo. Pero
sin tener en cuenta cómo obtuvo sus copias, siempre tiene la libertad de copiar y
modificar el software, incluso devender copias.
Si una modificación constituye o no una mejora, es un asunto subjetivo. Si su
derecho a modificar un programa se limita, básicamente, a modificaciones que
alguna otra persona considera una mejora, el programa no es libre.
No obstante, eventuales reglas sobre cómo empaquetar una versión modificada
son aceptables si no limitan substancialmente su libertad para publicar versiones
modificadas, o su libertad para hacer y usar versiones modificadas en privado. Así,
es aceptable que una licencia le obligue a cambiar el nombre de la version
modificada, eliminar el logotipo o identificar sus modificaciones como suyas. Son
aceptables siempre y cuando esas obligaciones no sean tan agobiantes que le
dificulten la publicación de sus modificaciones. Como ya está realizando otras
modificaciones al programa, no le supondrá un problema hacer algunas más.
Las normas del tipo «si pone a disposición su versión de este modo, también debe
hacerlo de este otro modo» también pueden ser, bajo la misma condición,
admisibles. Un ejemplo de una norma admisible sería alguna que requiera que, si
usted ha distribuido una versión modificada y uno de los programadores anteriores
le solicita una copia, usted deba enviársela (tenga en cuenta que tal norma le
sigue permitiendo optar por distribuir o no distribuir su versión). Las normas que
obligan a suministrar el código fuente a los usuarios de las versiones publicadas
también son admisibles.
Un problema particular se presenta cuando la licencia requiere que a un programa
se le cambie el nombre con el cual será invocado por otros programas. De hecho
este requisito dificulta la publicación de la versión modificada para reemplazar al
original cuando sea invocado por esos otros programas. Este tipo de requisitos es
aceptable únicamente cuando exista un instrumento adecuado para la asignación
de alias que permita especificar el nombre del programa original como un alias de
la versión modificada.
En el proyecto GNU, usamos copyleft para proteger legalmente estas libertades
para todos. Pero también existe software libre sin copyleft. Creemos que existen
razones importantes por las que es mejor usar copyleft, pero si su programa es
software libre sin copyleft, sigue siendo ético de todos modos. (Véase
en categorías del software libreuna descripción de la relación que existe entre
«software libre», «software con copyleft» y otros tipos de software libre).
En algunos casos las regulaciones de control de exportación y las sanciones
comerciales pueden limitar sus libertades de distribuir copias de programas a nivel
internacional. Los desarrolladores de software no tienen el poder de eliminar o
pasar por alto estas restricciones, pero lo que pueden y deben hacer es rechazar
imponerlas como condiciones para el uso del programa. De este modo, las
restricciones no afectarán las actividades ni a las personas fuera de las
jurisdicciones de dichos gobiernos. Por tanto, las licencias de software libre no
deben requerir la obediencia a ninguna regulación de exportaciones que no sea
trivial como condición para ejercer cualquiera de las libertades esenciales.
La mera mención de la existencia de normas de exportación, sin ponerlas como
condición de la licencia misma, es aceptable ya que esto no restringe a los
usuarios. Si una norma de exportación es de hecho trivial para el software libre,
ponerla como condición no constituye un problema real; sin embargo, es un
problema potencial ya que un futuro cambio en la ley de exportación podría hacer
que el requisito dejara de ser trivial y que el software dejara de ser libre.
La mayoría de las licencias de software libre están basadas en el copyright, y
existen límites en los tipos de requisitos que se pueden imponer a través del
copyright. Si una licencia basada en el copyright respeta la libertad en las formas
antes mencionadas, es poco probable que surja otro tipo de problema que no
hayamos anticipado (a pesar de que esto ocurre ocasionalmente). Sin embargo,
algunas licencias de software libre están basadas en contratos, y los contratos
pueden imponer un rango mucho más grande de restricciones. Esto significa que
existen muchas maneras posibles de que tal licencia sea inaceptablemente
restrictiva y que no sea libre.
Nos resulta imposible enumerar todas las formas en las que eso puede pasar. Si
una licencia basada en un contrato restringe al usuario de un modo que no se
puede hacer con las licencias basadas en el copyright, y que no está mencionado
aquí como legítimo, tendremos que analizar el caso, y probablemente
concluyamos que no es libre.
Cuando se habla de software libre, es mejor evitar usar términos como «regalar» o
«gratuito», porque dichos términos implican que el asunto es el precio, no la
libertad. Algunos términos comunes como «piratería» implican opiniones con las
que esperamos no concuerde. Véase un análisis sobre el uso de esos términos en
nuestro artículopalabras y frases confusas que vale la pena evitar.
Por último, tenga en cuenta que para interpretar criterios tales como los que se
establecen en esta definición de software libre, se hace necesario un cuidadoso
análisis. Para decidir si una licencia de software específica es una licencia de
software libre, la evaluamos en base a estos criterios para determinar si concuerda
tanto con el espíritu de los mismos como con la terminología precisa. Si una
licencia incluye restricciones inaceptables, la rechazamos, aún cuando no
hubiéramos anticipado el problema en estos criterios. Algunas veces, los
requisitos de una licencia revelan una cuestión que hace necesaria una reflexión
más profunda, incluyendo la discusión con un abogado, antes de que podamos
decidir si el requisito es aceptable. Cuando llegamos a una conclusión sobre una
nueva cuestión, solemos actualizar estos criterios para que resulte más fácil ver
por qué una cierta licencia puede o no ser calificada como libre.
Si está interesado en saber si una licencia específica está calificada como licencia
de software libre, consulte nuestra lista de licencias. Si la licencia que busca no
está en la lista, puede consultarnos enviándonos un correo electrónico
a <licensing@gnu.org>.
Si está considerando escribir una nueva licencia, por favor contacte a la FSF
escribiendo a esa dirección. La proliferación de distintas licencias de software libre
significa mayor esfuerzo por parte de los usuarios para entenderlas; podemos
ayudarle a encontrar una licencia de software libre que ya exista y que satisfaga
sus necesidades.
Si eso no fuera posible, si realmente necesita una nueva licencia, con nuestra
ayuda puede asegurarse que la licencia sea realmente una licencia de software
libre y evitar varios problemas en la práctica.
Definición de Software propietario
El software propietario es aquel en el que un usuario tiene limitadas sus
posibilidades de usarlo, modificarlo o redistribuirlo, y a menudo su
licencia tiene un coste.
Se le llama software propietario, no libre, privado o privativo al tipo
de programas informáticas o aplicaciones en el que el usuario no puede acceder al
código fuente o tiene un acceso restringido y, por tanto, se ve limitado en sus
posibilidades de uso, modificación y redistribución. Este tipo de software se
opone al más reciententemente popularizado software libre, que permite
que cualquiera lo modifique y lo redistribuya.
El software propietario es aquel en el que un usuario tiene limitadas sus posibilidades de
usarlo, modificarlo o redistribuirlo, y a menudo su licencia tiene un coste.
Se le llama software propietario, no libre, privado o privativo al tipo de programas
informáticas o aplicaciones en el que el usuario no puede acceder al código fuente o tiene
un acceso restringido y, por tanto, se ve limitado en sus posibilidades de uso, modificación
y redistribución. Este tipo de software se opone al más reciententemente popularizado
software libre, que permite que cualquiera lo modifique y lo redistribuya.

El software propietario es el más común, ya que implica que para acceder al mismo el
usuario debe pagar por una licencia y sólo puede hacer uso del mismo en un contexto
restringido, es decir, que para que puedan usarlo distintas computadoras deben abonarse
otras licencias. Además, este software no puede modificarse ni perfeccionarse en su
funcionamiento, como así tampoco redistribuirse a otros destinatarios.
Los softwares propietarios son con frecuencia desarrollados por corporaciones, como
ocurre con aquel producido y distribuido por Microsoft. Estas compañías poseen los
derechos de autor sobre el software y, por tanto, los usuarios no pueden acceder al
código fuente, distribuir copias, mejorarlo o hacer públicas las mejoras.
En la actualidad, la popularidad del software libre desarrollado por pequeñas empresas o
grupos de usuarios ha alcanzado un gran auge, como ocurre con el sistema operativo
Linux. Este tipo de aplicaciones que permiten un amplio número de posibilidades al
usuario más allá del simple hecho de hacer uso del mismo fomenta conversaciones y
participación activa que, a menudo, contribuye a perfeccionar el sistema ágil y
confiablemente. Las grandes empresas han tomado nota de estos cambios y han debido
insertarse en la carrera del software libre lanzando versiones abiertas de sus programas o
invitando a los usuarios a opinar al respecto.
Máquina virtual
En informática una máquina virtual es un software que simula a una computadora
y puede ejecutar programas como si fuese una computadora real. Este software
en un principio fue definido como "un duplicado eficiente y aislado de una máquina
física". La acepción del término actualmente incluye a máquinas virtuales que no
tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que
ejecutan están limitados por los recursos y abstracciones proporcionados
por ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar
sistemas operativos para "probarlos". De esta forma podemos ejecutar un
sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro
sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo
directamente en nuestra computadora y sin miedo a que se desconfigure el
sistema operativo primario.

Tipos de máquinas virtuales[editar · editar código]
Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de
proceso más populares. Funcionamiento de VMWare, una de las máquinas
virtuales de sistema más populares.
Las máquinas virtuales se pueden clasificar en dos grandes categorías según su
funcionalidad y su grado de equivalencia a una verdadera máquina.
Máquinas virtuales de sistema (en inglés System Virtual Machine)
Máquinas virtuales de proceso (en inglés Process Virtual Machine)
Máquinas virtuales de sistema[editar · editar código]
Las máquinas virtuales de sistema, también llamadas máquinas virtuales de
hardware, permiten a la máquina física subyacente multiplicarse entre varias
máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de
software que permite la virtualización se la llama monitor de máquina
virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien
directamente sobre el hardware o bien sobre un sistema operativo ("host
operatingsystem").
Aplicaciones de las máquinas virtuales de sistema[editar · editar código]
Varios sistemas operativos distintos pueden coexistir sobre la misma
computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un
sistema operativo nuevo sin necesidad de instalarlo directamente.
La máquina virtual puede proporcionar una arquitectura de
instrucciones (ISA]) que sea algo distinta de la verdadera máquina. Es decir,
podemos simular hardware.
Varias máquinas virtuales (cada una con su propio sistema operativo llamado
sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar
servidores. Esto permite que servicios que normalmente se tengan que
ejecutar en computadoras distintas para evitar interferencias, se puedan
ejecutar en la misma máquina de manera completamente aislada y
compartiendo los recursos de una única computadora. La consolidación de
servidores a menudo contribuye a reducir el coste total de las instalaciones
necesarias para mantener los servicios, dado que permiten ahorrar en
hardware.
La virtualización es una excelente opción hoy día, ya que las máquinas
actuales (Laptops, desktops, servidores) en la mayoría de los casos están
siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.),
llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la
necesidad de nuevas máquinas en una ya existente permite un ahorro
considerable de los costos asociados (energía, mantenimiento, espacio, etc).
Máquinas virtuales de proceso[editar · editar código]
Una máquina virtual de proceso, a veces llamada "máquina virtual de
aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y
soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza
el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su
objetivo es el de proporcionar un entorno de ejecución independiente de la
plataforma de hardware y del sistema operativo, que oculte los detalles de la
plataforma subyacente y permita que un programa se ejecute siempre de la misma
forma sobre cualquier plataforma.
El ejemplo más conocido actualmente de este tipo de máquina virtual es
la máquina virtual de Java. Otra máquina virtual muy conocida es la del
entorno .Net de Microsoft que se llama "CommonLanguageRuntime".
Maquinas virtuales Oracle VM Virtual Box

virtualbox
Maquinas virtuales Oracle VM Virtual Box
las máquinas virtuales nos ayudan a poder instalar distintos sistemas operativos dentro de
un mismo ordenador, actuando de forma independiente.

Puede servirnos para probar el comportamiento de un mismo programa en distintos
sistemas operativos es posible cambiar el tamaño de la pantalla e integra el puntero
del ratón y controlador de USB virtual
Virtual Box
Es gratuito y desde su página de descarga se elige el de la plataforma que
se
vaya
a
instalar
Windows,
linux
o
Mac
OS.
La instalacion es fácil y una vez instalada desde crear la primera máquina virtual,
en este caso se instaló Windows XP que se habia anteriormente montado
con Daemons Tools un disco tambienvirtual .

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Taller de sistemas bryan melo
Taller de sistemas bryan meloTaller de sistemas bryan melo
Taller de sistemas bryan melo
 
SistemasOperativos
SistemasOperativosSistemasOperativos
SistemasOperativos
 
Shirley
ShirleyShirley
Shirley
 
Javier aponte
Javier aponteJavier aponte
Javier aponte
 
Sistema operativo1
Sistema operativo1Sistema operativo1
Sistema operativo1
 
Leidy pardo
Leidy pardoLeidy pardo
Leidy pardo
 
Trabajo sis
Trabajo sisTrabajo sis
Trabajo sis
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Trabajo sistemas terminado
Trabajo sistemas terminadoTrabajo sistemas terminado
Trabajo sistemas terminado
 
Un sistema operativo
Un sistema operativoUn sistema operativo
Un sistema operativo
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistema operativo1
Sistema operativo1Sistema operativo1
Sistema operativo1
 
Un sistema operativo
Un sistema operativoUn sistema operativo
Un sistema operativo
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 

Destacado

A Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileA Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileIlari Henrik Aegerter
 
Prepare for the "When were you criticized" Job interview question
Prepare for the "When were you criticized" Job interview questionPrepare for the "When were you criticized" Job interview question
Prepare for the "When were you criticized" Job interview questionDan Armishaw
 
GLAS Transport biographical story - Nikola Neshkoski
GLAS Transport biographical story - Nikola NeshkoskiGLAS Transport biographical story - Nikola Neshkoski
GLAS Transport biographical story - Nikola NeshkoskiSimone Petrucci
 
Asad Sheikh Cert
Asad Sheikh CertAsad Sheikh Cert
Asad Sheikh CertAsad Sheikh
 
Green Roofs in Cincinnati
Green Roofs in CincinnatiGreen Roofs in Cincinnati
Green Roofs in CincinnatiRose Seeger
 
2° desafío-2-núcleo-y-adn
2° desafío-2-núcleo-y-adn2° desafío-2-núcleo-y-adn
2° desafío-2-núcleo-y-adnFabian Castro
 
Modul teori basis data ch. 2
Modul teori basis data ch. 2Modul teori basis data ch. 2
Modul teori basis data ch. 2Ratzman III
 
Nitin Doshi - Apps Should Replace Patient Journals
Nitin Doshi - Apps Should Replace Patient JournalsNitin Doshi - Apps Should Replace Patient Journals
Nitin Doshi - Apps Should Replace Patient JournalsNitin Doshi
 
Caracteristica y estructura de la noticia
Caracteristica y estructura de la noticiaCaracteristica y estructura de la noticia
Caracteristica y estructura de la noticiaBERENICE GUADARRAMA
 
Operational risk management
Operational risk managementOperational risk management
Operational risk managementMediotype .
 

Destacado (16)

Actividad 1
Actividad 1Actividad 1
Actividad 1
 
A Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and AgileA Happy Marriage between Context-Driven and Agile
A Happy Marriage between Context-Driven and Agile
 
Prepare for the "When were you criticized" Job interview question
Prepare for the "When were you criticized" Job interview questionPrepare for the "When were you criticized" Job interview question
Prepare for the "When were you criticized" Job interview question
 
GLAS Transport biographical story - Nikola Neshkoski
GLAS Transport biographical story - Nikola NeshkoskiGLAS Transport biographical story - Nikola Neshkoski
GLAS Transport biographical story - Nikola Neshkoski
 
Asad Sheikh Cert
Asad Sheikh CertAsad Sheikh Cert
Asad Sheikh Cert
 
Cultura occ y prcolombina
Cultura occ  y prcolombinaCultura occ  y prcolombina
Cultura occ y prcolombina
 
EL CUERPO QUE SOÑE
EL CUERPO QUE SOÑEEL CUERPO QUE SOÑE
EL CUERPO QUE SOÑE
 
Test
TestTest
Test
 
book_CMYK
book_CMYKbook_CMYK
book_CMYK
 
Green Roofs in Cincinnati
Green Roofs in CincinnatiGreen Roofs in Cincinnati
Green Roofs in Cincinnati
 
CV Yoana Masek
CV Yoana MasekCV Yoana Masek
CV Yoana Masek
 
2° desafío-2-núcleo-y-adn
2° desafío-2-núcleo-y-adn2° desafío-2-núcleo-y-adn
2° desafío-2-núcleo-y-adn
 
Modul teori basis data ch. 2
Modul teori basis data ch. 2Modul teori basis data ch. 2
Modul teori basis data ch. 2
 
Nitin Doshi - Apps Should Replace Patient Journals
Nitin Doshi - Apps Should Replace Patient JournalsNitin Doshi - Apps Should Replace Patient Journals
Nitin Doshi - Apps Should Replace Patient Journals
 
Caracteristica y estructura de la noticia
Caracteristica y estructura de la noticiaCaracteristica y estructura de la noticia
Caracteristica y estructura de la noticia
 
Operational risk management
Operational risk managementOperational risk management
Operational risk management
 

Similar a Kaye

Trabajo sistemas ... sistemas operativos
Trabajo sistemas   ... sistemas operativosTrabajo sistemas   ... sistemas operativos
Trabajo sistemas ... sistemas operativosbrandonxx
 
Trabajo sistemas terminado
Trabajo sistemas terminadoTrabajo sistemas terminado
Trabajo sistemas terminadokatalina001
 
Sistemas operativo vanessa
Sistemas operativo vanessaSistemas operativo vanessa
Sistemas operativo vanessareggaemufin
 
Sistema operativo1
Sistema operativo1Sistema operativo1
Sistema operativo1goldenay
 
Trabajo de monografias
Trabajo de monografiasTrabajo de monografias
Trabajo de monografiasseuansed
 
Sistemas operativos maye
Sistemas operativos mayeSistemas operativos maye
Sistemas operativos mayehecmaster222
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosrIsAdA
 
Adriana rivera sistema operativo
Adriana rivera sistema operativoAdriana rivera sistema operativo
Adriana rivera sistema operativomamasita123
 
Adriana rivera sistema operativo
Adriana rivera sistema operativoAdriana rivera sistema operativo
Adriana rivera sistema operativomamasita123
 
Sistemas operativos hector
Sistemas operativos hectorSistemas operativos hector
Sistemas operativos hectorhecmaster222
 

Similar a Kaye (18)

Collection
CollectionCollection
Collection
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Trabajo sistemas ... sistemas operativos
Trabajo sistemas   ... sistemas operativosTrabajo sistemas   ... sistemas operativos
Trabajo sistemas ... sistemas operativos
 
Trabajo sistemas terminado
Trabajo sistemas terminadoTrabajo sistemas terminado
Trabajo sistemas terminado
 
Sistemas operativo vanessa
Sistemas operativo vanessaSistemas operativo vanessa
Sistemas operativo vanessa
 
Sistema operativo1
Sistema operativo1Sistema operativo1
Sistema operativo1
 
Sistemas operativo
Sistemas operativoSistemas operativo
Sistemas operativo
 
Leidy pardo
Leidy pardoLeidy pardo
Leidy pardo
 
Trabajo de monografias
Trabajo de monografiasTrabajo de monografias
Trabajo de monografias
 
Un sistema operativo
Un sistema operativoUn sistema operativo
Un sistema operativo
 
Sistemas operativos maye
Sistemas operativos mayeSistemas operativos maye
Sistemas operativos maye
 
Gordin
GordinGordin
Gordin
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Adriana rivera sistema operativo
Adriana rivera sistema operativoAdriana rivera sistema operativo
Adriana rivera sistema operativo
 
Adriana rivera sistema operativo
Adriana rivera sistema operativoAdriana rivera sistema operativo
Adriana rivera sistema operativo
 
45
4545
45
 
Sistemas operativos hector
Sistemas operativos hectorSistemas operativos hector
Sistemas operativos hector
 
Fredy cardenas
Fredy cardenasFredy cardenas
Fredy cardenas
 

Kaye

  • 1. Sistema operativo Un sistema operativo (SO, frecuentemente OS, del inglés Operating System) es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes y anteriores próximos y viceversa.2 Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador web y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o kernel. Esta identidad entre kernel y sistema operativo es solo cierta si el núcleo es monolítico. Otro ejemplo para comprender esta diferencia se encuentra en la plataforma Amiga, donde el entorno gráfico de usuario se distribuía por separado, de modo que, también podía reemplazarse por otro, como era el caso de directory Opus o incluso manejarlo arrancando con una línea de comandos y el sistema gráfico. De este modo, al arrancar un Amiga, comenzaba a funcionar con el propio sistema operativo que llevaba incluido en una ROM, por lo que era cuestión del usuario decidir si necesitaba un entorno gráfico para manejar el sistema operativo o simplemente otra aplicación. Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, usado en las llamadas distribuciones Linux, ya que al estar también basadas en Unix, proporcionan un sistema de funcionamiento similar. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores3 se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar.4 (Véase AmigaOS, beOS o MacOS como los pioneros5 de dicha modernización, cuando los Amiga fueron bautizados con el sobrenombre de Video Toasters6 por su capacidad para la Edición de vídeo en entorno multitarea round robin, con gestión de miles de colores einterfaces intuitivos para diseño en 3D. Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo (teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores, etc.). En cuyo caso, son manejados mediante una Interfaz Gráfica de Usuario, un gestor de ventanas o un entorno de escritorio, si es un
  • 2. celular, mediante una consola o control remoto si es un DVD y, mediante una línea de comandos o navegador web si es un enrutador. Perspectiva histórica Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1955-1965) se llevaron a cabo avances en elhardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc. A finales de los años 1980, una computadora Commodore Amiga equipada con una aceleradora Video Toaster era capaz de producir efectos comparados a sistemas dedicados que costaban el triple. Un Video Toaster junto a Lightwave ayudó a producir muchos programas de televisión y películas, entre las que se incluyen Babylon 5, Seaquest DSV y Terminator II.7 Problemas de explotación y soluciones iniciales El problema principal de los primeros sistemas era la baja utilización de los mismos, la primera solución fue poner un operador profesional que lo manejase, con lo que se eliminaron las hojas de reserva, se ahorró tiempo y se aumentó la velocidad. Para ello, los trabajos se agrupaban de forma manual en lotes mediante lo que se conoce como procesamiento por lotes (batch) sin automatizar. Monitores residentes Fichas en lenguaje de procesamiento por lotes, con programa y datos, para ejecución secuencial. Según fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organización de tareas sin necesidad de un operador. Debido a ello se crearon los monitores residentes: programas que residían en memoria y que gestionaban la ejecución de una cola de trabajos.
  • 3. Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida. Sistemas con almacenamiento temporal de E/S Los avances en el hardware crearon el soporte de interrupciones y posteriormente se llevó a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios cálculos, por lo que se creó el sistema de búfers con el siguiente funcionamiento: Un programa escribe su salida en un área de memoria (búfer 1). El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula depositando la salida en el buffer 2. La salida desde el buffer 1 termina y el nuevo cálculo también. Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1. El proceso se puede repetir de nuevo. Los problemas surgen si hay muchas más operaciones de cálculo que de E/S (limitado por la CPU) o si por el contrario hay muchas más operaciones de E/S que cálculo (limitado por la E/S). Spoolers Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (SimultaneousPeripherialOperation On-Line). Sistemas operativos multiprogramados Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento: Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos. Se pueden mantener en memoria varios programas. Se asigna el uso de la CPU a los diferentes programas en memoria. Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones: Administrar la memoria. Gestionar el uso de la CPU (planificación). Administrar el uso de los dispositivos de E/S.
  • 4. Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado. Llamadas al sistema operativo Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello: Las llamadas correspondientes deben tener el mismo formato. Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior. Modos de ejecución en un CPU Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el conjunto de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes: Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones. Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones. Llamadas al sistema Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el S.O. haría que hubiera que reconstruir la aplicación. Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno). Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función. Bibliotecas de interfaz de llamadas al sistema Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programación.
  • 5. La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema. Interrupciones y excepciones El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones: Algún dispositivo de E/S necesita atención. Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación). En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa. Según los dos casos anteriores tenemos las interrupciones y la excepciones: Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado. Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO. Tratamiento de las interrupciones Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso. El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado. La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando continuamente rutinas para consultar el estado del periférico. El inconveniente es que el dispositivo debe tener los circuitos electrónicos necesarios para acceder al sistema de interrupciones del computador. Importancia de las interrupciones El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S. El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando. En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).
  • 6. Un ejemplo de sincronismo por interrupción es el almacenamiento de caracteres introducidos mediante el teclado. Cuando se introduce un carácter, se codifica en el registro de datos del dispositivo y además se activa un bit del registro de estado quien crea una interrupción en el hardware. El procesador deja temporalmente la tarea que estaba completando y ejecuta la rutina de atención a la interrupción correspondiente. El teclado almacena el carácter en el vector de memoria intermedia ( también llamado buffer) asociada al teclado y despierta el proceso que había en el estado de espera de la operación de entrada/salida. Excepciones Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas. Clases de excepciones Las instrucciones de un programa pueden estar mal construidas por diversas razones: El código de operación puede ser incorrecto. Se intenta realizar alguna operación no definida, como dividir por cero. La instrucción puede no estar permitida en el modo de ejecución actual. La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso. Importancia de las excepciones El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO. Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga. Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente. La Definición de Software Libre La definición de software libre estipula los criterios que se tienen que cumplir para que un programa sea considerado libre. De vez en cuando modificamos esta definición para clarificarla o para resolver problemas sobre cuestiones delicadas.
  • 7. Más abajo en esta página, en la sección Historial, se puede consultar la lista de modificaciones que afectan la definición de software libre. «Software libre» significa que el software respeta la libertad de los usuarios y la comunidad. En términos generales, los usuarios tienen la libertad de copiar, distribuir, estudiar, modificar y mejorar el software. Con estas libertades, los usuarios (tanto individualmente como en forma colectiva) controlan el programa y lo que hace. Cuando los usuarios no controlan el programa, el programa controla a los usuarios. El programador controla el programa y, a través del programa, controla a los usuarios. Un programa que no es libre, llamado «privativo», es por lo tanto un instrumento de poder injusto. Por tanto, el «software libre» es una cuestión de libertad, no de precio. Para entender el concepto, piense en «libre» como en «libre expresión», no como en «barra libre». Un programa es software libre si los usuarios tienen las cuatro libertades esenciales: La libertad de ejecutar el programa para cualquier propósito (libertad 0). La libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello. La libertad de redistribuir copias para ayudar a su prójimo (libertad 2). La libertad de distribuir copias de sus versiones modificadas a terceros (libertad 3). Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuente es una condición necesaria para ello. Un programa es software libre si los usuarios tienen todas esas libertades. Por tanto, usted debe ser libre de redistribuir copias, tanto con como sin modificaciones, ya sea gratuitamente o cobrando una tarifa por la distribución, a cualquiera en cualquier parte. El ser libre de hacer estas cosas significa, entre otras cosas, que no tiene que pedir ni pagar el permiso. También debe tener la libertad de hacer modificaciones y usarlas en privado para su propio trabajo o pasatiempo, sin siquiera mencionar que existen. Si publica sus cambios, no debe estar obligado a notificarlo a nadie en particular, ni de ninguna manera en particular. La libertad de ejecutar el programa significa que cualquier tipo de persona u organización es libre de usarlo en cualquier tipo de sistema de computación, para
  • 8. cualquier tipo de trabajo y finalidad, sin que exista obligación alguna de comunicarlo al programador ni a ninguna otra entidad específica. En esta libertad, lo que importa es el propósito de los usuarios, no el de los programadores. Usted como usuario es libre de ejecutar el programa para alcanzar sus propósitos, y si lo distribuye a otra persona, también esa persona será libre de ejecutarlo para lo que necesite; usted no tiene derecho a imponerle sus propios objetivos. La libertad de redistribuir copias debe incluir las formas binarias o ejecutables del programa, así como el código fuente, tanto para las versiones modificadas como para las no lo estén. (Distribuir programas en forma de ejecutables es necesario para que los sistemas operativos libres se puedan instalar fácilmente). Resulta aceptable si no existe un modo de producir una formato binario o ejecutable para un programa específico, dado que algunos lenguajes no incorporan esa característica, pero debe tener la libertad de redistribuir dichos formatos si encontrara o programara una forma de hacerlo. Para que la libertad 1 y 3 de realizar cambios y publicar las versiones modificadas tengan sentido, usted debe tener acceso al código fuente del programa. Por consiguiente, el acceso al código fuente es una condición necesaria para el software libre. El «código fuente» ofuscado no es código fuente real, y no cuenta como código fuente. La libertad 1 incluye la libertad de usar su versión modificada en lugar de la original. Si el programa se entrega con un producto diseñado para ejecutar versiones modificadas de terceros, pero rechaza ejecutar las suyas, una práctica conocida como «tivoización» [«tivoization»] o «arranque seguro» [«lockdown»] (en la terminología perversa de los que la practican); la libertad 1 se convierte más en una ficción teórica que en una libertad práctica. Esto no es suficiente. En otras palabras, estos binarios no son software libre, incluso si se compilaron desde un código fuente que es libre. Una manera importante de modificar el programa es agregándole subrutinas y módulos libres ya disponibles. Si la licencia del programa especifica que no se pueden añadir módulos que ya existen y que están bajo una licencia apropiada, por ejemplo si requiere que usted sea el titular de los derechos de autor del código que desea añadir, entonces se trata de una licencia demasiado restrictiva como para considerarla libre. La libertad 3 incluye la libertad de publicar sus versiones modificadas como software libre. Una licencia libre también puede permitir otras formas de publicarlas; en otras palabras, no tiene que ser una licencia de copyleft. No
  • 9. obstante, una licencia que requiera que las versiones modificadas no sean libres, no se puede considerar libre. Para que estas libertades sean reales, deben ser permanentes e irrevocables siempre que usted no cometa ningún error; si el programador del software tiene el poder de revocar la licencia, o de añadir restricciones a las condiciones de uso en forma retroactiva, sin que haya habido ninguna acción de parte del usuario que lo justifique, el software no es libre. Sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre son aceptables, cuando no entran en conflicto con las libertades principales. Por ejemplo, el copyleft (definido muy resumidamente) es la regla en base a la cual, cuando redistribuye el programa, no puede agregar restricciones para denegar a los demás las libertades principales. Esta regla no entra en conflicto con las libertades principales, más bien las protege. «Software libre» no significa que «no es comercial». Un programa libre debe estar disponible para el uso comercial, la programación comercial y la distribución comercial. La programación comercial de software libre ya no es inusual; tal software libre comercial es muy importante. Puede haber pagado dinero para obtener copias de software libre, o puede haber obtenido copias sin costo. Pero sin tener en cuenta cómo obtuvo sus copias, siempre tiene la libertad de copiar y modificar el software, incluso devender copias. Si una modificación constituye o no una mejora, es un asunto subjetivo. Si su derecho a modificar un programa se limita, básicamente, a modificaciones que alguna otra persona considera una mejora, el programa no es libre. No obstante, eventuales reglas sobre cómo empaquetar una versión modificada son aceptables si no limitan substancialmente su libertad para publicar versiones modificadas, o su libertad para hacer y usar versiones modificadas en privado. Así, es aceptable que una licencia le obligue a cambiar el nombre de la version modificada, eliminar el logotipo o identificar sus modificaciones como suyas. Son aceptables siempre y cuando esas obligaciones no sean tan agobiantes que le dificulten la publicación de sus modificaciones. Como ya está realizando otras modificaciones al programa, no le supondrá un problema hacer algunas más. Las normas del tipo «si pone a disposición su versión de este modo, también debe hacerlo de este otro modo» también pueden ser, bajo la misma condición, admisibles. Un ejemplo de una norma admisible sería alguna que requiera que, si usted ha distribuido una versión modificada y uno de los programadores anteriores le solicita una copia, usted deba enviársela (tenga en cuenta que tal norma le sigue permitiendo optar por distribuir o no distribuir su versión). Las normas que
  • 10. obligan a suministrar el código fuente a los usuarios de las versiones publicadas también son admisibles. Un problema particular se presenta cuando la licencia requiere que a un programa se le cambie el nombre con el cual será invocado por otros programas. De hecho este requisito dificulta la publicación de la versión modificada para reemplazar al original cuando sea invocado por esos otros programas. Este tipo de requisitos es aceptable únicamente cuando exista un instrumento adecuado para la asignación de alias que permita especificar el nombre del programa original como un alias de la versión modificada. En el proyecto GNU, usamos copyleft para proteger legalmente estas libertades para todos. Pero también existe software libre sin copyleft. Creemos que existen razones importantes por las que es mejor usar copyleft, pero si su programa es software libre sin copyleft, sigue siendo ético de todos modos. (Véase en categorías del software libreuna descripción de la relación que existe entre «software libre», «software con copyleft» y otros tipos de software libre). En algunos casos las regulaciones de control de exportación y las sanciones comerciales pueden limitar sus libertades de distribuir copias de programas a nivel internacional. Los desarrolladores de software no tienen el poder de eliminar o pasar por alto estas restricciones, pero lo que pueden y deben hacer es rechazar imponerlas como condiciones para el uso del programa. De este modo, las restricciones no afectarán las actividades ni a las personas fuera de las jurisdicciones de dichos gobiernos. Por tanto, las licencias de software libre no deben requerir la obediencia a ninguna regulación de exportaciones que no sea trivial como condición para ejercer cualquiera de las libertades esenciales. La mera mención de la existencia de normas de exportación, sin ponerlas como condición de la licencia misma, es aceptable ya que esto no restringe a los usuarios. Si una norma de exportación es de hecho trivial para el software libre, ponerla como condición no constituye un problema real; sin embargo, es un problema potencial ya que un futuro cambio en la ley de exportación podría hacer que el requisito dejara de ser trivial y que el software dejara de ser libre. La mayoría de las licencias de software libre están basadas en el copyright, y existen límites en los tipos de requisitos que se pueden imponer a través del copyright. Si una licencia basada en el copyright respeta la libertad en las formas antes mencionadas, es poco probable que surja otro tipo de problema que no hayamos anticipado (a pesar de que esto ocurre ocasionalmente). Sin embargo, algunas licencias de software libre están basadas en contratos, y los contratos pueden imponer un rango mucho más grande de restricciones. Esto significa que
  • 11. existen muchas maneras posibles de que tal licencia sea inaceptablemente restrictiva y que no sea libre. Nos resulta imposible enumerar todas las formas en las que eso puede pasar. Si una licencia basada en un contrato restringe al usuario de un modo que no se puede hacer con las licencias basadas en el copyright, y que no está mencionado aquí como legítimo, tendremos que analizar el caso, y probablemente concluyamos que no es libre. Cuando se habla de software libre, es mejor evitar usar términos como «regalar» o «gratuito», porque dichos términos implican que el asunto es el precio, no la libertad. Algunos términos comunes como «piratería» implican opiniones con las que esperamos no concuerde. Véase un análisis sobre el uso de esos términos en nuestro artículopalabras y frases confusas que vale la pena evitar. Por último, tenga en cuenta que para interpretar criterios tales como los que se establecen en esta definición de software libre, se hace necesario un cuidadoso análisis. Para decidir si una licencia de software específica es una licencia de software libre, la evaluamos en base a estos criterios para determinar si concuerda tanto con el espíritu de los mismos como con la terminología precisa. Si una licencia incluye restricciones inaceptables, la rechazamos, aún cuando no hubiéramos anticipado el problema en estos criterios. Algunas veces, los requisitos de una licencia revelan una cuestión que hace necesaria una reflexión más profunda, incluyendo la discusión con un abogado, antes de que podamos decidir si el requisito es aceptable. Cuando llegamos a una conclusión sobre una nueva cuestión, solemos actualizar estos criterios para que resulte más fácil ver por qué una cierta licencia puede o no ser calificada como libre. Si está interesado en saber si una licencia específica está calificada como licencia de software libre, consulte nuestra lista de licencias. Si la licencia que busca no está en la lista, puede consultarnos enviándonos un correo electrónico a <licensing@gnu.org>. Si está considerando escribir una nueva licencia, por favor contacte a la FSF escribiendo a esa dirección. La proliferación de distintas licencias de software libre significa mayor esfuerzo por parte de los usuarios para entenderlas; podemos ayudarle a encontrar una licencia de software libre que ya exista y que satisfaga sus necesidades. Si eso no fuera posible, si realmente necesita una nueva licencia, con nuestra ayuda puede asegurarse que la licencia sea realmente una licencia de software libre y evitar varios problemas en la práctica.
  • 12. Definición de Software propietario El software propietario es aquel en el que un usuario tiene limitadas sus posibilidades de usarlo, modificarlo o redistribuirlo, y a menudo su licencia tiene un coste. Se le llama software propietario, no libre, privado o privativo al tipo de programas informáticas o aplicaciones en el que el usuario no puede acceder al código fuente o tiene un acceso restringido y, por tanto, se ve limitado en sus posibilidades de uso, modificación y redistribución. Este tipo de software se opone al más reciententemente popularizado software libre, que permite que cualquiera lo modifique y lo redistribuya. El software propietario es aquel en el que un usuario tiene limitadas sus posibilidades de usarlo, modificarlo o redistribuirlo, y a menudo su licencia tiene un coste. Se le llama software propietario, no libre, privado o privativo al tipo de programas informáticas o aplicaciones en el que el usuario no puede acceder al código fuente o tiene un acceso restringido y, por tanto, se ve limitado en sus posibilidades de uso, modificación y redistribución. Este tipo de software se opone al más reciententemente popularizado software libre, que permite que cualquiera lo modifique y lo redistribuya. El software propietario es el más común, ya que implica que para acceder al mismo el usuario debe pagar por una licencia y sólo puede hacer uso del mismo en un contexto restringido, es decir, que para que puedan usarlo distintas computadoras deben abonarse otras licencias. Además, este software no puede modificarse ni perfeccionarse en su funcionamiento, como así tampoco redistribuirse a otros destinatarios. Los softwares propietarios son con frecuencia desarrollados por corporaciones, como ocurre con aquel producido y distribuido por Microsoft. Estas compañías poseen los derechos de autor sobre el software y, por tanto, los usuarios no pueden acceder al código fuente, distribuir copias, mejorarlo o hacer públicas las mejoras. En la actualidad, la popularidad del software libre desarrollado por pequeñas empresas o grupos de usuarios ha alcanzado un gran auge, como ocurre con el sistema operativo Linux. Este tipo de aplicaciones que permiten un amplio número de posibilidades al usuario más allá del simple hecho de hacer uso del mismo fomenta conversaciones y participación activa que, a menudo, contribuye a perfeccionar el sistema ágil y confiablemente. Las grandes empresas han tomado nota de estos cambios y han debido insertarse en la carrera del software libre lanzando versiones abiertas de sus programas o invitando a los usuarios a opinar al respecto.
  • 13. Máquina virtual En informática una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual". Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario. Tipos de máquinas virtuales[editar · editar código] Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de proceso más populares. Funcionamiento de VMWare, una de las máquinas virtuales de sistema más populares. Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina. Máquinas virtuales de sistema (en inglés System Virtual Machine) Máquinas virtuales de proceso (en inglés Process Virtual Machine) Máquinas virtuales de sistema[editar · editar código] Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operatingsystem").
  • 14. Aplicaciones de las máquinas virtuales de sistema[editar · editar código] Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual puede proporcionar una arquitectura de instrucciones (ISA]) que sea algo distinta de la verdadera máquina. Es decir, podemos simular hardware. Varias máquinas virtuales (cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en computadoras distintas para evitar interferencias, se puedan ejecutar en la misma máquina de manera completamente aislada y compartiendo los recursos de una única computadora. La consolidación de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware. La virtualización es una excelente opción hoy día, ya que las máquinas actuales (Laptops, desktops, servidores) en la mayoría de los casos están siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya existente permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio, etc). Máquinas virtuales de proceso[editar · editar código] Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno .Net de Microsoft que se llama "CommonLanguageRuntime".
  • 15. Maquinas virtuales Oracle VM Virtual Box virtualbox Maquinas virtuales Oracle VM Virtual Box las máquinas virtuales nos ayudan a poder instalar distintos sistemas operativos dentro de un mismo ordenador, actuando de forma independiente. Puede servirnos para probar el comportamiento de un mismo programa en distintos sistemas operativos es posible cambiar el tamaño de la pantalla e integra el puntero del ratón y controlador de USB virtual Virtual Box Es gratuito y desde su página de descarga se elige el de la plataforma que se vaya a instalar Windows, linux o Mac OS. La instalacion es fácil y una vez instalada desde crear la primera máquina virtual, en este caso se instaló Windows XP que se habia anteriormente montado con Daemons Tools un disco tambienvirtual .