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.
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; }
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.
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; }
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.
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; }
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!