viernes, 28 de diciembre de 2012

Sistemas Operativos Final






Unix

Sistemas operativos


6°A 
Ricardo Hernández Martínez



















UNIX


El sistema Unix es un sistema operativo que admite múltiples usuarios, así como también múltiples tareas, lo que significa que permite que en un único equipo o multiprocesador se ejecuten simultáneamente varios programas a cargo de uno o varios usuarios. Este sistema cuenta con uno o varios intérpretes de comando (shell) así como también con un gran número de comandos y muchas utilidades (ensambladores, compiladores para varios idiomas, procesador de textos, correo electrónico, etc.). Además, es altamente transportable, lo que significa que es posible implementar un sistema Unix en casi todas las plataformas de hardware.
Actualmente, los sistemas Unix se afianzaron en entornos profesionales y universitarios gracias a su estabilidad, su gran nivel de seguridad y el cumplimiento de estándares, especialmente en lo que se refiere a redes.



Historia

El primer sistema "Unix" fue desarrollado en 1965 por Ken Thompson en los laboratorios de Bell AT&T en Murray Hill, Nueva Jersey, Estados Unidos. El objetivo de Ken Thompson era desarrollar un sistema operativo interactivo simple, denominado "Multics" (Multiplexed Information and Computing System [Sistema informático y de Información Multiplexado]) de manera que pudiera ejecutar un juego que él mismo había creado (Space Travel [Viaje al espacio], una simulación de un sistema solar).

Luego, alrededor de Multics se formó un consorcio compuesto por el MIT (Massachesetts Institute of Technology), la compañía General Electric Co. y los laboratorios Bell Lab.

En abril de 1969 los laboratorios AT&T decidieron utilizar el GECOS (General Electric Comprehensive Operating System [Sistema Operativo Completo General Electric]) en lugar de Multics. Sin embargo, Ken Thompson y Dennis Ritchie, quien se había unido al equipo, necesitaban hacer funcionar el juego Space Travel (Viaje al espacio) en una máquina más pequeña (un DEC PDP-7Procesador de Datos Programados que sólo tenía una memoria de 4K para hacer que se ejecutaran los programas del usuario). Por este motivo, ellos rediseñaron el sistema para crear una versión limitada de Multics, denominadaUNICS (UNiplexed Information and Computing Service [Servicio informático y de Información UNiplexado]), convenientemente abreviado: Unix.

La fecha del 1 de enero de 1970 es considerada la fecha de nacimiento del sistema UNIX, lo que explica por qué todos los relojes del sistema en los sistemas operativos de Unix comienzan con esta fecha.
Además de estas actividades, D. Ritchie jugó un papel muy importante en la definición del lenguaje C (ya que él es considerado uno de sus creadores junto con B. W. Kernighan). Así el sistema entero fue completamente reescrito en C en 1973 y se denominó Unix Time-Sharing System (Sistema de Tiempo Compartido Unix) (TSS). 
Cuando el sistema pasó a la versión 7 en 1979, su desarrollo fue acompañado de notables modificaciones, tales como:
·         la extracción de las limitaciones relacionadas con el tamaño de los archivos,
·         mejor portabilidad del sistema (que opera en varias plataformas de hardware),
·         la inclusión de varias utilidades.

Un decreto que data del año 1956 impidió que la compañía AT&T, a la que pertenecía Bell Labs, comercializara cualquier otro producto que no fuesen teléfonos o equipos de telégrafo. Es por este motivo que se tomó la decisión, en el año 1973, de distribuir el código fuente de 
UNIX en las universidades, con fines educativos.

Para fines del año 1977, investigadores de la Universidad de California desarrollaron otra versión Unix a partir del código fuente provisto por AT&T para poder ejecutar el sistema en su plataforma VAX y lo denominaron BSD, que significa Berkeley Software Development (Desarrollo del Software Berkeley).

De esta forma se conformaron dos ramas de desarrollo para el código fuente:
·         La rama de AT&T que se convertiría en Sistema V de los Laboratorios del Sistema UNIX (USL)
·         La rama de BSD (Berkeley Software Development [Desarrollo del Software Berkeley]), desarrollado por la Universidad de California.

En 1977, AT&T puso el código fuente de UNIX a disposición de otras compañías, a pesar de que se desarrollaron muchos sistemas similares a UNIX:
·         AIX, Unix comercial basado en el Sistema V desarrollado por IBM en febrero de 1990
·         Sun Solaris, Unix comercial basado en el Sistema V y en BSD desarrollado por SUN Microsystems
·         HP-UX, Unix comercial basado en BSD desarrollado por Hewlett Packard a partir de 1986
·         Ultrix, Unix comercial desarrollado por DEC
·         IRIX, Unix comercial desarrollado por SGI
·         Unixware, Unix comercial desarrollado por Novell
·         Unix SCO, Unix comercial basado en el Sistema V desarrollado por Santa Cruz Operations y Hewlett Packard a partir de 1979
·         Tru64 UNIX, Unix comercial desarrollado por Compaq

En 1983, AT&T tuvo el derecho de comercializar su Unix, lo que marcó la aparición del Sistema UNIX V, la versión comercial de su sistema Unix.

En 1985, un profesor holandés llamado Andrew Tannenbaum, desarrolló un sistema operativo mínimo denominado Minix, con el objetivo de poder enseñarles a sus alumnos la programación de sistemas. 

En 1991, un estudiante finlandés, Linus Torvalds, decidió diseñar, basándose en el modelo Minix, un sistema operativo capaz de ejecutar 386 tipos de arquitecturas. 


Este sistema operativo se denominó “Linux" y mostraba el siguiente mensaje en el foro de discusión comp.os.minix:

Hola a todos los que están utilizando minix – Estoy diseñando un sistema operativo gratuito (se trata sólo de un pasatiempo, no será gigante y profesional como gnu) para clones AT 386 (486).






Arquitectura de hardware

La estructura de Unix se amolda a un típico modelo de capas, de forma que cada capa únicamente puede comunicarse con las capas que se hallan en los niveles inmediatamente inferior y superior.

El núcleo (kernel) del sistema interactúa directamente con el hardware y proporciona una serie de servicios comunes a los programas de las capas superiores, de forma que las peculiaridades del hardware permanecen ocultas. Como los programas son independientes del hardware, es fácil mover programas entre sistemas Unix que se ejecutan en hardware diferente.



KERNEL: es el núcleo del sistema, realiza funciones directamente relacionadas con el hardware. No se relaciona con el usuario. Permanece oculto. Está formada por dos partes importantes:

·         Administración de procesos: asigna y administra los recursos de la computadora, controla la ejecución de los procesos, planifica el tiempo de los procesos que corren a la vez y determina los privilegios de cada uno.
·         Administración de dispositivos: supervisa la transferencia de datos entre la memoria principal y los periféricos (discos, cintas, impresoras, terminales, etc.)
    
    La ejecución de un proceso en UNIX se divide en dos niveles: nivel usuario y nivel kernel. Cuando se produce una llamada al sistema se pasa del modo usuario al modo kernel. Éste analiza la llamada, la ejecuta y devuelve el control a modo usuario. Esta diferenciación de modo se produce porque los procesos en modo usuario pueden acceder a sus instrucciones y datos, pero no a instrucciones y datos del kernel o de otros usuarios; mientras que el modo kernel puede acceder a todos los datos e instrucciones del sistema. Hay instrucciones privilegiadas a las que sólo se puede acceder en modo kernel, el cual reside permanentemente en memoria.

SHELL: es un utilitario del sistema (no forma parte del kernel). Es el intérprete de comandos. Su tarea es tomar los comandos enviados por el usuario, interpretarlos y llamar a las rutinas correspondientes. Existen distintas versiones del SHELL:

·         sh (standard shell)
·         csh (c-shell)
·         vsh (visual shell)
·         rsh (restricted shell)
·         ksh (korn shell)

Cada usuario puede elegir su propio Shell. Un Shell muestra un indicador (prompt) para indicar al usuario que está preparado para aceptar una orden o instrucción. Para introducir una orden desde el teclado, se escribe el nombre de la orden junto con la información que esta requiera y se pulsa la tecla retorno de carro. Esta línea tecleada se denomina línea de comandos u órdenes.

Cuando el Shell lee una línea de comandos, extrae la primera palabra, asume que éste es el nombre de un programa ejecutable, lo busca y lo ejecuta. El shell suspende su ejecución hasta que el programa termina, tras lo cual intenta leer la siguiente línea de órdenes.



Aplicaciones o software de interface con el usuario

Interface de usuario

Estas se definen como la parte del sistema Unix que determina como interactúa el usuario con él, es decir, de que forma el usuario introduce comandos o cualquier otra información y como el sistema visualiza los mensajes después de procesar tal información.
La interfaz primaria o básica de Unix es de tipo texto y hasta no hace mucho ha sido la única para el sistema. Actualmente hay interfaces graficas como el X Windows, open look, Gnome o KDE. La interfaz de tipo texto es la que se muestra al cargar el Shell por defecto o el deseado.
En cuanto a la interfaz gráfica x Windows, la característica fundamental es que incorpora un modelo cliente-servidor para el modo en que las aplicaciones interactúan con los dispositivos terminales. Incorpora tambien un protocolo de red y varias herramientas software que pueden ser utilizadas para crear aplicaciones basadas en x Windows.

La interfaz open look ha sido diseñada por AT&T y Sun Microcystems como interfaz grafica estándar para el sistema Unix. Esta interfaz permite ejecutar y visualizar varias aplicaciones simultáneamente en ventanas separadas sobre una misma pantalla. En general, todas las operaciones de gestión de archivos se realizan de forma gráfica gracias a la interfaz open look.

La interfaz KDE 3.2 para Linux, ahora con un potente gestor de información personal, incorpora, además de la función de inicio rápido y la reproducción automática de los medios introducidos (CD, DVD).

La interfaz GNOME 2.4 he mejorado la usabilidad y se han introducido ayudas de accesibilidad para discapacitados.


Interfaz gráfica de usuario (en inglés conocida por el acrónimo GUI, de Graphic User Interfase) tipo de visualización que permite al usuario elegir comandos, iniciar programas y ver listas de archivos y otras opciones utilizando las representaciones visuales (iconos) y las listas de elementos del menú. Las selecciones pueden activarse bien a través del teclado o con el ratón.








Linux

Gestión de procesos

Es un sistema multiproceso que permite la ejecución de varios procesos de forma simultánea.
Requiere de otro programa llamado planificador o Schedule que permite gestionar que proceso entra a ejecutarse en cada instante en la CPU, ya que esta es un recurso limitado.

Todo proceso nace cuando algún otro proceso ejecuta la llamada al sistema clone. Clone crea un duplicado idéntico del proceso que ha llamado.

PROCESS ID (PID): Cada proceso tiene un número asociado que se le asigna cuando es creado. Los PIDs son números enteros únicos para todos los procesos sistema.

USER ID & GROUP ID: Cada proceso tiene que tener asociado unos privilegios que limiten el acceso al sistema de ficheros. Estos privilegios quedan determinados por el

user ID y group ID del usuario que creo el proceso.

PARENT PROCESS: Todo proceso es creado por otro proceso, el proceso padre (parent process). El primer proceso iniciado por el kernel cuando el sistema arranca es el programa init. Este proceso tiene el PID 1 y es el padre de todos los procesos del sistema.

PARENT PROCESS ID: El PID del proceso que inició el proceso hijo.

ENVIROMENT: Cada proceso mantiene una lista de variables y sus correspondientes valores. El conjunto de estas variables recibe el nombre de process enviroment.
Normalmente el entorno de un proceso hijo se hereda del proceso padre a menos de que se indique de otra forma.

CURRENT WORKING DIRECTORY: Cada proceso tiene asociado un directorio por defecto, donde el proceso leerá/escribirá archivos, a menos que se le especifique explícitamente lo contrario.

NICE NUMBER: Permite al usuario modificar la prioridad de ejecución de un proceso.
















Modos de ejecución CPU

El CPU tiene dos modos de ejecución: el normal (usuario) y el supervisor (Kernel).
Cuando un proceso en modo usuario hace llamada al sistema. Ocurre un trap y pasa a modo supervisor, el kernel ejecuta la primera parte de read, pone el proceso en la cola de espera, selecciona nuevo proceso, pasa control y regresa a modo normal.

Cambio de texto

Cuando el proceso sale del CPU, su estado se guarda para el siguiente turno de ejecución, el estado incluye valor de los registros CPU, que son restituidos cuando el proceso vuelve al CPU, estado se guarda en la tabla de process control block en el kernel (un proceso, indexado por PID).

Servicios y funcionalidad

El sistema nos ofrece como usuarios un conjunto de funciones (llamadas a sistema) para gestionar procesos
·         Crear /Planificar/Eliminar procesos
·         Bloquear/Desbloquear procesos
·         Proporcionar mecanismos de sincronización
·         Proporcionar mecanismos de comunicación
o   Memoria compartida
o   Dispositivos especiales
o   Gestión de signals

Cuando un proceso crea otro, se establece una relación jerárquica que se denomina padre-hijo.  A su vez, el proceso hijo (y el padre) podrían crear otros procesos generándose un árbol de procesos.




Gestión de la memoria

Objetivos del sistema de gestión de memoria:
·         Ofrecer a cada proceso un espacio lógico propio.
·         Proporcionar protección entre procesos.
·         Permitir que los procesos compartan memoria.
·         Dar soporte a las distintas regiones del proceso.
·         Maximizar el rendimiento del sistema.
·         Proporcionar a los procesos mapas de memoria muy grandes.


Memoria Virtual

Direccionamiento de la memoria virtual: Linux utiliza una tabla de página de 3 niveles, cada tabla en particular tiene el tamaño de una página:

·                     Directorio de páginas: Los procesos activos tienen un directorio de páginas único que tiene el tamaño de página. El directorio de páginas debe residir en la memoria principal para todo proceso activo.
·                     Directorio intermedio de páginas: Este directorio se expande a múltiples páginas. Cada entrada en la tabla de páginas apunta a una página que contiene una tabla de páginas.
·                     Tabla de páginas: Cada entrada en la tabla hace referencia a una página virtual del proceso.


Algoritmo de reemplazo de páginas

Linux se basa en el algoritmo de Reloj, este algoritmo consiste en asociar un bit de usado y otro de modificado con cada una de las páginas de memoria principal. En Linux el usado se reemplaza por una variable de 8 bits. Cada vez que se accede a la página la 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" es decir no se ha hecho referencia a ella desde hace ya algún tiempo y es el mejor candidato para el reemplazo. Cuando el valor de edad es más alto, la frecuencia con la que se ha accedido a la página recientemente es mayor y por lo tanto tiene un a posibilidad menor de elegirse para el reemplazo. Este algoritmo es una variante de la política LRU.


Reserva de memoria del núcleo

La gestión de memoria del núcleo se realiza en base a los marcos de página de la memoria principal. Su función básica es asignar y liberar marcos para los distintos usos.
Los fundamentos de la reserva de memoria en Linux son los mecanismos de reservas de páginas ya usados para le gestión de memoria virtual de usuario. Como se utiliza el algoritmo buddy, se puede reservar y liberar unidades de una o más páginas. Debido a que el tamaño mínimo de memoria que se puede reservar es de una página, la reserva de páginas no sería muy adecuada ya que el núcleo requiere pequeños fragmentos que se utilizarán por poco tiempo y que son de distintos tamaños. Es por eso que Linux utiliza un esquema conocido como "asignación de láminas". En una máquina Pentium/x64, el tamaño de página es de 4 Kbytes y los fragmentos dentro de una página se pueden asignar en tamaños de 32, 64, 128, 252, 508, 2040 y 4080 bytes.




Gestión de almacenamiento secundario

El sistema de almacenamiento secundario se usa para guardar los programas y datos en dispositivos rapidos, de forma que sean fáciles, accesibles a las aplicaciones a través del sistema de archivos.

Hay dos elementos principales involucrados en este sistema.



·         Discos: el almacenamiento secundario se lleva a cabo casi exclusivamente sobre discos, por lo que es interesante reconocer su estructura y como se gestionan.

Los discos son los dispositivos básicos para llevar acabo almacenamiento masivo y no volátil de datos. Además se usan como plataforma para el sistema de intercambio que usa el gestor de memoria virtual. Son dispositivos electromagnéticos u optomecanicos, que se acceden a nivel de bloque lógico por el sistema de archivos.

·         Manejadores de discos: controlan todas las operaciones que se hacen sobre los discos, entre las que son especialmente importantes las cuestiones de planificación de peticiones a disco.

El manejador de discos se puede ver como una caja negra que recibe peticiones de los sistemas de archivos y el gestor de bloques y las traslada a un formato que entiende el controlador del dispositivo.

Un sistema d almacenamiento secundario es necesario, ya que la memoria principal es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:

·         Planificar los discos
·         Gestionar el espacio libre
·         Asignar el almacenamiento


Gestión de entrada salida

Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.
La Entrada/Salida se realiza por medio de los controladores de dispositivos, que tienen un rol especial en el núcleo de Linux. Estos son los encargados de ocultar completamente los detalles de funcionamiento interno de un dispositivo a nivel del Hardware, independizando así los programas de usuario que deberán utilizar ciertas funciones para poder operar con dichos dispositivos; de esta manera, si hubiera cambios en los dispositivos, porque se añadan, quiten o cambien, no hará falta volver a programar los programas, bastando con reemplazar los controladores antiguos por los que gestionen el nuevo hardware.
La ventaja de desarrollar controladores de dispositivos para Linux consiste en que estos pueden desarrollarse por separado del resto del núcleo y luego ser cargados en tiempo de ejecución, cuando se necesiten.



Sistema de archivos

Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de:
·         Construir y eliminar archivos y directorios.
·         Ofrecer funciones para manipular archivos y directorios.
·         Establecer la correspondencia entre archivos y unidades de almacenamiento.
·         Realizar copias de seguridad de archivos.
Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT3, NTFS, XFS, etc.

Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un sistema de archivos FAT32 está limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamaño es considerablemente mayor.

GNU/Linux comenzó su andadura con su sistema de archivos “Ext2”, pero éste fue sustituido por nuevas versiones que si tenían la capacidad de trabajar con grandes volúmenes de información (Terabytes) y de poder restituir rápidamente (gracias al “Journaling”) el sistema ante un fallo importante en el sistema de archivos. Posteriormente aparecieron otros sistemas de archivos nuevos y mejoras sobre el modelo existente.


Ext2
(Sistema de archivos Extendido, versión 2) el primer sistema de archivos utilizado por GNU/Linux fue creado por Remy Card (no es del todo cierto, antes existió “Ext”, utilizado con “Minix”, pero debido a sus limitaciones y usos no suele contar como un sistema de archivos válido para las distribuciones GNU/Linux que conocemos hoy en día). Como todos los sistemas de archivos de Linux, éste también es asíncrono, es decir, no escribe inmediatamente los metadatos en el dispositivo de almacenamiento, sino que lo hace de manera periódica. Con ello consigue aprovechar los tiempos muertos de la CPU y consecuentemente, el rendimiento general del equipo. Pese a ser el primero, ya dispone de mecanismos que permiten la recuperación de la información en caso de fallo (detectando particiones desmontadas erróneamente).
Ext3
(Sistema de archivos Extendido, versión 3) es compatible con Ext2 (la única diferencia con éste es que posee un fichero adicional de registro para implementar “journaling”). De hecho, el objetivo de Ext3 era mejorar Ext2, pero manteniendo la compatibilidad con éste. Entre las principales diferencias cabe destacar que Ext3 mantiene la consistencia no solo de los metadatos (como ya hace Ext2) sino también de los propios datos. Por supuesto, la seguridad de poder recuperar los datos de nuestro sistema tiene un coste, y es que tendremos menos rendimiento y más consumo de espacio en disco.
Ext4
(Sistema de archivos Extendido, versión 4) mantiene la compatibilidad con sus antecesores, posee “journaling”, reduce considerablemente la fragmentación de archivos (mejorando con ello el rendimiento), permite dispositivos de almacenamiento de más capacidad.
ReiserFS
Desarrollado por la empresa Namesys, fue el primer sistema de archivos con “journal” incluido en un núcleo estándar de Linux. Pero además, implementa otra serie de ventajas no disponibles en otros sistemas de archivos, como puede ser la repartición de sistemas de ficheros montados, o un esquema para reducir la fragmentación. La versión más reciente de este sistema de archivos se denomina “Reiser4”, y además de las características antes indicadas, posee mecanismos que le permiten trabajar con cientos de miles de archivos, y una estructura de archivos optimizada.
XFS
Creado por Silicon Graphics Inc., se trata de un sistema de archivos con “journaling” que inicialmente funcionaba sobre la implementación IRIX de UNIX, pero que posteriormente se liberó como código abierto. Destaca por su alta escalabilidad y fiabilidad (admite redireccionamiento de 64 bits, implementación paralelizada), y sobre todo porque es capaz de trabajar con archivos muy grandes.
JFS
Desarrollado por IBM, inicialmente fue creado para servidores de alto rendimiento y equipos de altas prestaciones. Posee un eficiente “journaling” que le permite trabajar cómodamente con archivos de gran tamaño como con otros más pequeños. Las particiones JFS pueden ser dinámicamente redimensionadas (como ya hacía RaiserFS), pero no pueden ser comprimidas (algo que si hacen RaiserFS y XFS).



Estructura de Directorios en Linux
Pero no solo el sistema de archivos de nuestro sistema operativo Linux es importante para conocer aspectos que afectan al rendimiento de nuestro equipo, también es importante que conozcamos la forma en la que esta estructurado el sistema de directorios.

El estándar utilizado por GNU/Linux para organizar la información se denomina FHS (Filesystem Hierarchy Standard), y éste sistema se encarga de organizar la información de forma jerárquica.




Sistema de protección

Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:
·         Distinguir entre uso autorizado y no autorizado.
·         Especificar los controles de seguridad a realizar.
·         Forzar el uso de estos mecanismos de protección.


Sistema de comunicaciones

Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

Gestión de programas del sistema

Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:
·         Manipulación y modificación de archivos.
·         Información del estado del sistema.
·         Soporte a lenguajes de programación.
·         Comunicaciones.


Gestor de recursos

Como gestor de recursos, el Sistema Operativo administra:
·         La CPU (Unidad Central de Proceso, donde está alojado el microprocesador).
·         Los dispositivos de E/S (entrada y salida)
·         La memoria principal (o de acceso directo).
·         Los discos (o memoria secundaria).
·         Los procesos (o programas en ejecución).
·         y en general todos los recursos del sistema.


Conclusión

Pese a que los usuarios de este sistema operativo son contados, Unix es un sistema demasiado bueno ya que al ser de código abierto permite a sus usuarios modificarlo para ajustarlo a sus necesidades, además de que ayuda a la economía de estos ya que puede ser ejecutado en cualquier ordenador. Además de que basándose de su código fuente este ayuda a desarrollar muchas aplicaciones para teléfonos móviles, pantallas de televisión, tostadoras, lavadoras, etc.

Unix es un sistema operativo muy completo, ya que gracias a las aportaciones de sus usuarios en todo el mundo lo han llevado a ser un sistema muy estable, además de que no hay muchos programas maliciosos que puedan perjudicarlo a diferencia de Windows.





Bibliografía:




No hay comentarios:

Publicar un comentario