Introducción
En esta lectura se hablará acerca de la arquitectura de tres sistemas operativos, de los cuales 2 son SO de computadoras portátiles(Laptop) o de escritorios y uno móvil, para ser más precisos los sistemas operativos son Windows, Ubuntu, y Android, durante la lectura se comenta cómo es que funcionan estos tres sistemas operativos desde un enfoque más a fondo, mucho más técnico, que lo que puedes encontrar en la página de distribución del sistema operativo, gracias a que en la página oficial nunca se llega tan a fondo, descubrirás aspectos sorprendentes acerca de los sistemas operativos en cómo es que cada vez que inicia tu computadora suceden múltiples operaciones internas que no imaginas, en cómo es que esa simple pantalla que ves al inicio funciona de una manera totalmente diferente, al igual con todo con lo que ya has interactuado dentro de una computadora lo comentaremos,
y como punto extra te mostraremos como instalar Ubuntu 12 LTS.











Android
Propósito.
El propósito general de Sistema Operativo Android es la vía móvil para ser más específica la zona de teléfonos inteligentes.

Interfaz.
La interfaz que muestra Android es de manipulación directa, con esto exige un control de tecnología touch en el cual el usuario puede tocar la pantalla y tener el mayor control solo con los dedos. Aparte de esto cuenta con HomeScreen, es un punto en el cual puedes acceder a varias aplicaciones, en un punto se parece mucho al escritorio de una PC, Esta opción es muy atractiva ya que tiene una gran cantidad de configuración para que la ajustes a la opción de cada usuario y poder elegir las accesos directos para las aplicaciones que más utilices, y también cabe mencionar los widgets los cuales facilitan el uso de una aplicación como sería una vista rápida de tu calendario pero sin necesidad de entrar a la aplicación. Un hecho que me agrada es el status bar el cual es la pequeña barra que siempre se muestra en la parte superior en el cuál muestra la información básica del teléfono como la cantidad de batería, hora, señal del teléfono o wifi, alarmas, sonido más algunas aplicaciones que pueden variar por el teléfono, por ejemplo un celular con posibilidad de ahorro de energía, también en el status bar se muestran las notificaciones de aplicaciones las cuales tengan habilitadas la opción de mostrar notificaciones, y eso no es todo al presionar y deslizar hacia la parte inferior se muestra a más detalle las notificaciones aparte de tener acceso a una segunda forma de acceder a configuraciones directa del teléfono, sin deslizar y arrastrar solo muestra la información pero ahora puedes configurar con un solo toque aspectos del teléfono como antes dicho el sonido, señal del teléfono y también puede ser configurado para que sea del gusto de cada usuario, como puede agregarse la opción de habilitar modo avión y quitar la configuración sonido como ejemplo. Por último cabe mencionar que hay la opción modificar la pantalla para poder ver videos y aplicaciones con el modo de pantalla horizontal ya que al cambiar el teléfono de orientación este lo detecta y cambia la interfaz a donde el teléfono detecta que la posición adecuada, y como antes mencionado se puede deshabilitar, en fin una de las gran ventajas de la interfaz Android es su capacidad de configuración.

Ejecución de Programas.
Ejecutar Aplicaciones (Programas) es uno de los mayores logros de todos los sistemas operativos, y la forma en que Android los realiza es dejando clara diferencia entre procesos, tareas y hebras.
5 tipos de procesos son identificados dentro de Android, para que una aplicación funciones correctamente cada proceso tiene un grado de importancia iniciando desde el mayor hasta el menor:
-Foreground: un procesos que está corriendo una Actividad.
-Visible: Si un proceso está en pausa pero aún es visible
-Servicie: Un proceso que ejecuta un servicio ya antes iniciado
-Background: Una actividad que actualmente no está visible es detenida por los procesos de Background.
-Empty: Este proceso contiene las actividades que no están siendo ejecutadas y solo existe para ese propósito.

Si el sistema está corriendo de manera lenta, los procesos se vuelven parte crucial a la decisión del SO para saber qué proceso se elimina para liberar memoria.
Usualmente solo los procesos Empty y Background son los procesos a eliminar para que así la experiencia del usuario no se vea afectada.
El sistema está diseñado para dejar todo intocable lo máximo relacionado con un componente visual como una Actividad.
Cada Aplicación es ejecutada por sus procesos y sus respectivas hebras.
Las dos términos tareas y aplicaciones están muy unidos, dar una tarea se podría ver como aplicaciones por parte del usuario, de hecho las tareas son una serie de actividades o múltiples Aplicaciones, un ejemplo sería el de un usuario abriendo una aplicación de correo, en donde abre un link dentro del mensaje incluyendo un navegador predeterminado o elegido en el momento. Este escenario se podría ver como la tarea incluiría dos aplicaciones el correo y el navegador, donde el correo tendría dos actividades una por parte del navegador. Una ventaja de las tareas es la oportunidad de dejar al usuario que pueda regresar paso a paso como una función de una pila.
La estructura en que una aplicación es basada en cuatro componentes que son Actividad, Service, BroadcastReceiver, y ContentProvider, pero una aplicación no necesariamente tiene que tener los cuatro componentes, pero para mínimo mostrar algo visible al usuario hay que tener una Actividad.
Una aplicación puede iniciar otra aplicación mediante los intentos, y el Intent Manager se encarga de los intentos entrantes para poder ejecutarlos.
Service y Broadcast receivers permite a las aplicaciones hacer trabajos en background y proveer función adicional a los componentes. Broadcast receiver puede ser iniciado por eventos y solo duran un corto periodo de tiempo mientras que service dura un largo periodo de tiempo.
Una actividad es una única pantalla de la aplicación como una pantalla de un navegador o la zona de configuración, contiene todos los elementos visibles imágenes, botones, escritos etc.
El content Provider es el alojamiento de información por aplicación, esta base de datos puede ser utilizada para compartir información dentro de las aplicaciones, dados los correctos permisos para acceder a la información.


Comunicaciones.
Intents es la base de las comunicaciones, Intents son mensajes asíncronos incluyendo el mensaje que debe de ser transportado. Los intents class pueden tener algunas acciones como editar, ver, o para broadcast action de tiempo.
En adición de al mensaje contiene un identificador llamado URI Uniform Resource Identifier, que especifica la acción del mensaje, opcionalmente el intento puede tener una categoría, un tipo, y un nombre de componente, información extra y banderas.
Los intentos pueden ser filtrados por las aplicaciones para especificar que intentos pueden ser tratados dentro de la aplicación. Cada aplicación tiene una lista de los intentos que pueden procesar.

Asignación de Recursos.
La asignación de los recursos es de tal manera que cada aplicación pueda tener a la mano todos los recursos desde el inicio, el encargado de manejar la asignación es Dalvik.


Protección y Seguridad.
En cuanto a la seguridad por lo mismo que Android es un Sistema operativo libre, puede tener muchas fallas ya que es muy fácil su modificación no solamente interna si no externa, gracias a que se puede enviar virus por mensajes y al acceder al mensaje puedes ser afectado por el virus, porque digo que se puede, bueno puedes contar con antivirus ya hay una buena cantidad en el mercado, claro está esta que no todos estos antivirus son tan confiables y avanzó al siguiente aspecto que es la tienda de Android google play, el cual no solo muestra todas las aplicaciones en el mercado de Android hablando no solo de antivirus si no todas sus categorías pero el punto es que existe Google Bouncer una aplicación utilizada frecuentemente por Google para escanear aplicaciones maliciosas y eliminarlas del Google Play, y continuando ahora sigue la compra e instalación de aplicaciones al comprar una aplicación te aparece un lista de los recurso a los cuales quiere acceder la aplicación, como puede ser una aplicación de mensajería te pide acceso a contactos o ubicación GPS, en todo caso siempre es bueno fijarse en las descargas y el grado de confianza que Google muestra en las notas de la aplicación.

Sincronización de Procesos.
Android es un sistema multiproceso, lo que quiere decir que es capaz de ejecutar varios procesos (tareas) de forma simultánea, y multi-flujo, que significa que puede ejecutar de forma simultánea dos o más porciones de código del mismo proceso.
Recordemos que los procesos se ejecutan en contextos separados, por lo que no comparten datos, mientras que los flujos o hilos de un mismo proceso se ejecutan en el mismo contexto, por lo que comparten el mismo espacio de memoria y pueden interferir entre ellos, lo que debe ser tenido en cuenta por el programador.

Mecanismos de prevención/evasión/detección de interbloqueos.
Existe Dimmunix el cual es un sector modificado de Dalvik VM para nunca tener interbloqueos, Demmunix detecta el interbloqueo y después lo previene sin necesidad de la intervención por parte del usuario. Otra de las ventajas es que Android Demmunix exige poco rendimiento y no realiza overheads.
Para especificar Demmunix una vez que detecta un interbloqueo lo guarda en un historial de interbloqueos, y así evitar interbloqueos ya guardados.
Otro punto que me gustaría tratar es que Las aplicaciones no necesitan código extra ya que todas se ejecutan de la misma manera.
Gestión de memoria.
Android utiliza un entorno de ejecución y una máquina virtual Dalvik para poder gestionar la memoria de la aplicación, Además de esto Android también maneja el tiempo de vida de un proceso, así se asegura de la fluidez de la aplicación deteniendo y matando los procesos que obstaculizan y libera recursos para las aplicaciones de mayor prioridad.
Cada aplicación se ejecuta en una instancia de Dalvik renunciando a toda la responsabilidad de la memoria y la gestión de procesos.
Dalvik y el entorno de ejecución se posicionan en la parte superior de un núcleo de Linux que se encargan de la interacción de del bajo nivel del hardware incluyendo los drivers y la gestión de memoria.
Hay algunas aplicaciones que tienen su memoria caché como el navegador de Internet, que son archivos temporales que podemos borrar tranquilamente. Al borrarla podemos conseguir un poco de memoria extra. Para ello tenemos que entrar en el administrador de aplicaciones que se encuentra en Ajustes -> Aplicaciones -> Administrar aplicaciones. Una vez dentro podemos ver todas las aplicaciones que tenemos instaladas y si tienen memoria caché borrarla con Borrar caché. También vemos que tenemos la opción de Borrar Datos pero en esa opción sí que perderemos datos ya que es para dejar la aplicación como venía la primera vez que la instalaste.



Windows 7
Propósito.
Uno de los propósitos para el cual fue construido éste sistema operativo, es el de mejorar el ambiente y estabilidad en comparación con la versión anterior, Windows Vista.

Interfaz del usuario.
Windows 7 permite la personalización del equipo, al guardar temas completos, estos temas incluyen color de ventanas, imágenes incluidas, conjunto de sonidos, e incluso protector de pantalla ya que para las versiones anteriores se limitaban simplemente con los colores de las ventanas.
Para esta versión de Windows, la barra lateral o más conocida como Windows Sidebar, se ha eliminado; permitiendo que los gadgets puedan ubicarse libremente en cualquier lugar del escritorio, ya sea en el lado derecho, izquierdo, arriba o abajo, sin contar con la Sidebar. (Ubuntu y Windows 7 ¿iguales o diferentes?, 2012).
En un sistema operativo como Windows 7, donde se pueden ejecutar múltiples aplicaciones y procesos a la vez, es importante que haya un dominio en el sistema de ventanas para no perderse entre todas las que pueden estar abiertas. Windows 7 incluye tecnologías para acelerar la navegación por ventanas; es un sistema dominado por la tecnología Aero. (Windows 7 al cien por cien, 2013).
Aero Snap: Consiste en que al mover una ventana hacia los lados de la pantalla, la ventana se ajusta automáticamente a la mitad del escritorio. Y si en caso se mueve al borde superior, la ventana se maximiza, y la ventana se restaurará al arrastrarla ligeramente hacia abajo.
Aero Shake: Cuando se tienen varias ventanas abiertas, al hacer clic sostenido en la Barra de Título y agitarla, las otras ventanas abiertas se minimizan.
Ejecución de programas.
En Windows 7 como en todas las distribuciones del mismo, desde sus antecesores, el usuario puede ejecutar varios programas a la vez, así como dar soporte a sus propias actividades internas como los mecanismos de gestión de la memoria, en muchos aspectos todas estas actividades son similares, por lo que a todas ellas se les denomina procesos (Fundamentos de sistemas operativos, 2005).
Como ya se ha mencionado antes, un proceso es un programa en ejecución. Es importante mencionar que un proceso es más que solo código escrito ya que hasta ese momento ese código solo es un programa, mientras no esté en ejecución y después de ello es cuando toma el nombre de proceso.
Un proceso incluye una serie de características como por ejemplo, la pila del proceso con datos temporales como los parámetros de las funciones, las direcciones de retorno y las variables locales, secciones de datos, variables globales, cúmulos de memoria, etc.
Un programa es una entidad pasiva, es decir un archivo que contiene una serie de instrucciones almacenadas en disco, denominadas también, archivo ejecutable, mientras que un proceso es una entidad activa del mismo archivo ejecutable.
Dos técnicas habituales para cargar archivos ejecutables son: hacer doble clic sobre un icono que represente el archivo ejecutable e introducir el nombre y dirección del archivo ejecutable en la línea de comandos.
Cada archivo ejecutable cuenta con una extensión asignada como referencia sobre el tipo de archivo sobre el cual se está basando. Pero no necesariamente significa que esa extensión sea absoluta y defina de esa manera la forma en que un proceso ha de ejecutarse, sino para dar una referencia visual al usuario sobre el tipo de archivo que trata. La forma en que el sistema operativo se da cuenta sobre el tipo de archivo sobre el cual está trabajando es de acuerdo a un número que se le asigna a cada archivo al momento de su creación y este número dado referencia de manera muy aproximada a la forma en que dicho archivo ejecutable ha de ser procesado. Dicho de esta manera, no importa si a un archivo se le cambia su extensión, por ejemplo de “archivo.jpg” a “archivo.png” el sistema sabe que ha de abrirse como una imagen.

Operaciones de E/S.
El sistema de entrada/salida (E/S) de Windows es el que permite utilizar los dispositivos conectados al ordenador, protegiéndolos para que solo se pueda acceder a ellos a través de las funciones que proporciona el sistema operativo, y nunca puedan hacerlo directamente los programas del usuario.
De esta forma facilita el acceso a los mismos e independiza los programas de los dispositivos, ofreciendo además la seguridad en su uso cuando quieran acceder varios procesos a los mismos, y facilitar la escalabilidad del sistema al permitir añadir o quitar dispositivos o drivers sin necesidad de realizar cambios en los programas o el sistema.
Las operaciones de entrada y salida en Windows son síncronas, es decir, esperan hasta que finalice la operación del dispositivo.
En Windows, la mayoría de las operaciones de E/S son síncronas, es decir, el proceso esperará hasta que se haya completado la operación en el dispositivo hardware. Así es como funcionan las funciones de lectura o escritura habituales, ya que obligan a esperar a la hebra hasta que el sistema les devuelva el control, lo que hará cuando haya terminado la operación, tanto si es correcta la terminación como con errores.
Windows también admite operaciones de E/S asíncronas, donde el hilo lanza la petición y sin esperar a que haya terminado, sigue con su ejecución, mientras el dispositivo hace la transferencia de los datos para atender la operación cursada. Esto favorece el rendimiento de los procesos, pero complica la gestión, ya que el proceso puede tener la necesidad de conocer cómo ha finalizado la operación y, por lo tanto tendrá que tener alguna forma de poder hacerlo, ya que no podrá acceder a los datos hasta que el dispositivo haya terminado de tratar la petición. Para poder trabajar en modo asíncrono con un dispositivo habrá que indicarlo a la hora de abrirlo para su uso (flag FILE_FLAG_OVERLAPPED). La forma de comprobar si una operación asíncrona ha terminado es por medio de la función HasOverlappedIo-Completed.
Una operación de entrada/salida empieza porque un hilo realiza una petición o llamada al sistema operativo. En este momento se producirá una interrupción en el sistema, y entrará a gestionar dicha petición el sistema operativo, sin que todavía tenga nada que ver con la gestión de E/S. Una vez que el sistema ha analizado la petición y comprueba que se trata de la solicitud de un servicio de E/S, entonces llama al gestor de E/S que será el que estudie la petición y dirija la misma al controlador adecuado para tratarla.

Manipulación de archivos.
En Windows, "el vehículo" del que disponemos para realizar todas las tareas necesarias con todos los archivos y carpetas es el “Explorador de Windows”, es el lugar sobre el cual se manipula y administra de una manera visual, todo lo relacionado con archivos y carpetas. Desde el Explorador de Windows 7 es posible recorrer los muchos lugares de los que dispone, y de una manera gráfica e interactiva, crear nuevas carpetas o archivos, moverlos, borrarlos, etc.
El Explorador, viene incluido en el sistema operativo Windows 7 y por tanto está disponible desde el momento en que se instala dicho sistema operativo.
La manipulación de los directorios y de sus archivos no es necesariamente por este medio, pero es la forma más simple y agradable a la vista. Es posible que a través de un doble clic o un clic derecho, se realicen múltiples tareas para la modificación o simple exploración de los archivos y sus directorios.
Los archivos que observamos en el Explorador de Windows, son una referencia lógica y no tangible de un proceso, puesto que cuando no están en ejecución son un simple archivo o en dado caso programa, no son un componente tangible o físico.
La forma en que el sistema operativo maneja los archivos, varía en ciertos factores, el tamaño mínimo que el sistema asigna a un archivo varia por la arquitectura misma del sistema, y la cantidad máxima del mismo archivo varía por las cuestiones físicas, ya que no se le puede asignar más almacenamiento a un archivo del que, físicamente hablando, posible dar.
A menudo es necesario crear nuevas carpetas dentro del Explorador. Como con la clásica oficina donde los documentos se guardan en carpetas, dentro de cajones, etc. Ahora es lo mismo, es posible tener carpetas con nombres descriptivos y dentro de ellas archivos, documentos, más carpetas, etc.
La cantidad libre de espacio que tenemos para usar nosotros como usuarios, es la cantidad de espacio físico, menos el espacio reservado por el sistema operativo, normalmente éste ocupará las ultimas localidades de la memoria y las dejará inaccesible para cualquier otro proceso que intente acceder a ellas.



El proceso de planificación de la CPU.
La política de planificación utiliza por Windows es Round robin, que es un método para seleccionar todos los elementos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Roubin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades parejas.
Una forma sencilla de entender el round robin es imaginar una secuencia para "tomar turnos". En operaciones computacionales, un método para ejecutar diferentes procesos de manera concurrente, para la utilización equitativa de los recursos del equipo, es limitando cada proceso a un pequeño período (quantum), y luego suspendiendo éste proceso para dar oportunidad a otro proceso y así sucesivamente. A esto se le denomina comúnmente como Planificación Round-Robin.
No existe una política de planificación óptima para todas las computadoras, sino que depende de las características de los procesos. Así se puede ver cómo una política obtiene unos resultados excelentes en un sistema, sin embargo en otro sistema el rendimiento es mucho menor. Ello se debe a las características de los procesos, donde cada uno puede tener una cantidad de operaciones de E/S enorme como es el caso de las bases de datos, otros usan mayormente la CPU, otros realizan una mayor lectura de datos frente a otros, hay procesos que requieren una prioridad máxima en los turnos de ejecución, es el caso de los procesos de tiempo real, y hay procesos que requieren más tiempo de ejecución que otros, por lo que habrá que valorar si terminar primero los cortos o no.


Mecanismos de sincronización procesos.
Un sistema operativo actual como Windows 7 está basado en multitareas de procesos y hebras. Un proceso es un programa completo en memoria, el cual se puede encontrar en varios estados: Ejecución, Bloqueado, Suspendido y Preparado. A su vez, las hebras presentan las mismas características que los procesos, pero a diferencia de estos, cada una está constituida por una unidad de código que se puede ejecutar de forma independiente, es decir, una hebra puede ser una función dentro de un programa que se ejecuta sin depender de una lógica secuencial. Esto es, el planificador de procesos del sistema decide cuándo se debe ejecutar dicha hebra y cuando debe dejar de hacerlo para dar paso a la ejecución de otra hebra u otro proceso.
Se debe utilizar un espacio de memoria donde se almacenan los datos que se van adquiriendo, pero con la particularidad de que dicho espacio pueda ser accesado por aplicaciones diferentes. Los programas solo pueden compartir memoria a través de la técnica de creación de memoria compartida etiquetada utilizando archivos mapeados a memoria
Solo un proceso o hebra puede utilizar la memoria compartida a la vez, por lo tanto el acceso a dicha región debe ser sincronizado entre cuatro objetos de sincronización:

• Semáforos Clásicos.
• Semáforos Binarios o de Exclusión Mutua.
Los Semáforos Clásicos se utilizan para permitir que un número limitado de procesos o hebras tengan acceso a un recurso a través de operaciones atómicas.
Los Semáforos Binarios (mutexes), son utilizados para garantizar que un solo proceso o hebra accese al recurso compartido durante un lapso de tiempo considerable. Estos semáforos se basan en la exclusión mutua sin espera ocupada, para proporcionar de esta manera una solución adecuada al problema de la sincronización. Los semáforos binarios solo pueden tener dos valores; uno o cero

Mecanismos de prevención/evasión/detección de interbloqueos.
El tratamiento de prevención de interbloqueos es muy arduo y altamente costoso de realizar, puesto que para saber cuándo un sistema entra en interbloqueo es tan complicado, y requiere de ejecutar algoritmos muy complejos para saberlo, y aún más, saber cada cuánto ejecutarlo es altamente costoso, se ha optado por éste y por muchos sistemas operativos más, el ignorar esta situación.
Tomando como argumento que la posibilidad para que una situación como esta se lleve a cabo, es relativamente remota, es mejor “dejarla pasar”

Gestión de memoria principal
Windows 7 32 bits es capaz de direccionar hasta 4 GB de RAM, los cuales reconoce, pero hay que tener en cuenta que Windows 7 se hace cargo de esos 4 Gb para todo el hardware que tenga el equipo con lo que en realidad usará como máximo 3.2 gb a 3.5 Gb de esa memoria. Para direccionar más de 4 GB nos tenemos que ir a las versiones para 64 bits, aunque el paso a esta versión es realmente interesante cuando tenemos al menos 6 u 8 Gb, por lo que conlleva pasarnos a la versión 64 bits.
Cuando todos los procesos que se ejecutan en el sistema requieren de más memoria que la disponible, Windows utiliza la alternancia entre la memoria virtual (determinado por un archivo de paginación) y la memoria física. Esta alternativa es llamada Swap. Este intercambio se realiza no de bytes a bytes, sino de página a página, que en Windows son bloques de 4 KB donde se almacenan los datos de los procesos. De ahí que toda la memoria esté paginada, tanto la física como la virtual. La física en forma de marcos de página y la virtual en forma de páginas.
Además, Windows dispone de tablas de páginas que son las que apuntan a las propias páginas, y los punteros de estas tablas se almacenan a su vez en un directorio de páginas. Cada proceso dispone sólo de un directorio.

Gestión de memoria virtual.
En lo referente a la política de gestión de la memoria virtual, básicamente copia la filosofía de VM. Pero cabe destacar las siguientes características.
Paginación por demanda con clustering. A partir de un fallo de página no sólo se carga la página que ha producido el fallo sino también un conjunto de páginas adyacentes.
Asignación de páginas local. Aplica una política FIFO entre las páginas cargadas del proceso (su working-set).
Tamaño de working-set ajustable dinámicamente. El VM manager ajusta el tamaño de los working-sets de los procesos en función de sus comportamientos, sus cuotas de memoria y de las necesidades globales. Cuando necesita memoria, el VM manager recupera marcos de los working-sets de los procesos, respetándoles un tamaño mínimo. Un proceso puede aumentar su working-set a medida que comete fallos de página si hay marcos libres.















Ubuntu 12.04
Propósito.
El objetivo de Ubuntu es proporcionar una interfaz fácil de utilizar comparable con los sistemas comerciales a la vez que ofrece el bajo precio y la libertad asociada con Linux. El objetivo de Ubuntu 12.04 fue un tiempo de 10 segundos de arranque.


Interfaz del usuario.
El cambio que Ubuntu 12.04 ha hecho desde sus versiones anteriores ha sido enorme, en opinión de un particular, la mejor de todas sus versiones, tomando como referencia su más actual: 13.04
Un comentario hecho por los creadores acerca de su radical cambio fue
"Estamos atraídos por la luz, porque denota tanto calor y claridad, e intrigado por la idea de que la" luz "es un buen valor en el software. Buen software es la" luz "en el sentido de que utiliza sus recursos de manera eficiente, se agota rápidamente, y puede ser reconfigurado fácilmente como sea necesario". Y como dice la documentación de diseño. "Visualmente, la luz es hermosa, la luz es etéreo, ligero trae claridad y comodidad."
Ubuntu desde su primer lanzamiento utilizó la interfaz de usuario predeterminada del escritorio GNOME, con un panel inferior para listar ventanas y un panel superior para menús e indicadores de sistema pero a partir de su lanzamiento en la versión 10.10, Unity ha sido su interfaz de usuario, la cual fue creada para el entorno de escritorio GNOME, y desarrollado por Canonical. Fue diseñado con el propósito de aprovechar el espacio en pantallas pequeñas de los netbooks, especialmente el espacio vertical.
Su sistema gráfico también se basa en ventanas al igual que Windows, pero no significa que use el mismo sistema de prioridad de procesos respecto al focus.
Su escritorio de trabajo corresponde a un equivalente a cuatro pantallas en su estado inicial, y es posible mover dichas ventanas entre estas cuatro áreas y moverse entre ellas con accesos rápidos en las teclas.

Ejecución de programas.
Algunos programas están en archivos ejecutables con extensiones como: .bin, .run, .py o .sh.
Los archivos .bin y los .run suelen ser instaladores de programas, mientras que los .sh son scripts que se ejecutan directamente en la consola. Una de las ventajas significativas de instalar un programa con estos formatos es que normalmente funcionan adecuadamente en todas las distribuciones, mientras que otros formados precompilados para instalar programas como: .deb o .rpm están más limitados a su versión.
Como medida de seguridad, el sistema previene ejecutar sin los permisos necesarios para ejecutarse.
Los permisos manejados se separan en tres categorías: Usuario, Grupo y Otros; donde el usuario es el creador del archivo o mejor dicho, el propietario del mismo. El grupo se refiere al conjunto de usuarios dentro de una categoría en particular, donde ellos pueden compartir archivos, y otros, se refiere a cualquier usuario que tenga acceso al archivo.
Éste sistema está diseñado para usar un sistema binario escalable o con las letras identificadoras de sus permisos: “x” executable, “r” read, “w” write. Los cuales refieren a ejecutar, leer y escribir, respectivamente.
En Ubuntu, no es estrictamente necesario tener un identificador del tipo de archivo para poder ejecutarse, puesto que cada archivo, si tiene la propiedad de ejecución activa, puede ser ejecutado como la arquitectura del sistema tenga definido que interpretará tal archivo.

Manipulación de archivos.
En cuanto a la manipulación de los archivos, y tomando como una referencia más conocida, Ubuntu 12.04 usa un explorador de archivos similar al de Windows, donde hay una “ventana” que muestra gráficamente el contenido de los directorios y sus archivos, y también es posible ejecutar los archivos con un doble clic o administrar sus propiedades con un clic derecho. El sistema de archivos de Ubuntu es de tipo jerárquico como en Windows, lo que significa que es debido acceder a un directorio superior para ver sus contenidos de nivel inferior.
Es común que esta exploración de los archivos sea también a través de la terminal, desde la cual se puede acceder a cualquier archivo, como lo hace el explorador, pero de una manera menos gráfica, solo es línea de comandos.
Los usuarios comunes suelen preferir el uso de esta terminal para la ejecución y modificación de los archivos, puesto que da un sentimiento de “Dios” sobre cada uno de los componentes del sistema; ésa sensación de plena libertad también puede ser experimentada a través de un entorno gráfico, pero para ello es necesario acceder a él desde la propia terminal, ejecutando el comando: $ sudo nautilus. Al concluir esta instrucción se tiene acceso a cada componente del sistema sin restricción alguna, y de manera gráfica, agradable para quien lo prefiere sobre la terminal.

Comunicaciones.
Existen 4 formas de comunicación entre procesos en Linux en general:
1. A través de variables de entorno: Solo es posible de padres a hijos, es decir que un proceso padre puede compartir sus variables o datos con sus procesos hijos, ya que ellos comparten los recursos.
2. Mediante una señal: Solo indica que algo ha ocurrido y solo lleva como información de un número de señal.
3. Mediante entrada salida: Es la forma más corriente a nivel de Shell. Es el mecanismo de intercomunicación entre procesos que permite que 2 o más procesos envíen información a cualquier otro sin necesidad de que compartan recursos. Un pipe relaciona la salida estándar de un comando con la entrada estándar de otro comando por ejemplo.
4. Mediante técnicas IPC u otras: Semáforos, Memoria compartida, Colas de mensajes.
Por ejemplo, la memoria compartida es una región de memoria que puede ser compartida por múltiples procesos. Por ejemplo, si tenemos un vector de 1000 bytes en un programa, sólo puede acceder a él ese programa. Si declaramos un segmento de memoria compartida de 1000 bytes, muchos procesos pueden realizar operaciones de lectura y escritura sobre esa memoria compartida. La ventaja principal de la memoria compartida es que un programa la ve exactamente de la misma forma que si fuera memoria normal. Además, las operaciones de lectura y escritura son muy rápidas y su utilización es relativamente simple.

Protección y seguridad
En cuanto a la seguridad del sistema, es muy importante recalcar que no basta con un software seguro, el usuario influye mucho en esto; es común que entre los usuarios de sistemas Linux se crea que son sistemas seguros y no debo preocuparme por la seguridad: FALSO. Ubuntu provee de estas herramientas para la seguridad del usuario:
Usuarios y claves: Las cuentas de usuario aseguran la privacidad de la información, el correcto reparto de privilegios en el sistema, minimizan los efectos en caso de un fallo de la seguridad. Un buen sistema de usuarios es la base de una firme seguridad.
Repositorios seguros: Los repositorios son las fuentes de las que distribuciones como Ubuntu obtienen el software, usar repositorios inseguros o no autentificados podría resultar en la entrada de software malicioso en el sistema. A partir de 2009 se lanzó el gestor de aplicaciones para Ubuntu, desde el cual los repositorios se unifican y se controla de mejor manera el software que fluye en ellos.
Firewall: Entre las muchas funciones de un firewall, está la de aumentar la seguridad de nuestras conexiones de red aplicando filtros que analizan la procedencia, destino, puerto y otros datos relacionados con dichas conexiones.

Proceso de planificación de la CPU.
Se consideran tres niveles importantes de planificación:
-Planificación de alto nivel: También se denomina Planificación de trabajos. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión.
-Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la CPU.
-Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
-Planificación de bajo nivel: Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y asigna la CPU al mismo, es decir que “despacha” la CPU al proceso. La efectúa el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.
Los objetivos de la planificación del procesador son los siguientes:
-Ser justa: Todos los procesos son tratados de igual manera. Ningún proceso es postergado indefinidamente.
-Maximizar la capacidad de ejecución: Maximizar el número de procesos servidos por unidad de tiempo.
-Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un máximo de unos segundos.
-Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.
-Minimizar la sobrecarga: No suele considerarse un objetivo muy importante.
-Equilibrar el uso de recursos: Favorecer a los procesos que utilizarán recursos infrautilizados.
-Equilibrar respuesta y utilización: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilización total de recursos podrá ser pobre.
-Evitar la postergación indefinida: Se utiliza la estrategia del “envejecimiento”. Mientras un proceso espera por un recurso su prioridad debe aumentar, así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado.
-Asegurar la prioridad: Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas.
-Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podría mantener un recurso clave, que puede ser requerido por un proceso de más alta prioridad. Si el recurso es no apropiativo, el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente, puesto que es necesario liberar rápidamente el recurso clave.
-Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”: Un ejemplo de comportamiento deseable es una tasa baja de paginación.
-Degradarse suavemente con cargas pesadas: Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema.
-Se debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos.


Mecanismos de sincronización procesos.
Como Ubuntu es un sistema operativo actual y robusto, utiliza una serie de semáforos para manejar las secciones críticas de los procesos, es tan importante el sistema se sincronización de procesos que se llega a relacionar a los procesos, uno con una chica corriendo por la calle, a otro proceso con un coche a alta velocidad, y a la sección crítica de ambos como el cruce de cebra, entonces sus semáforos deben de ser eficaces.
Mecanismos de prevención/evasión/detección de interbloqueos.
En cuanto a la prevención de interbloqueos, solo usa buenos algoritmos de asignación de recursos y trata de prevenir alguna de las condiciones para que ocurra un interbloqueo, “con buena programación” puesto que la comprobación continua de que hay un interbloqueo en puerta es extremadamente costoso y difícil de programar por eso es solamente ignorado.
Gestión de memoria.
Ubuntu usa una tabla de página de tres niveles que son:
1. Directorio de páginas.
2. Directorio intermedio de páginas.
3. Tabla de páginas.
Para aumentar la eficiencia al cargar y descargar estas páginas desde o hacia la memoria, utiliza un mecanismo llamado Sistema de Colegas, en donde las páginas son agrupadas en marcos de tamaño fijo y para reemplazar páginas se utiliza el algoritmo del reloj en donde las páginas tienen edad. El algoritmo de reloj consiste en asociar un bit de usado y otro de modificado con cada una de las paginas, el usado se reemplaza por una variable de 8 bits, cada vez que se accede a una página esta variable se incrementa, después Linux recorre periódicamente la lista completa de páginas y decrementa la variable de edad de cada página a medida que va rotando por todas ellas en memoria principal. Una página que tiene un 0 es una página vieja ya que no se ha hecho referencia a ella desde hace ya algún tiempo y es el mejor candidato para el reemplazo.





















Conclusión.
Como conclusión tenemos que decir que los sistema operativos son una gran cantidad de esfuerzo y dedicación por parte de los desarrolladores, un sistema operativo no solo muestra imágenes al usuario sino lo protege ya que una simple operación del usuario podría dejar en un muy mal estado a la computadora, de hecho antes de haber sistemas operativos no solo era peligroso interactuar con la computadora, y tampoco no era tan fluido como ahora me refiero a que antes la interfaz no existía y por lo cual todo era por comandos, por lo cual el tiempo de trabajo era mucho más lento, bueno es por eso que una vez que te adentras más en el funcionamiento del sistema operativo, empiezas a entender por qué un sistema operativo es mejor que otro, por ejemplo Android que no tiene interbloqueos, y para terminar hay que mencionar que el sistema operativo es lo que da vida a una computadora, y nos permite trabajar de una manera más eficiente con más seguridad ya que el sistema operativo se encarga de todo para que nos sintamos con confianza de interactuar más con la pc o móvil.















Referencias

(2011, 10). El Sistema De Entrada/Salida (E/S) De Windows. BuenasTareas.com. Recuperado 10, 2011, de http://www.buenastareas.com/ensayos/El-Sistema-De-Entrada-Salida-e-s-De/2910902.html
(2012, 07). Administración De Memoria Windows 7. BuenasTareas.com. Recuperado 07, 2012, de http://www.buenastareas.com/ensayos/Administracion-De-Memoria-Windows-7/4863436.html
(e.g. 2011). Comparison of mobile operating systems. de http://en.wikipedia.org/wiki/Comparison_of_mobile_operating_systems.
Varios (). Google Play. de http://en.wikipedia.org/wiki/Google_Bouncer#Malicious_apps.
Varios (). Android (operating system) de http://en.wikipedia.org/wiki/Android_(operating_system)#Security_and_privacy.
Robert P (18 Julio 2012). Threads - Capitulo 5- Curso Android. de http://faqsandroid.com/threads-capitulo-5-curso-android/.
Carlos Francisco Ojeda Ureña (8 Octubre 2013). Gestion de Memoria en Android. de http://www.slideshare.net/frankojur/gestion-de-memoriaenandroid.
Carlos Francisco Ojeda Ureña (8 Octubre 2013). Gestion de Memoria en Android. de Available at: http://www.slideshare.net/frankojur/memoria-virtual-android.
Stefan Bähler (2 Junio 2010). Analysis of the Android Architecture. de http://os.ibds.kit.edu/downloads/sa_2010_braehler-stefan_android-architecture.pdf.
Horatiu Jula, Thomas Rensch, George Candea (2 Junio 2010). Platform-wide Deadlock Immunity for Mobile Phones. De. http://infoscience.epfl.ch/record/166080/files/android_dimmunix.pdf.