[Linux] Hablando sobre la relación entre las funciones de la biblioteca del lenguaje C y las interfaces de llamadas al sistema

prefacio

Damos un gráfico jerárquico de tal computadora:

inserte la descripción de la imagen aquí
Se puede ver que todo el sistema informático se divide en capa de hardware y capa de software.

En la capa de software tenemos la capa del kernel y la capa del usuario.

El sistema operativo es una pieza de software que se encuentra entre el hardware y el software del usuario, que administra varios hardware desde abajo y brinda servicios para el software del usuario en la parte superior. Podemos comparar así

usuario director de escuela
Sistema operativo consejero
hardware estudiante

Si queremos administrar bien el hardware, necesitamos a alguien que entienda de hardware que nos ayude a administrar el hardware, ese es el sistema operativo

Sin embargo, para garantizar la seguridad, el sistema operativo solo abrirá interfaces específicas para las personas. Solo a través de interfaces específicas, las personas pueden realizar una gestión específica del hardware. Tales interfaces se denominan系统调用接口

Sin embargo, la interfaz de llamada al sistema es relativamente complicada y es demasiado molesto usar la interfaz de llamada al sistema para administrar el hardware cada vez. Por lo tanto, algunas personas con motivos ocultos han llevado a cabo la interfaz de llamada al sistema 二次封装y encapsulado una interfaz humanizada más amigable para personas a las que llamar, por ejemplo:

  • función de biblioteca de lenguaje C
  • intérprete de línea de comandos
  • Interfaz gráfica

Con todo, este diagrama de jerarquía lo explica todo:

inserte la descripción de la imagen aquí

A continuación, tomemos el sistema operativo Linux como ejemplo para ver cómo funcionan la interfaz de llamada del sistema y las funciones secundarias de la biblioteca de lenguaje C encapsulado 读/写.

1. Interfaz de llamada al sistema

1. Investigue el uso de funciones como abrir, leer, escribir, buscar, cerrar, etc., y comprender los descriptores de archivos
2. Requisitos:
2.1 Use el código para abrir el archivo "bite" en la ruta actual (si el archivo no no existe, cree un archivo), y envíe el archivo al archivo. Escriba "¡Me gusta Linux!" en él.
2.2 Lea el contenido del archivo e imprímalo en la salida estándar; cierre el descriptor de archivo

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main() {
    
    
  int fd = open("bite", O_WRONLY|O_CREAT, 0644);
  const char* buffer = "i like linux\n";
  write(fd, buffer, strlen(buffer));
  close(fd);
  fd = open("bite", O_RDONLY, 0644);
  char output[128] = {
    
    '\0'};
  read(fd, output, 127);
  write(1, output, strlen(output));
  close(fd);
  return 0;
}

inserte la descripción de la imagen aquí

2. Funciones de la biblioteca de lenguaje C

1. Investigue el uso de funciones como fopen, fread, fwrite, fseek, fclose, etc.
2. Requisitos:
2.1 Use el código para abrir el archivo "bite" en la ruta actual (si el archivo no existe, cree un archivo) y escriba "linux so" en el archivo ¡fácil!".
2.2 Lea el contenido del archivo e imprímalo en la salida estándar; cierre el puntero de flujo de archivo

#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main() {
    
    
  FILE* fp = fopen("bite", "w");
  const char* buffer = "linux so easy\n";
  fwrite(buffer, 1, strlen(buffer), fp);
  fclose(fp);
  fp = fopen("bite", "r");
  char output[128] = {
    
    0};
  fread(output, 1, 128, fp);
  fprintf(stdout, "%s", output);
  fclose(fp);
  return 0;
}

inserte la descripción de la imagen aquí

3. Resumen

Podemos ver que tanto la interfaz de llamada del sistema como las funciones de la biblioteca del lenguaje C pueden completar operaciones de lectura y escritura. En general:

  1. Desde el punto de vista del desarrollo, el sistema operativo aparece como un todo para el mundo exterior, pero expondrá algunas de sus propias interfaces para el desarrollo de nivel superior.Esta parte de la interfaz proporcionada por el sistema operativo se denomina llamadas al sistema.
  2. En términos de uso, las llamadas al sistema tienen funciones relativamente básicas y requisitos relativamente altos para los usuarios. Por lo tanto, los desarrolladores interesados ​​pueden encapsular adecuadamente algunas llamadas al sistema para formar bibliotecas. Con las bibliotecas, es muy beneficioso para los usuarios de nivel superior o El desarrollador lleva a cabo un desarrollo secundario. .

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_52640673/article/details/123172350
Recomendado
Clasificación