Un sistema operativo, abreviado como sistema operativo, es una pieza de software que controla los componentes de hardware de un sistema, ya sea un teléfono, una computadora portátil o un escritorio. Está a cargo de la comunicación entre el software y el hardware. Windows XP, Windows 8, Linux y Mac OS X son ejemplos de sistemas operativos. El sistema operativo consiste en:
Espacio del núcleo y espacio de usuario
Espacio del núcleo: El núcleo se encuentra en un estado de sistema elevado, que incluye un espacio de memoria protegido y acceso completo al hardware del dispositivo. Este estado del sistema y espacio de memoria se conoce en conjunto como espacio de kernel. Dentro del espacio del núcleo, el acceso central al hardware y los servicios del sistema se administran y se proporcionan como un servicio al resto del sistema.
Espacio de usuario: Las aplicaciones del usuario se llevan a cabo en el espacio del usuario, donde pueden llegar a un subconjunto de los recursos disponibles de la máquina a través de llamadas al sistema de kernel. Al usar los servicios principales proporcionados por el núcleo, una aplicación a nivel de usuario se puede crear como un software de productividad de juego u oficina, por ejemplo,.
Linux
Linux ha ganado popularidad a lo largo de los años debido a que, por lo tanto, es de código abierto, basado en un diseño como unix, y se ha portado a más plataformas en comparación con otros sistemas operativos competidores. Es un sistema operativo, como se indica, que se asemeja a un sistema operativo UNIX: un sistema operativo multitarea estable de múltiples usuarios, y que se ha ensamblado como un software gratuito y de código abierto para el desarrollo y distribución. Lo que significa que cualquier individuo o empresa tiene el permiso de usar, imitar, estudiar y alterar el sistema operativo Linux de cualquier manera que desee.
El núcleo de Linux
Desde su primer lanzamiento el 17 de septiembre de 1991, el kernel de Linux ha desafiado todas las probabilidades de ser el componente definitorio de Linux. Fue lanzado por Linus Torvalds y utiliza la GNU/Linux para describir el sistema operativo. Android OS de Linux, con sede en el kernel, en teléfonos inteligentes ha hecho que Linux supere su competencia como la base del sistema operativo instalado más grande de todos los sistemas operativos de propósito general. La historia del núcleo de Linux se puede encontrar aquí.
Un núcleo puede ser monolítico, microkernel o híbrido (como el OS X y Windows 7). El kernel de Linux es un kernel de sistema operativo monolítico que se asemeja al sistema UNIX. La línea Linux de sistemas operativos comúnmente denominados distribuciones de Linux se basa en este núcleo. El núcleo monolítico, a diferencia del microkernel, no solo abarca la unidad de procesamiento central, la memoria y el IPC, sino que también tiene controladores de dispositivos, llamadas del servidor del sistema y administración del sistema de archivos. Son mejores para comunicarse con hardware y realizar varias tareas simultáneamente. Es por esta razón que los procesos aquí reaccionan a una velocidad rápida.
Sin embargo, los pocos contratiempos son la enorme huella de instalación y memoria necesaria y seguridad inadecuada ya que todo funciona en modo supervisor. Por el contrario, un microkernel puede reaccionar lentamente a las llamadas de aplicación como servicios de usuario y el núcleo está separado. Por lo tanto, tienen un tamaño más pequeño en comparación con el núcleo monolítico. Los microkernels son fácilmente extensibles, pero se necesita más código para escribir un microkernel. El núcleo de Linux está escrito en los lenguajes de programación C y de ensamblaje.
La relación de kernel de Linux con el hardware
El núcleo puede administrar el hardware del sistema a través de lo que se conoce como interrupciones. Cuando el hardware quiere interactuar con el sistema, se emite una interrupción que interrumpe el procesador que a su vez hace lo mismo con el kernel. Para proporcionar sincronización, el núcleo puede deshabilitar las interrupciones, ya sea una sola o todas ellas. En Linux, sin embargo, los manejadores de interrupción no se ejecutan en un contexto de proceso, en cambio se ejecutan en un contexto de interrupción no asociado con ningún proceso.Este contexto de interrupción particular existe únicamente para permitir que un controlador de interrupción responda rápidamente a una interrupción individual y finalmente salga.
¿Qué hace que el núcleo Linux sea diferente de otros núcleos clásicos de Unix??
Existen diferencias significativas entre el núcleo Linux y los clásicos núcleos Unix; Como se menciona a continuación:
Componentes del núcleo de Linux
Un núcleo es simplemente un gerente de recursos; El recurso que se administra puede ser un proceso de proceso, memoria o hardware. Gestiona y arbitra el acceso al recurso entre múltiples usuarios competidores. El kernel de Linux existe en el espacio del núcleo, debajo del espacio de usuario, que es donde se ejecutan las aplicaciones del usuario. Para que el espacio del usuario se comunique con el espacio del núcleo, se incorpora una biblioteca GNU C que proporciona un foro para que la interfaz de llamadas del sistema se conecte al espacio del núcleo y permita la transición de regreso al espacio de usuarios.
El núcleo de Linux se puede clasificar en tres niveles principales:
La perspectiva arquitectónica del núcleo de Linux consta de: interfaz de llamadas del sistema, administración de procesos, el sistema de archivos virtuales, gestión de memoria, pila de red, arquitectura y controladores de dispositivos.
El sistema llama e interrumpe
Las aplicaciones pasan información al núcleo a través de llamadas al sistema. Una biblioteca contiene funciones con las que funcionan las aplicaciones. Las bibliotecas luego, a través de la interfaz de llamadas del sistema, instruyan al núcleo que realice una tarea que la aplicación desea. ¿Qué es una llamada del sistema Linux??
Las interrupciones ofrecen una forma a través de la cual el kernel de Linux administra el hardware de los sistemas. Si el hardware tiene que comunicarse con un sistema, una interrupción en el procesador hace el truco, y esto se pasa al núcleo de Linux.
Interfaces de núcleo de Linux
El kernel de Linux ofrece varias interfaces para las aplicaciones de espacio de usuario que realizan una variedad de tareas y tienen diferentes propiedades. Existen dos interfaz de programación de aplicaciones (API) distinta; el espacio de usuarios de kernel y el núcleo interno. La API de Linux es la kernel-userspace API; Da acceso a programas en el espacio del usuario en los recursos y servicios del sistema del kernel. Está compuesto por la interfaz de llamadas del sistema y las subrutinas de la biblioteca GNU C.
Linux abi
Esto se refiere al espacio de usuarios de kernel-user ABI (interfaz binaria de aplicación). Esto se explica como la interfaz que existe entre los módulos de programa. Al comparar API y ABI, la diferencia es que los ABI se utilizan para acceder a códigos externos que ya están compilados, mientras que API son estructuras para administrar software. Definir un ABI importante es principalmente el trabajo de las distribuciones de Linux que para el kernel de Linux. Se debe definir un ABI específico para cada conjunto de instrucciones, por ejemplo, x86-64. Los usuarios finales de los productos de Linux están interesados en el ABI en lugar de la API.
Interfaz de llamadas del sistema
Como se discutió anteriormente, esto juega un papel más destacado en el núcleo. Es una denominación de toda la parte de todas las llamadas del sistema existentes.
La biblioteca estándar C
Todas las llamadas del sistema del núcleo están dentro de la biblioteca GNU C, mientras que la API de Linux está compuesta por la interfaz de llamadas del sistema y la biblioteca GNU C, también llamada GLIBC.
Interfaz del sistema operativo portátil (POSIX)
Posix es un término colectivo de estándares para mantener la compatibilidad entre los sistemas operativos. Declara la API junto con las interfaces de utilidad y los shells de línea de comandos. La API de Linux, no solo tiene las características utilizables definidas por el POSIX, sino que también tiene características adicionales en su núcleo:
Más información sobre Posix Standard está aquí.
Las versiones anteriores del núcleo de Linux eran de tal manera que todas sus partes se fijaron estáticamente en una, monolítica. Sin embargo, los núcleos de Linux modernos tienen la mayor parte de su funcionalidad contenida en módulos que se colocan en el kernel dinámicamente. Esto, en contraste con los tipos monolíticos, se conoce como núcleos modulares. Dicha configuración permite a un usuario cargar o reemplazar los módulos en un núcleo en ejecución sin la necesidad de reiniciar.
El módulo de núcleo cargable de Linux (LKM)
La forma básica de agregar código en el núcleo de Linux es a través de la introducción de archivos de origen al árbol de origen del núcleo. Sin embargo, es posible que desee agregar un código mientras el kernel se ejecuta. El código agregado de esta manera se conoce como un módulo de kernel cargable. Estos módulos particulares realizan varias tareas, pero se especifican en tres: controladores de dispositivos, controladores del sistema de archivos y llamadas al sistema.
El módulo de núcleo cargable se puede comparar con las extensiones del núcleo en otros sistemas operativos. Puede colocar un módulo en el núcleo cargándolo como un LKM o uniéndolo al núcleo base.
Los beneficios de los LKM sobre la unión al núcleo base:
Usos de LKMS
A diferencia de lo que dice la mayoría de la gente, compilar el kernel de Linux es una tarea simple. La siguiente es una ilustración paso a paso del proceso utilizando una de las distribuciones de Linux: Fedora 13 KDE. (Es aconsejable hacer una copia de seguridad de sus datos y comida.conf solo en caso de que algo salga mal)
tar xvjf linux-2.6.37.alquitrán.bz2 |
Es posible actualizar un kernel de Linux de una versión anterior a una más reciente, al tiempo que conserva todas las opciones de configuración de la versión anterior. Para lograr esto, uno primero tiene que hacer una copia de seguridad del .configuración archivo en el directorio de origen del núcleo; Esto es en caso de que algo salga mal al intentar actualizar su kernel. Los pasos son:
Descargando la nueva fuente; Los desarrolladores de Kernel de Linux entienden que algunos usuarios pueden no querer descargar el código fuente completo para las actualizaciones del núcleo, ya que esto perdería el tiempo y el ancho de banda. Por lo tanto, se pone a disposición un parche que puede actualizar un lanzamiento de kernel más antiguo. Los usuarios solo necesitan saber qué parche se aplica a una versión en particular, ya que un archivo de parche de kernel solo actualizará el código fuente de una versión específica. Los diferentes archivos de parche se pueden aplicar a través de las siguientes formas;
Aquí hay pasos más detallados para que el proceso actualice su núcleo de la fuente en Debian y de los binarios pre-construidos en CentOS y Ubuntu.
El kernel de Linux actúa principalmente como un administrador de recursos que actúa como una capa abstracta para las aplicaciones. Las aplicaciones tienen una conexión con el kernel que a su vez interactúa con el hardware y los servicios de las aplicaciones. Linux es un sistema multitarea que permite múltiples procesos se ejecuta simultáneamente. El kernel de Linux es popular debido a su naturaleza de código abierto que permite a los usuarios alterar el núcleo a lo que es adecuado para ellos y su hardware. Por lo tanto, se puede usar en una variedad de dispositivos, a diferencia de otros sistemas operativos.
La característica modular del kernel de Linux agrega más emoción a sus usuarios. Esto se debe a la amplia variedad de modificaciones que se pueden hacer aquí sin reiniciar el sistema. La flexibilidad brinda a sus usuarios un gran espacio para actualizar su imaginación.
Además, la naturaleza monolítica del núcleo es una gran ventaja, ya que tiene una alta capacidad de procesamiento que el microkernel. El principal retroceso con el tipo de núcleo de Linux es que si alguno de sus servicios fallas, entonces todo el sistema cae consigo. Las últimas versiones se han diseñado de manera que si se agrega un nuevo servicio, no es necesario modificar todo el sistema operativo. Esta es una mejora en comparación con las versiones anteriores.