martes, 8 de mayo de 2012

TABLAS DE MEMORIA


TABLAS DE MEMORIA EN WINDOWS

La estructura de la memoria en Windows es en forma de árbol, en el cual se definen claramente 3 partes:
• Directorio de Páginas (Page Directory): Cada proceso en ejecución, dispone de un solo Directorio de Páginas. Se trata de una tabla con 1024 entradas que almacena los punteros a las Tablas de Página.
• Tabla de Páginas (Page Table): Cada Tabla de Página es a su vez otra tabla que contiene otras 1024 entradas que ya apuntan a las propias páginas.
• Página (Page Frame): Cada Página es un bloque de 4 KB donde se almacenan los datos de cada proceso.Para aumentar la velocidad, el cambio no se realiza byte a byte, sino página a página. cuyo tamaño en Windows es de4 KB. De ahí que toda la memoria virtual y física esté paginada. Memoria Virtual en forma de páginas, y memoria física enforma de marcos de página.
Las páginas pueden estar en uno de los siguientes estados:
• Libre:Una página libre no puede ser accedida por ningúnproceso, pero sí puedeser reservada o encargada.
• Reservada:Una página reservada es un bloque del espacio de dirección virtual que ha sido fijada para usos futuros. No sepuede acceder a una página reservada, ni tiene datos almacenados. Simplemente bloquea el rango y no permite que sea asignadoporotras funciones de asignación.
• Encargada: Aquella que ya ha sido asignada a un espacio físico, ya sea n memoria física o en memoria virtual. No podemos saber donde está almacenada la página, pues de eso se encarga el sistema y puede que esté constantemente cambiándola de posición, pero lo que sí sabemos es que cuando la necesitemos, ahí lo tendremos




Un esquema quedaría así     










TABLA DE MEMORIA EN LINUX

Linux supone que hay tres niveles de tablas de páginas:
• El directorio de tablas de páginas (punteros a tablas intermedias).
• La tabla de páginas intermedia (punteros a tablas de páginas).
• Las tablas de páginas (punteros a páginas).
Cada nivel de tablas contiene el número de marco de página del siguiente nivel en la tabla de páginas. La figura muestra cómo una dirección virtual se divide en un número de campos, donde cada uno de ellos representa un desplazamiento dentro de una tabla de páginas. Para traducir una dirección virtual a una física, el procesador tiene que tomar el contenido de cada uno de estos campos, convertirlos en desplazamientos de la página física que contiene la tabla de páginas y leer el número de marco de página del siguiente nivel de la tabla de páginas. Esta operación se repite tres veces hasta que se encuentra el número de la página física que contiene la dirección virtual. Ahora el último campo de la dirección virtual se utiliza para encontrar el dato dentro de la página.

CACHÉ


Memoria Caché
La caché es una memoria más pequeña y rápida, la cual almacena copias de datos ubicados en la memoria principal que se utilizan con más frecuencia.
Es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en la caché. Cuando se accede por primera vez a un dato, se hace una copia en el caché; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor.
Cuando el procesador necesita leer o escribir en una ubicación en memoria principal, primero verifica si una copia de los datos está en la caché. Si es así, el procesador de inmediato lee o escribe en la memoria caché, que es mucho más rápido que de la lectura o la escritura a la memoria principal.

Esta memoria se organiza en niveles. Cuanto más cercano al procesador más rápida, más cara y por tanto más pequeña. Debido a esto usamos los nombres cache de nivel 1, nivel 2 y nivel 3. También lo puedes ver como L1, L2 y L3.
Si el procesador necesita un dato de la memoria comprueba si esta se encuentra en el nivel 1. En caso de no encontrarla se busca en el nivel 2 y si no en el nivel 3. El sistema se complementa con un algoritmo que es capaz de colocar los datos que más utilizas en los niveles más cercanos al procesador.
En comparación con la memoria RAM la cache de nivel 3 que es la mayor de todas es unas mil veces más pequeña. Por suerte los programas suelen realizar muchas operaciones sobre los mismos datos y tienen un efecto radical en el rendimiento.



Caché de 1er nivel (L1): 

Esta caché está integrada en el núcleo del procesador, trabajando a la misma velocidad que este. La cantidad de memoria caché L1 varía de un procesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos. 



Caché de 2º nivel (L2): 



Integrada también en el procesador, aunque no directamente en el núcleo de este, tiene las mismas ventajas que la caché L1, aunque es algo más lenta que esta. La caché L2 suele ser mayor que la caché L1, pudiendo llegar a superar los 2MB. 

A diferencia de la caché L1, esta no está dividida, y su utilización está más encaminada a programas que al sistema. 



Caché de 3er nivel (L3): 



Es un tipo de memoria caché más lenta que la L2, muy poco utilizada en la actualidad. 



En un principio esta caché estaba incorporada a la placa base, no al procesador, y su velocidad de acceso era bastante más lenta que una caché de nivel 2 o 1, ya que si bien sigue siendo una memoria de una gran rapidez (muy superior a la RAM, y mucho más en la época en la que se utilizaba), depende de la comunicación entre el procesador y la placa base. 



Para hacernos una idea más precisa de esto, imaginemos en un extremo el procesador y en el otro la memoria RAM. Pues bien, entre ambos se encuentra la memoria caché, más rápida cuanto más cerca se encuentre del núcleo del procesador (L1). 



Las memorias caché son extremadamente rápidas (su velocidad es unas 5 veces superior a la de una RAM de las más rápidas), con la ventaja añadida de no tener latencia, por lo que su acceso no tiene ninguna demora... pero es un tipo de memoria muy cara. 

Esto, unido a su integración en el procesador (ya sea directamente en el núcleo o no) limita bastante el tamaño, por un lado por lo que encarece al procesador y por otro por el espacio disponible. 



En cuanto a la utilización de la caché L2 en procesadores multinucleares, existen dos tipos diferentes de tecnologías a aplicar. 



Por un lado está la habitualmente utilizada por Intel, que consiste en que el total de la caché L2 está accesible para ambos núcleos y por otro está la utilizada por AMD, en la que cada núcleo tiene su propia caché L2 dedicada solo para ese núcleo. 



La caché L2 apareció por primera vez en los Intel Pentium Pro, siendo incorporada a continuación por los Intel Pentium II, aunque en ese caso no en el encapsulado del procesador, sino externamente (aunque dentro del procesador). 




Imagen de un P-II, en la que se puede observar los chips de la caché L2.



LINUX VS MINIX


LINUX VS MINIX

El debate Tanenbaum-Torvalds es un debate entre Andrew S. Tanenbaum y Linus Torvalds, con respecto a Linux y la arquitectura del núcleo en general. Tanenbaum comenzó el debate en 1992 argumentando que los micronúcleos son superiores a los núcleos monolíticos y por lo tanto, Linux era, obsoleto. 
Mientras el debate inicialmente empezó relativamente moderado, con las dos partes implicadas haciendo sólo declaraciones banales sobre el diseño del núcleo, se van haciendo progresivamente más detalladas y sofisticadas, con cada ronda de mensajes. Además del diseño del núcleo , el debate se ramificó en varios otros temas, tales como que la arquitectura del microprocesador .Además de Tanenbaum y Torvalds, varias personas se sumaron al debate, incluyendo a Peter MacDonald, uno de los primeros desarrolladores del kernel de Linux y creador de una de las primeras distribuciones, Softlanding Linux System, David S. Miller, uno de los principales desarrolladores del kernel de Linux, y Theodore Ts'o, la primera de América del Norte desarrollador del núcleo Linux.

miércoles, 21 de marzo de 2012

Procesos Inicializadores

Procesos Inicializadores Linux/Windows

Init (abreviatura de initialization) es el primer proceso en ejecución tras la carga del kernel y el que a su vez genera todos los demás procesos. Se ejecuta como demonio y por lo general tiene Identificador de Proceso 1.

Tradicionalmente, esta funcionalidad se ha implementado de forma distinta en los dos grandes universos Unix: System V y BSD. En el Unix original, el proceso init arrancaba los servicios de mediante un único script denominado /etc. /rc. Posteriormente, la versión System V del Unix de AT&T introdujo un nuevo esquema de directorios en /etc./rc.d/ que contenía scripts de arranque/parada de servicios.

Linux adoptó el esquema System V, aunque algunas distribuciones, como Arch Linux y Slackware, utilizan el estilo BSD y otros, como Gentoo, tienen su propia versión personalizada. Ubuntu y algunas otras distribuciones de Linux utilizan ahora upstart como reemplazo para el proceso de inicialización tradicionales.

Upstart es un reemplazo basado en eventos para el demonio init utilizado en sistemas UNIX, como GNU/Linux. Upstart (programado porScott James Remnant, trabajador de Canonical Ltd) opera asíncronamente y dirige el inicio de las tareas y servicios, los controla mientras el sistema está encendido y los detiene durante el apagado.

Productor/ Consumidor con Buffer acotado



 El problema de los productores y consumidores con buffer acotado:


  •  Productor: proceso que produce elementos (a una cierta velocidad) y los deposita en un buffer.


  • Consumidor: proceso que toma elementos del buffer y los consume (a una velocidad probablemente diferente a la del productor)


  • Buffer: Estructura de datos que sirve para intercambiar información entre los procesos productores y consumidores. Actúa a modo de depósito para
absorber la diferencia de velocidad entre productores y consumidores

Ejemplo: buffer de impresora.





Proceso DAEMON y ZOMBIE





PROCESO DAEMON



Los daemons (o demonios) no son más que un proceso que se ejecuta en segundo plano. Estos demonios ejecutan diferentes funciones y proporcionan ciertos servicios, pero sin la interacción del usuario; son procesos de los que no "notamos" su ejecución.

Los demonios pueden ser iniciados al arrancar el sistema, al entrar en un runlevel (nivel de ejecución) determinado, o simplemente cuando nosotros los iniciemos. Veremos entonces de qué modo podemos controlar nosotros mismos los demonios (iniciarlos, pararlos, etc) y cómo podemos hacer que se inicien automáticamente. 


Iniciando y parando los demonios o daemons


Los programas que ejecutamos como demonios pueden estar ubicados en cualquier parte del disco, pero tienen un punto en común: todos utilizan un script para ser iniciados/parados, y estos scripts se encuentran en el directorio: /etc/init.d/


Sabiendo esto, la sintaxis habitual para iniciar/parar demonios es:


/etc/init.d/<nombre_demonio> start (para iniciar el demonio)

/etc/init.d/<nombre_demonio> stop (para detenerlo) 

/etc/init.d/<nombre_demonio> restar(para reiniciarlo)  



Todo esto puede parecer un poco confuso, pero vamos a ver un ejemplo práctico para poner nosotros nuestro demonio. Imaginemos que tenemos un programa que queremos que se ejecute siempre que arranque el sistema y se quede en ejecución como demonio. Haríamos lo siguiente:
  1. Crearnos un script según al sintaxis explicada anteriormente que nos permita iniciar y parar el programa que queremos ejecutar. Lo llamaremos, por ejemplo,miscript.
  2. Nos logueamos como root, copiamos el script a /etc/init.d y le damos permiso de ejecución:
    $ su
    # cp miscript /etc/init.d/
    # chmod u+x /etc/init.d/miscript
  3. Creamos los enlaces en los runlevels adecuados: haremos que se inicie en el runlevel 5 (X11) y en el runlevel 3 (multiusuario sin X) y que se detenga en los runlevels 6 y 0 (reiniciar y apagar):
    # ln -s /etc/init.d/miscript /etc/rc5.d/S99miscript
    # ln -s /etc/init.d/miscript /etc/rc3.d/S99miscript
    # ln -s /etc/init.d/miscript /etc/rc6.d/K01miscript
    # ln -s /etc/init.d/miscript /etc/rc0.d/K01miscript
    Lo iniciamos con la mínima prioridad para dejar que se inicien antes los demonios más importantes, y lo paramos con la máxima, para que se detenga antes que los demonios más importantes.

Con esto hemos conseguido que nuestro programa se inicie al arrancar la máquina (ya que normalmente arranca en el runlevel 5 si tenemos instaladas las X o en el 3 encaso contrario) y que se detenga al apagarla o reiniciar. Realmente los enlaces para detener el demonio al apagar o reiniciar la máquina no son necesarios, ya que el demonio se terminará igualmente, pero siempre es mejor que termine en el orden adecuado.

Apunte final


Podemos cambiar el runlevel por defecto (el runlevel en el que quedamos una vez inicada la máquina) modificando en el fichero /etc/inittab la siguiente línea:

id:5:initdefault:

El segundo campo corresponde al runlevel por defecto. En este caso es el 5 (iniciamos con X) pero podemos cambiarlo (por ejemplo a 3 si no queremos que se inicien las X automáticamente).  








PROCESO ZOMBIE

En sistemas operativos basados en UNIX, un proceso zombie (también llamado proceso difunto), es un proceso que ha completado su ejecución, pero que todavía tiene una entrada en la tabla de procesos.
Esta entrada todavía se necesita para permitir al proceso que inició el proceso (ahora zombie) pueda leer su estado de salida. El comando kill no tiene efecto sobre un proceso zombie.

Cuando un proceso finaliza, toda la memoria y recursos asociados con este son desasignados para que puedan ser usados por otros procesos. De todas maneras, la
 entrada del proceso permanece en la tabla de procesos. El proceso padre puede leer el estado de salida del proceso hijo ejecutando la llamada del sistema wait. Luego el estado de zombie es eliminado.

Después de que el zombie es eliminado, el ID del proceso y la
 entrada en la tabla de procesos pueden ser reusados. De todas maneras, si un proceso padre falla en llamar un wait, el zombie permanecerá en la tabla de procesos (en ciertas situaciones esto puede ser deseable, por ejemplo, en el caso de que el padre cree otro hijo para asegurar que no será localizado en el mismo ID de proceso).

Un proceso zombie no es lo mismo que un proceso huérfano. Este último es un proceso que permanece en ejecución, pero su padre ha muerto.

Los procesos zombies son identificados en la
 salida 
del comando "ps" con la presencia de la letra Z en la columna STAT.

jueves, 8 de marzo de 2012

Android


Android es un sistema operativo móvil basado en Linux, que junto con aplicaciones middleware, está enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tabletas, Google TV y otros dispositivos. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google.

Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio. Las unidades vendidas de teléfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer trimestres de 2010, con una cuota de mercado de 43,6% en el tercer trimestre. A nivel mundial alcanzó una cuota de mercado del 50,9% durante el cuarto trimestre de 2011, más del doble que el segundo sistema operativo (iOS de iPhone) con más cuota. 

Tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 400.000 aplicaciones (de las cuales, dos tercios son gratuitas) disponibles para la tienda de aplicaciones oficial de Android: Google Play, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android, como pueden ser la App Store de Amazon o la tienda de aplicaciones Samsung Apps de Samsung. Google Play es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java. No obstante, no es un sistema operativo libre de malware, aunque la mayoría de ello es descargado de sitios de terceros. 

El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handset Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos móviles. Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto

La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++.

martes, 6 de marzo de 2012

Linux

Linux es un núcleo libre de sistema operativo basado en Unix. Es uno de los principales ejemplos de software libre. Linux está licenciado bajo la  GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List Archive.

El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computación finlandés, Linus Torvalds, en 1991. Linux consiguió rápidamente desarrolladores y usuarios que adoptaron códigos de otros proyectos de software libre para su uso en el nuevo sistema operativo. El núcleo Linux ha recibido contribuciones de miles de programadores. Normalmente Linux se utiliza junto a un empaquetado de software, llamado distribución Linux.

LINUX hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linux Torvalds empezó, -como una afición y sin poderse imaginar a lo que llegaría este proyecto, a programar las primeras líneas de código de este sistema operativo llamado LINUX.

Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían mas.

Linux nunca anuncio la versión 0.01 de Linux (agosto 1991), esta versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenia acceso a un sistema Minix para su compilación.

El 5 de octubre de 1991, Linux anuncio la primera versión "Oficial" de Linux, -versión 0.02. Con esta versión Linux pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de C) pero no mucho mas funcionaba. En este estado de desarrollo ni se pensaba en los términos soporte, documentación, distribución .Después de la versión 0.03, Linux salto en la numeración hasta la 0.10, mas y mas programadores a lo largo y ancho de Internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linux incremento el numero de versión hasta la 0.95 (Marzo 1992). Más de un año después (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la versión 1.0 no llego hasta el 14 de marzo de 1994. Desde entonces no se ha parado de desarrollar, la versión actual del núcleo es la 2.2 y sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.

Microsoft Windows

 
Microsoft Windows es el nombre de una familia de sistemas operativos desarrollados por Microsoft desde 1981, año en que el proyecto se denominaba «Interface Manager».
Windows es el sistema operativo que comercializa la compañía Microsoft con sede en Seattle. Originalmente, Microsoft se llamó "Traf-O-Data" en 1972, después "Micro-soft" en noviembre de 1975 y finalmente el 26 de noviembre de 1976 recibió el nombre "Microsoft".
Microsoft ingresó al mercado en agosto de 1981 al lanzar la versión 1.0 del sistema operativo Microsoft DOS (MS-DOS), un sistema operativo con una línea de comando de 16 bits.

La primera versión de Microsoft Windows (Microsoft Windows 1.0) salió a la venta en noviembre de 1985. Contaba con una interfaz gráfica del usuario, inspirada en la interfaz del usuario de los equipos Apple de aquel entonces. Windows 1.0 no tuvo éxito con el público y Microsoft Windows 2.0, lanzada el 9 de diciembre de 1987, no corrió con mejor suerte.

Fue el 22 de mayo de 1990 cuando Microsoft Windows se volvió un éxito, con la versión Windows 3.0, después la versión Windows 3.1 en 1992 y finalmente Microsoft Windows for Workgroups, posteriormente llamada Windows 3.11, la cual incluía capacidades de red. Windows 3.1 no se puede considerar un sistema operativo completamente individual ya que solamente era una interfaz gráfica del usuario que se ejecutaba sobre MS-DOS.

El 24 de agosto de 1995, Microsoft lanzó el sistema operativo Microsoft Windows 95. Con Windows 95 Microsoft quiso transferir algunas capacidades de MS-DOS a Windows. Sin embargo, esta nueva versión se basaba demasiado en el DOS de 16 bits y todavía tenía las limitaciones del sistema de archivos FAT16, por lo que no era posible usar nombres largos para archivos.

Después de algunas revisiones menores de Windows 95, denominadas Windows 95A OSR1, Windows 95B OSR2, Windows 95B OSR2.1 y Windows 95C OSR2.5, Microsoft lanzó la siguiente versión de Windows el 25 de junio de 1998: Windows 98. En un principio, Windows 98 admitía en forma nativa otras opciones además de las de MS-DOS, pero todavía se basaba en éste. Además, Windows 98 contaba con poco manejo de memoria cuando se ejecutaban múltiples aplicaciones. Esto podía ocasionar fallas en el sistema. El 17 de febrero de 2000 salió al mercado una segunda edición de Windows 98. Se llamó Windows 98 SE ("Second Edition" [Segunda edición]).

El 14 de septiembre de 2000, Microsoft lanzó Windows Me (por Millennium Edition [Edición del milenio]), también conocida como Windows Millenium. Windows Millenium se basó en gran parte en Windows 98 (y por lo tanto, en MS-DOS), aunque añadió capacidades adicionales de multimedia y de software. Asimismo, Windows Millennium incluía un mecanismo de restauración del sistema para volver a un estado anterior en caso de caída del sistema.

Al mismo tiempo que lanzaba estas versiones, Microsoft había estado vendiendo (desde 1992) un sistema operativo completo de 32 bits (que no se basaba en MS-DOS) para uso profesional, en una época en la que en las compañías se utilizaban principalmente sistemas centrales. Se llamaba Windows NT (porWindows "New Technology" [Nueva tecnología]). Windows NT no era una nueva versión de Windows 95 ni una mejora de éste, sino un sistema operativo totalmente diferente.

El 24 de mayo de 1993, se lanzó la primera versión de Windows NT. Se la denominó Windows NT 3.1. A ésta le siguió Windows NT 3.5 en septiembre de 1994 y Windows 3.51 en junio de 1995. Con Windows NT 4.0, que salió a la venta el 24 de agosto de 1996, Windows NT se volvió un verdadero éxito.

En julio de 1998, Microsoft lanzó Windows NT 4.0 TSE (Terminal Server Emulation). Éste fue el primer sistema de Windows que permitió que los terminales se pudieran conectar a un servidor, es decir, usar clientes ligeros para abrir una sesión en el servidor.

El 17 de febrero de 2000, a la siguiente versión de NT 4.0 se le dio el nombre de Windows 2000 (en lugar de Windows NT 5.0) para resaltar la unificación de los sistemas "NT" y "Windows 9x". Windows 2000 es un sistema entero de 32 bits con características de Windows NT, un administrador de tareas mejorado y una compatibilidad total con periféricos USB y FireWire.
Después, el 25 de octubre de 2001, llegó al mercado Windows XP. Esta versión fue una fusión de los sistemas operativos anteriores.

En abril de 2003, Windows Server 2003 se introdujo, reemplazando a la línea de productos de servidor de Windows 2000 con un número de nuevas características y un fuerte enfoque en la seguridad; lo cual fue seguido en diciembre de 2005 por Windows Server 2003 R2.

El 30 de enero de 2007, Microsoft lanzó Windows Vista. Contiene una serie de características nuevas, desde un shell rediseñado y la interfaz de usuario da importantes cambios técnicos, con especial atención a las características de seguridad. Está disponible en varias ediciones diferentes y ha sido objeto de muy severas críticas debido a su patente inestabilidad, sobredemanda de recursos de hardware, alto costo, y muy alta incompatibilidad con sus predecesores, hecho que no ocurría con éstos.

El 22 de octubre de 2009, Microsoft lanzó Windows 7. A diferencia de su predecesor, Windows Vista, que introdujo a un gran número de nuevas características, Windows 7 pretendía ser una actualización incremental, enfocada a la línea de Windows, con el objetivo de ser compatible con aplicaciones y hardware que Windows Vista no era compatible. Windows 7 tiene soporte multi-touch, un shell de Windows rediseñado con una nueva barra de tareas, conocido como Superbar, un sistema red llamado HomeGroup, y mejoras en el rendimiento sobre todo en velocidad y en menor consumo de recursos.