Rumah  >  Artikel  >  Tutorial sistem  >  Apakah prinsip sistem pengendalian linux

Apakah prinsip sistem pengendalian linux

WBOY
WBOYasal
2024-02-21 09:36:04433semak imbas

Tajuk: Penerokaan yang mendalam tentang prinsip dan contoh kod sistem pengendalian Linux

Pengenalan: Sistem pengendalian Linux telah digunakan secara meluas dalam bidang komputer kerana kelebihannya seperti kestabilan, keselamatan dan sumber terbuka. Artikel ini akan meneroka secara mendalam prinsip sistem pengendalian Linux, termasuk pengurusan proses, sistem fail, pengurusan memori, dll., dan melampirkan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik prinsip kerja sistem pengendalian Linux.

1. Pengurusan Proses

Sesuatu proses ialah unit asas yang berjalan sebagai program dalam sistem pengendalian Linux. Linux memastikan peruntukan yang munasabah dan penjadualan sumber sistem melalui pengurusan proses.

  1. Proses penciptaan:

Proses penciptaan melibatkan panggilan sistem fork(), yang mencipta proses anak dengan menyalin ruang alamat, deskriptor fail, dsb. proses induk. Kod sampel khusus adalah seperti berikut:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t pid;
    pid = fork();
    if (pid < 0)
    {
        fprintf(stderr, "Fork failed");
        exit(-1);
    }
    else if (pid == 0)
    {
        printf("This is child process
");
    }
    else
    {
        printf("This is parent process
");
    }
    return 0;
}
  1. Penjadualan Proses:

Penjadual Linux menentukan proses yang sedang berjalan berdasarkan keutamaan dan dasar penjadualan proses tersebut. Penjadualan proses dilakukan melalui modul kernel penjadual. Berikut ialah kod contoh penjadualan pelbagai proses yang mudah:

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

void signal_handler(int signum)
{
    printf("Received signal: %d
", signum);
}

int main()
{
    signal(SIGINT, signal_handler);
    signal(SIGQUIT, signal_handler);
    while (1)
    {
        sleep(1);
    }
    return 0;
}

2. Sistem fail

Sistem fail ialah mekanisme yang digunakan untuk mengurus fail dan direktori dalam sistem pengendalian Linux. Linux menggunakan struktur sistem fail seperti pokok, bermula dari direktori akar dan menyusun fail melalui struktur direktori.

  1. Bacaan fail:

Bacaan fail dilakukan dengan membuka deskriptor fail dan membaca kandungan fail. Berikut ialah contoh kod mudah untuk membaca fail:

#include <stdio.h>

int main()
{
    FILE *fp;
    char c;

    fp = fopen("test.txt", "r");
    if (fp == NULL)
    {
        printf("Error opening file
");
        return -1;
    }

    while ((c = fgetc(fp)) != EOF)
    {
        printf("%c", c);
    }

    fclose(fp);
    return 0;
}
  1. Penulisan fail:

Penulisan fail dilakukan dengan membuka deskriptor fail dan menulis kandungan fail. Berikut ialah kod contoh penulisan fail ringkas:

#include <stdio.h>

int main()
{
    FILE *fp;

    fp = fopen("test.txt", "w");
    if (fp == NULL)
    {
        printf("Error opening file
");
        return -1;
    }

    fprintf(fp, "Hello World!");

    fclose(fp);
    return 0;
}

3. Pengurusan Memori

Pengurusan memori ialah mekanisme yang digunakan dalam sistem pengendalian Linux untuk mengurus memori sistem. Linux menyediakan ruang memori yang lebih besar melalui memori maya dan menggunakan jadual halaman untuk terjemahan alamat dan perlindungan.

  1. Peruntukan memori:

Linux menyediakan pelbagai fungsi peruntukan memori, seperti malloc, calloc, dll. Berikut ialah kod contoh peruntukan memori dinamik ringkas:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *ptr;
    ptr = (int *)malloc(10 * sizeof(int));
    if (ptr == NULL)
    {
        printf("Error allocating memory
");
        return -1;
    }

    // 使用分配的内存
    for (int i = 0; i < 10; i++)
    {
        ptr[i] = i;
    }

    free(ptr);
    return 0;
}
  1. Perlindungan memori:

Linux menyediakan perlindungan untuk memori proses melalui jadual halaman, termasuk kebenaran baca, tulis, laksana dan lain-lain. Berikut ialah kod contoh perlindungan memori mudah:

#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>

int main()
{
    int *ptr;
    ptr = mmap(NULL, sizeof(int) * 10, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
    if (ptr == MAP_FAILED)
    {
        printf("Error mapping memory
");
        return -1;
    }

    // 使用内存
    for (int i = 0; i < 10; i++)
    {
        ptr[i] = i;
    }

    // 设置只读权限
    if (mprotect(ptr, sizeof(int) * 10, PROT_READ) == -1)
    {
        printf("Error protecting memory
");
        return -1;
    }

    munmap(ptr, sizeof(int) * 10);
    return 0;
}

Kesimpulan:

Artikel ini memperkenalkan secara ringkas prinsip sistem pengendalian Linux, termasuk pengurusan proses, sistem fail dan pengurusan memori, serta melampirkan contoh kod yang sepadan. Pemahaman yang mendalam tentang prinsip sistem pengendalian Linux adalah penting untuk pembangunan dan operasi dan kakitangan penyelenggaraan. Saya harap artikel ini dapat membantu pembaca.

Atas ialah kandungan terperinci Apakah prinsip sistem pengendalian linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn