Cuando hablamos de un sistema operativo, coloquialmente pensamos que se trata de la interfaz gráfica que nos permite controlar un equipo, que puede ir desde una computadora personal, una Tablet, un Smartphone o cualquier otro equipo tecnológico actual. Sin embargo, las GUI (por sus siglas en inglés de «Graphical User Interface» o interfaz gráfica de usuario) no son en realidad el sistema operativo, ya que en realidad la GUI se trata de una capa de software que permite a los usuarios entender los comandos que controlan a los equipos de una forma amigable y visual, es decir, convirtiendo las instrucciones en imágenes con figuras de botones, menús e íconos que los vuelven más comprensibles para todos los usuarios. Pero si eso no es un sistema operativo, entonces ¿qué es?
De acuerdo con William Stallings, «un sistema operativo es un programa que controla la ejecución de aplicaciones y programas y que actúa como interfaz entre las aplicaciones y el hardware del computador» (Stallings, 2005, pág. 54), como se puede notar, de acuerdo con Stallings, un sistema operativo no interactúa directamente con el usuario, aunque, como menciona Carretero, el «objetivo es simplificar el manejo y la utilización de la computadora, haciéndolo seguro y eficiente» (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 34). En palabras simples, pensemos que cuando una persona utiliza cualquier tipo de computadora (PC de escritorio, Laptop, Tablet, Smartphone, Smart TV o cualquier otro aparato electrónico moderno), se crea entonces una serie de relaciones físicas y no físicas entre la persona y la computadora. Éstas relaciones serían, la persona con los dispositivos de entrada y salida (como el teclado, el ratón, las bocinas, impresoras, pantallas, etcétera), los dispositivos de entrada y salida con los programas y aplicaciones (como el procesador de textos, las hojas de cálculo, editores o reproductores de imagen, audio o vídeo, navegadores de Internet, clientes de correo, etcétera), los programas y aplicaciones con el sistema operativo (como Windows, Linux, Mac OS, Android, iOS, Unix, etcétera) y el sistema operativo con la unidad central de proceso.
Como tal, el sistema operativo únicamente permite la interacción de los programas y aplicaciones con el hardware del equipo, sin embargo, en la actualidad la gran mayoría de los sistemas operativos incluyen además de los comandos de control, una enorme cantidad de software añadido, como lo pueden ser interfaces gráficas, utilerías, controladores, protocolos, etcétera.
Una de las complejidades establecidas en el estudio de los sistemas operativos radica en que no existe una definición exacta ni estándar de lo que es un sistema operativo, esto conlleva a diferentes ideas sobre lo que son, tal y como Flynn lo indica: “Existen diversas definiciones de lo que es un sistema operativo, pero no hay una definición exacta, es decir una que sea estándar” (M. Flynn & McIver McHoes, 2001, pág. 7). No mencionaremos la gran cantidad de ideas que existen, ya que nos tomaría bastantes páginas alcanzar ese propósito, lo cual, además tornaría más confuso el concepto, en lugar de ello, podemos resumir que dentro de la arquitectura de una computadora, el sistema operativo consiste en ser la capa lógica que permite trasladar las instrucciones del resto del software para ser aplicadas por el hardware y, a su vez, comunica los resultados del hardware al resto del software, ya sea para finalizar el proceso o, para ser reprocesados los resultados.
Generaciones de los sistemas operativos
Es posible comprender la historia y generaciones de los sistemas operativos de manera ligada a la historia y generaciones de las computadoras, tal es el caso de la prehistoria de las computadoras, con el caso de la máquina analítica del matemático inglés Charles Babbage, el cual determinó que el primer ordenador digital requeriría de software, el cual fue diseñado por la que es conocida como la primera programadora, es decir, Ada Lovelace, hija del poeta Lord Byron.
Primera Generación (1945-1955): Tubos de Vacío y Tableros de Conexiones
Se carecía de un sistema operativo como tal, ya que durante aquella época solamente se podían controlar las computadoras a través de conexiones de cables directas, a través de tableros de conexiones o, más tarde, utilizando tarjetas perforadas que servían para introducir algún tipo de software básico de cálculo.
Segunda Generación (1955-1965): Transistores y Sistemas por Lotes
Con la llegada de los transistores y del batch system se pudo optimizar el proceso de introducción de software con tarjetas perforadas, las cuales transmitían un conjunto de instrucciones a una cinta magnética, la cual era colocada para procesar su información en nuevos equipos, los cuales dividían la carga en trabajos los cuales eran ejecutados utilizando un programa especial cargado por los operadores del equipo. En éste caso ya se poseía un software particular para funcionar como interfaz entre la información y el hardware, con lo que se tuvo al “antecesor del sistema operativo actual” (Tanenbaum, 2003, pág. 7).
En ésta generación se observaba ya el uso de lenguajes de programación como FORTRAN o el lenguaje ensamblador, con lo cual, los programas eran compilados para ser cargados en memoria, para finalmente con una última tarjeta perforada se le indicaba al programa operador que se ejecutara el programa, finalizando con una última tarjeta que marcaba el final del trabajo.
Existían básicamente dos de éstos programas especiales precursores de los sistemas operativos, los cuales se llamaban FMS, siglas de Fortran Monitor System (o Sistema de Monitoreo de Fortran), así como el IBSYS, el cual era “el sistema operativo de IBM para 7094” (Tanenbaum, 2003, pág. 7).
Tercera Generación (1965-1980): Circuitos Integrados y Multiprogramación
Con la llegada de las computadoras con base de circuitos integrados, en especial la línea 360 de IBM, la cual permitía utilizar tanto software científico como comercial, apareció el sistema operativo OS/360, el cual era compatible con todos los equipos, los cuales podían diferir unos de otros por sus capacidades y puertos de conexión, sin embargo, al poseer la misma arquitectura, eran compatibles utilizando un mismo sistema operativo para todos. Sin embargo, tanta compatibilidad se volvió compleja, costosa por la gran cantidad de programadores necesarios para poder realizar la inmensa cantidad de líneas de código fuente en lenguaje ensamblador, además de ser deficiente debido a que tenía gran cantidad de errores lo que requería de nuevas versiones de forma continua que corrigiera a los mismos.
Una característica importante de ésta generación de sistemas operativos, radicaba en la multiprogramación, la cual consistía en optimizar los tiempos de uso de la computadora particionando la memoria del equipo para que pudieran ser ejecutados varios procesos en los tiempos de entrada/salida.
También se desarrolló una técnica conocida como Simultaneous Peripheral Operation On Line o spooling, que consistía en que la información de las tarjetas era posible grabarlas en el disco de forma inmediata, lo que permitía que cada trabajo fuera posible ser cargado del disco y ser colocado en la partición de memoria que quedara libre al terminar su trabajo anterior.
Como nota personal, parte de los sistemas operativos de aquella época fue el sistema MULTICS (por sus siglas en inglés MULTIplexed Information and Computing Service) el cual, durante su inicio, no se pudo considerar como un verdadero éxito, ya que su intención era poder ofrecer a través de un solo equipo central, la capacidad de procesamiento y utilidades a una gran cantidad de equipos (llamados como máquinas tontas) en red, los cuales serían conectados por muchos usuarios para trabajar en el equipo central. Como tal, MULTICS se podría considerar como la base de los sistemas operativos multiusuario y a su vez, como el inicio de las tecnologías Cloud que se han popularizado en la actualidad.
Cuarta Generación (de 1980 hasta el presente): Computadoras personales
Al desarrollarse los chips para la creación de los microprocesadores de mano de Intel, fue necesario un sistema operativo que pudiera sacar provecho de ellos, por lo cual Gary Kildall fue encomendado para dicha tarea. Kildall entonces diseñó un sistema operativo basado en disco conocido como CP/M (por las siglas de Control Program for Microcomputers o Programa de control para microcomputadoras). Este sistema operativo fue posible que se ejecutara en computadoras que utilizaban el procesador 8080 de Intel, así como otros como el Zilog Z80.
Gracias a una gran cantidad de programas que fueron escritos para funcionar con el CP/M, éste sistema operativo dominó el mercado durante unos 5 años.
Para “1980, IBM diseñó el PC y buscó software que se ejecutara en él” (Tanenbaum, 2003, pág. 13), con lo cual Bill Gates fue contactado para ser utilizado su intérprete de BASIC bajo licencia, al mismo tiempo también para buscar un sistema operativo para la PC. Después de una anécdota de negocios en la cual la empresa de Gary Kildall rechazó la oferta de IBM y, que regresara con Gates para conseguir el sistema operativo, el ahora magnate negoció con la empresa Seattle Computer Products la licencia de un sistema operativo adecuado para la PC, nombrado como DOS (Disk Operating System), el cual después de que Gates contratara a su programador Tim Paterson para trabajar en la naciente Microsoft, realizó algunas modificaciones sobre la base del DOS con lo que fue renombrado como MS-DOS, el cual dominó al mercado para la IBM PC.
Sin embargo, para poder utilizar MS-DOS era necesario tener conocimientos más que básicos de computación, debido principalmente a que para utilizar la computadora era necesario colocar los comandos a través del teclado, lo que hacía necesario conocer a los mismos, esto dificultaba en gran medida la utilización de la computadora, por lo que fue necesario que llegara el desarrollo de Steve Jobs, el cual aplicó un invento de los años sesenta conocido como GUI (Graphical User Interface) creado por Doug Engelbart y, que había sido utilizado por Xerox en sus equipos. Jobs tuvo la oportunidad de ver una de esas interfaces y decidió incorporarla primero al ordenador Lisa y posteriormente al Apple Macintosh, siendo un enorme éxito por su facilidad de uso, creando al mismo tiempo el término user friendly (amigable con el usuario), lo que permitió que para ser usuario de un ordenador no fuera necesario tener conocimientos de computación, ni siquiera desear tenerlos, simplemente era necesario observar las figuras en la pantalla y con la ayuda del ratón, clickear sobre los íconos para acceder a los comandos del sistema operativo.
Cuando Gates observó la interfaz gráfica de la Macintosh decidió agregarla al que sería el sucesor del MS-DOS, es decir, Windows, que un principio se ejecutaba sobre MS-DOS, es decir, era un programa más para ser utilizado en MS-DOS o un Shell, hasta 1995 que surgió una versión independiente de MS-DOS conocida como Windows 95, la cual había evolucionado bastante su sistema básico de ventanas y que incorporó el icónico menú de inicio que identifica hasta la fecha al sistema de Microsoft.
Sin embargo, no todo en el mundo de los sistemas operativos para ordenadores corresponde a Microsoft o Apple, sino que también existe un tercer pilar de los sistemas operativos actuales, es decir, UNIX, el cual, si bien no está popularizado entre la mayoría de los usuarios, en entornos de red corporativos, así como entre programadores y usuarios avanzados ha mantenido su popularidad.
De UNIX se desprende Linux, el cual es un sistema operativo cada vez más frecuente entre la mayoría de los usuarios, mantenido como una excelente alternativa a Windows en procesadores basados en la arquitectura Pentium.
Una de las características más sobresalientes tanto de UNIX como de Linux es que ambos, a diferencia de Windows o Mac OS, trabajan por distribuciones, las cuales se enfocan en cubrir diferentes necesidades, pero utilizando siempre el mismo núcleo o kernel. Las distribuciones también van evolucionando y generando nuevas versiones de sí mismas, además de servir como base para nuevas distribuciones, como ha sido el caso de Debian GNU/Linux, del cual se generó la distribución más popular, es decir, Ubuntu, que a su vez dio lugar a Linux Mint, otra distribución sumamente popular en ésta época.
Por su parte, UNIX no solamente generó a Linux, sino que también presentó la división por distribución, en sus versiones más populares, el caso de FreeBSD, el cual en línea proviene de la “Berkeley Software Distribution” que fue concebido como un sistema operativo UNIX con añadidos generados por especialistas de la Universidad de California en Berkeley y con autorización de los Laboratorios Bell de la compañía AT&T para el uso del código fuente para que fuera adaptado a sus necesidades. FreeBSD por su parte tiene la capacidad de integrar casi totalmente cualquier aplicación de Linux, además del software de UNIX. En cuanto a la interfaz gráfica, por defecto se integra con un sistema de ventanas conocido como X Windows, que ofrece aspectos gráficos básicos, pero es capaz de agregársele entornos gráficos mucho más completos como el caso de Gnome, KDE, etcétera.
Definición de Kernel del sistema operativo
El kernel o núcleo del sistema operativo corresponde al nivel de software más cercano al hardware, “y es la que gestiona los recursos hardware del sistema y la que suministra la otra funcionalidad básica del sistema operativo” (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 34).
Como tal, el kernel posee los privilegios más altos de control de la computadora, ya que, en su modo, también conocido como Modo Monitor, “el S. O. toma el control del computador. Sólo en este modo se pueden ejecutar instrucciones llamadas privilegiadas y accesar estructuras de datos internas del S. O.” (M. Flynn & McIver McHoes, 2001, pág. 19).
Definición de Shell del sistema operativo
Aunque existe un debate entre diferentes autores sobre la posición de Shell respecto al Sistema Operativo, de manera concreta, podemos decir que el Shell es el intérprete de comandos. De manera más amplia, el Shell es la capa de software que comunica al usuario con el sistema operativo, ofreciendo en varias ocasiones aspectos gráficos que facilitan el envío de instrucciones del usuario hacia el sistema operativo.
Propiamente el Shell no podemos asegurar que forme parte del sistema operativo, pero es frecuente que el Shell venga como una aplicación ofrecida por parte de los S. O., en general podemos decir que “constituye la principal interfaz entre un usuario sentado frente a su terminal y el sistema operativo, a menos que el usuario esté utilizando una interfaz gráfica de usuario” (Tanenbaum, 2003, pág. 40).
Definición de interrupción
De acuerdo con Ida Flynn, “una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones” (M. Flynn & McIver McHoes, 2001, pág. 12), para el caso de los sistemas operativos actuales, éstos reaccionan ante las interrupciones, es decir, en casos en los que el sistema operativo se encuentra en estado de quietud o inactivo, el sistema operativo espera ya sea una llamada de entrada o salida de datos o una interrupción.
Las interrupciones son generadas por el hardware, es decir, el usuario no tiene el control de ellas, al menos no de forma directa, siendo éstas de suma importancia, ya que el controlador de interrupciones determina el funcionamiento del hardware, asignando prioridades, de tal forma que una no obstruya a la otra o, como indica Andrew Tanenbaum, “con frecuencia las interrupciones se presentan en momentos en que sería desastroso atenderlas, por ejemplo, mientras se está ejecutando una rutina de tratamiento de otra interrupción” (Tanenbaum, 2003, pág. 29). Es por ello que el controlador de interrupciones define cuales son las prioridades y da salida a éstas en el momento adecuado para que no genere problemas con el trabajo del sistema.
Definición de excepción
En forma breve, Jesús Carretero define las excepciones como “un evento que ocurre durante la ejecución de un programa y que requiere de un fragmento de código situado fuera del flujo normal de ejecución” (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 112), es decir, se trata de una señal que debe atender el sistema operativo, siendo ésta señal generada ya sea por el hardware o por el software, que ocasionará que el sistema operativo realice una acción diferente de lo que cotidianamente realiza.
Al ocurrir una excepción, tanto de la parte física como de la lógica del equipo, el sistema operativo toma el control, el cual realizará una rutina que corresponda con la forma de tratar a la excepción. Al ejecutar la rutina, el S. O., escribe un registro con los datos de la excepción y, en caso de que exista “un manejador para la excepción generada, el sistema operativo transfiere el control a dicho manejador, en caso contrario aborta la ejecución del proceso” (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 112).
Definición de proceso
Cuando un programa o aplicación es ejecutado por un usuario, el programa toma la forma de proceso, es decir, un proceso se trata de un programa en ejecución o, mejor dicho, “como la unidad de procesamiento gestionada por el sistema operativo” (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 78).
Para cada proceso existe un registro gestionado por el sistema operativo, de tal manera que éste conoce en todo momento del proceso, los recursos que tiene asignados, así como sus características. La mayoría de esa información es almacenada por el BCP o bloque de control del proceso, el cual resguarda el contenido de los segmentos de memoria en los que residen el código y los datos del proceso.
Estados de un proceso
Existen tres estados posibles para los procesos:
En ejecución
Cuando un proceso se ejecuta, toma los recursos del procesador asignado, desarrolla su actividad y entrega una salida, durante este tiempo, el sistema operativo le asigna la prioridad para que desarrolle la actividad asignada hasta que finalice y avance a otro proceso.
Preparado
En éste caso, el programa se encuentra listo para ejecutarse, detenido momentáneamente hasta que otro proceso con mayor prioridad sea ejecutado.
Bloqueado
Cuando el proceso queda bloqueado a la espera de un dato, es “incapaz de ejecutarse hasta que tenga lugar algún suceso externo” (Tanenbaum, 2003, pág. 78).
Definición y características de un hilo
Los hilos, también conocidos como flujos de control, proceso ligero, hilos de ejecución o por su nombre en inglés thread, los cuales poseen como función el llevar un contador que señalará la secuencia de ejecución de las instrucciones.
En el caso de los multihilos, se tratan de “la capacidad de un sistema operativo de dar soporte a múltiples hilos de ejecución en un solo proceso” (Stallings, 2005, pág. 158). En el caso de los sistemas operativos modernos, estos cuentan con la capacidad de generar sistemas multihilos en los que se poseen múltiples procesos junto con múltiples hilos por proceso.
Las características de los hilos son presentadas como los beneficios que éstos aportan, mismos que son enunciados por William Stalings (Stallings, 2005, pág. 160) y que a continuación son enumerados:
- Lleva mucho menos tiempo crear un nuevo hilo en un proceso existente que crear un proceso totalmente nuevo. Los estudios realizados por los que desarrollaron el sistema operativo Mach muestran que la creación de un hilo es diez veces más rápida que la creación de un proceso en UNIX[TEVA87].
- Lleva menos tiempo finalizar un hilo que un proceso.
- Lleva menos tiempo cambiar entre dos hilos dentro del mismo proceso.
- Los hilos mejoran la eficiencia de la comunicación entre diferentes programas que están ejecutando. En la mayor parte de los sistemas operativos, la comunicación entre procesos independientes requiere la intervención del núcleo para proporcionar protección y los mecanismos necesarios de comunicación. Sin embargo, ya que los hilos dentro de un mismo proceso comparten memoria y archivos, se pueden comunicar entre ellos sin necesidad de invocar al núcleo.
Particionamiento de la memoria (paginación y segmentación)
Al momento de administrar la memoria puede realizarse de dos formas, realizando una partición de la memoria de manera fija o, particionando de manera dinámica o variable.
La forma más sencilla es la partición fija, las cuales se encuentran presentes al momento de encender la máquina, permaneciendo con su dimensión inicial hasta que la computadora es apagada. Esta forma era aplicada por sistemas operativos antiguos y a pesar de su facilidad de programación, no es muy práctica debido a lo inflexible que es en cuanto a procesos urgentes que tienen que esperar hasta que el equipo sea reiniciado.
Lo anterior fue mejorado al crear particiones contiguas de tamaño dinámico, por lo cual, “el sistema tenía que mantener ya una estructura de datos suficiente para saber en dónde habían huecos disponibles de RAM y de dónde a dónde habían particiones ocupadas por programas en ejecución” (M. Flynn & McIver McHoes, 2001, pág. 146). Este procedimiento implica que cuando un proceso nuevo necesita ser almacenado en la memoria principal, el sistema operativo busca en toda la memoria algún espacio lo suficientemente grande para colocar ahí el programa o, en su defecto, reasigna las posiciones en la memoria de los programas ya cargados, de tal forma que la memoria disponible se vuelva contigua con el objetivo de hacer el espacio suficiente para el nuevo proceso o, como última opción, en caso de que la memoria no fuera suficiente para cargar el proceso, entonces el S. O., bloquea el programa y toma otro.
En el caso de la paginación, ésta busca gestionar los espacios de memoria a través de zonas contiguas conocidas como páginas, utilizando el hardware de gestión de memoria para que traduzca las tablas de paginación como un mapa de direcciones que genera un programa. De acuerdo con Carretero, la “traducción consiste en detectar a que página del mapa corresponde una dirección lógica y acceder a la tabla de páginas para obtener el número de marco donde está almacenada dicha página” (Carretero Pérez, Miguel Anasagasti, García Carballeira, & Pérez Costoya, 2001, pág. 189).
Dado que, con la paginación, el hardware de gestión de memoria desconoce sobre las diferentes áreas de los procesos, entonces es el Sistema Operativo el encargado de almacenar para cada programa o aplicación una tabla de áreas o regiones que determine las páginas pertenecientes a cada región. Ya que esto implica dos problemas complejos como lo son que, si se desea generar una región hay que completar las entradas de las páginas contenidas en la región con características iguales y, si se quiere compartir una región se tienen que apuntar a los mismos marcos por parte de las entradas de dos procesos. Por ello se pensó en una técnica de hardware que pretende dar soporte a las regiones, almacenando cada región en un segmento, con lo que se nombró a ésta técnica como segmentación.
Bueno, de momento podemos decir que éstas son las generalidades de todos los sistemas operativos actuales, ello no implica que en el futuro próximo los sistemas operativos evolucionen para cubrir nuevos aspectos del hardware, así como nuevas necesidades tanto de usuarios como de desarrolladores. Esperamos les haya sido de utilidad y si tienen alguna duda sobre lo que aquí se plantea pueden dejarla en la sección de comentarios que con gusto trataremos de resolverla.
Bibliografía
Braren, P. (21 de Julio de 2012). How to remove Active Directory Domain from Windows Server 2012 Essentials (bad idea), attempt to restore the simplicity of Workgroup (failed). Recuperado el 9 de Junio de 2016, de TinkerTry IT @ Home: https://tinkertry.com/ws2012e-domain-removal
Carretero Pérez, J., García Carballeira, F., & Pérez Costoya, F. (2002). Prácticas de Sistemas Operativos. De la base al diseño (Primera ed.). Madrid, España: McGraw-Hill. Recuperado el 08 de 06 de 2016
Carretero Pérez, J., Miguel Anasagasti, P., García Carballeira, F., & Pérez Costoya, F. (2001). Sistemas Operativos. Una visión aplicada (Primera ed.). (C. Fernández Madrid, Ed.) Madrid, España: McGraw-Hill. Recuperado el 08 de 06 de 2016
Contreras, D. (20 de Junio de 2015). Planificar Roles del Servidor Comandos PowerShell – Windows Server 2012 R2 Certificación 70-410. Santo Domingo, República Dominicana. Recuperado el 9 de Junio de 2016, de https://www.youtube.com/watch?v=hEUwPMTxzQw
García Rodríguez, D. (25 de Abril de 2013). Administrador del Servidor (Server Manager) en Windows Server 2012. Recuperado el 9 de Junio de 2016, de El Informatiku | Tamos en ello!!!!: http://elinformatiku.es/administrador-del-servidor-server-manager-en-windows-server-2012/
M. Flynn, I., & McIver McHoes, A. (2001). Sistemas operativos (Tercera ed.). (P. De la Garza Rosales, Ed., & G. Sánchez, Trad.) Ciudad de México, Distrito Federal, México: Thomson Learning Inc.
Microsoft Corporation. (4 de Septiembre de 2012). Información general del Sistema de archivos resistente a errores. Recuperado el 9 de Junio de 2016, de Microsoft TechNet: Recursos para profesionales de TI: https://technet.microsoft.com/es-es/library/hh831724.aspx
Microsoft Corporation. (4 de Septiembre de 2012). Novedades de Active Directory en Windows Server. Recuperado el 9 de Junio de 2016, de Microsoft TechNet: Recursos para profesionales de TI: https://technet.microsoft.com/es-es/library/dn268294(v=ws.11).aspx
Microsoft Corporation. (4 de Septiembre de 2012). Novedades de IPAM. Recuperado el 9 de Junio de 2016, de Microsoft TechNet: Recursos para profesionales de TI: https://technet.microsoft.com/es-es/library/dn268500
Microsoft Corporation. (4 de Septiembre de 2012). Novedades de Windows PowerShell. Recuperado el 9 de Junio de 2016, de Microsoft TechNet: Recursos para profesionales de T: https://technet.microsoft.com/es-mx/library/hh857339.aspx
Microsoft Corporation. (4 de Septiembre de 2012). Novedades de Windows Server. Recuperado el 9 de Junio de 2016, de Microsoft TechNet: Recursos para profesionales de TI: https://technet.microsoft.com/es-es/library/dn250019(v=ws.11).aspx
Stallings, W. (2005). Sistemas operativos (Quinta ed.). (M. Martín-Romo, Ed., J. M. Peña Sánchez, F. Pérez Costoya, M. Pérez Hernández, V. Robles Forcada, & F. J. Rosales García, Trads.) Madrid, España: Pearson Educación, S.A.
Tanenbaum, A. (2003). Sistemas Operativos Modernos (Segunda ed.). (G. Trujano Mendoza, Ed., & R. Escalona García, Trad.) Naucalpan de Juárez, Estado de México, México: Pearson Educación de México, S. A. de C. V. Recuperado el 08 de 06 de 2016
[…] el artículo pasado “Bases para entender los sistemas operativos” explicamos a detalle un poco de la historia y componentes de los sistemas operativos, ahora […]
[…] artículos pasados hemos abordado el tema de los sistemas operativos, donde ya fijamos unas bases para entenderlos, y comenzamos una introducción práctica sobre ellos. Ahora, para entender los tipos de sistemas […]
[…] Lee el artículo completo en KiGaRi CyD.com […]
[…] ¿qué tiene que ver Android con Linux?, bueno, los sistemas operativos como lo mencionamos en otro artículo anterior, para diferenciar a un sistema operativo de otro, se utiliza el kernel y, precisamente el kernel (o […]