tipos sistema operativo llamadas estructura diferencias diferencia cli api shell operating-system kernel

api - operativo - tipos de llamadas al sistema



Cuál es la diferencia entre Shell, Kernel y API (4)

El Shell es la forma de comunicarse con el sistema operativo y el kernel por línea de comandos. Shell lo hace llamando también a la API. El kernel es realmente el núcleo del SO y gestiona la memoria, la programación de tareas, maneja los sistemas de archivos, el manejo de E / S, ... Todo lo que hace el kernel, de alguna manera puede ser invocado por la API que proporciona el sistema operativo.

printf y fopen se envuelven alrededor de las llamadas al sistema (API) proporcionadas por el sistema operativo y el kernel

Quiero entender cómo esto se aplica a un sistema operativo y también a aquellas cosas que no son sistemas operativos de hecho. No puedo entender la diferencia entre los tres y su esencia. API es las funciones que podemos llamar, pero ¿qué es Shell? Si tenemos una API, ¿qué es exactamente el Kernel del sistema operativo? Entiendo que un sistema operativo tiene un núcleo que no va a cambiar y este núcleo hace el trabajo fundamental de un sistema operativo típico, mientras que podemos tener diferentes interfaces de usuario como GUI o línea de comando con el mismo Kernel. Entonces el problema es que estoy confundido sobre cómo estas cosas son diferentes. Aaaaaaarhg!

¿Pueden las funciones como printf y fopen en C llamarse llamadas API?


Shell: es como una interfaz de línea de comando para su sistema operativo. Comandos como ls, ps, kill y muchos más se pueden usar para solicitar completar la operación específica del sistema operativo. Es como "cmd" en windows.

Kernel: es el código principal de cualquier sistema operativo. Cualquier solicitud que realice en shell o mediante GUI (como la asignación de memoria, apertura de un archivo, etc.) finalmente la realiza Kernel.

Y sí, las llamadas que mencionas se consideran llamadas API. La solicitud de estas llamadas también es manejada por Kernel. Por favor, vaya al enlace a continuación para encontrar llamadas API en Unix. http://www.mkssoftware.com/docs/api_index.asp

Esta es la imagen general en un sistema unix:

Aplicaciones => (shell + rutinas de la biblioteca) => llamadas al sistema => kernel

mira que el controlador de solicitud final es el Kernel. ¡Gracias!


Considere un ejemplo: está viendo que la película está en el intérprete de comandos y, en realidad, el proceso realizado sobre el hardware es el kernel . shell es aproximadamente trabajo como el de os para la interfaz de usuario y software y el kernel como el de os para software y hardware.


  • Un shell es un intérprete de comandos, es decir, el programa que procesa el comando que ingresa en su emulador de terminal (modo interactivo) o procesa scripts de shell (archivos de texto que contienen comandos) (modo de proceso por lotes). En los primeros tiempos de Unix, solía ser la forma única en que los usuarios interactuaban con sus máquinas. Hoy en día, los entornos gráficos están reemplazando el shell para la mayoría de los usuarios casuales.

  • Un kernel es un programa de bajo nivel que interactúa con el hardware (CPU, RAM, discos, red, ...) además de las aplicaciones que se están ejecutando. Es el programa de nivel más bajo que se ejecuta en las computadoras, aunque con la virtualización puede tener múltiples kernels ejecutándose sobre las máquinas virtuales que se ejecutan sobre otro sistema operativo.

  • Una API es un término genérico que define la interfaz que los desarrolladores deben usar al escribir código utilizando bibliotecas y un lenguaje de programación. Los kernels no tienen API, ya que no son bibliotecas. Tienen un ABI , que, más allá de otras cosas, define cómo interactúan las aplicaciones con ellos a través de llamadas al sistema. Los desarrolladores de aplicaciones de Unix utilizan la biblioteca C estándar (por ejemplo, libc , glibc ) para compilar binarios compatibles con ABI. printf(3) y fopen(3) no son envoltorios de llamadas al sistema, pero (g)libc instalaciones estándar de (g)libc . Las llamadas de bajo nivel del sistema que eventualmente usan son write(2) y open(2) y posiblemente otras como brk , mmap . El número entre paréntesis es una convención para indicar en qué manual se encuentra el comando.

El primer volumen de las páginas del manual de Unix contiene los comandos del shell .

El segundo contiene las envolturas de llamadas al sistema como write y open . Forman la interfaz para el kernel .

El tercero contiene las funciones de la biblioteca estándar (incluida la API estándar de Unix) (excluidas las llamadas al sistema) como fopen y printf . Estos no son envoltorios para llamadas al sistema específicas, sino solo código que usa llamadas al sistema cuando es necesario.