Bagaimana untuk berkongsi memori antara proses Linux
Mekanisme komunikasi antara proses memori dikongsi digunakan terutamanya untuk memindahkan sejumlah besar data antara proses Rajah berikut menunjukkan gambarajah skema menggunakan memori dikongsi untuk memindahkan sejumlah besar data antara proses:
Memori dikongsi ialah ruang memori yang dibuka secara berasingan dalam memori Ruang memori ini mempunyai struktur datanya yang tersendiri, termasuk kebenaran akses, saiz dan masa akses terkini. Struktur data ditakrifkan seperti berikut:
from /usr/include/linux/shm.h struct shmid_ds { struct ipc_perm shm_perm; /* operation perms 操作权限 */ int shm_segsz; /* size of segment (bytes) 段长度大小 */ __kernel_time_t shm_atime; /* last attach time 最近attach时间 */ __kernel_time_t shm_dtime; /* last detach time 最近detach时间 */ __kernel_time_t shm_ctime; /* last change time 最近change时间 */ __kernel_ipc_pid_t shm_cpid; /* pid of creator 创建者pid */ __kernel_ipc_pid_t shm_lpid; /* pid of last operator 最近操作pid */ unsigned short shm_nattch; /* no. of current attaches */ unsigned short shm_unused; /* compatibility */ void *shm_unused2; /* ditto - used by DIPC */ void *shm_unused3; /* unused */ };
Sebelum dua proses menggunakan ruang memori kongsi ini, mereka perlu mewujudkan sambungan antara ruang alamat proses dan ruang memori kongsi, iaitu, lekapkan ruang memori kongsi ke dalam proses.
Sistem ini mengenakan sekatan berikut pada memori yang dikongsi:
#define SHMMAX 0x2000000 /* max shared seg size (bytes) 最大共享段大小 */ #define SHMMIN 1 /* min shared seg size (bytes) 最小共享段大小 */ #define SHMMNI 4096 /* max num of segs system wide */ #define SHMALL (SHMMAX/getpagesize()*(SHMMNI/16)) #define SHMSEG SHMMNI /* max shared segs per process */
#include <sys> #include <sys></sys></sys>
/*
* Parameter pertama ialah nilai kunci, biasanya dijana oleh fungsi ftok()
* Parameter kedua ialah saiz segmen memori kongsi yang akan dibuat (dalam bait)
* Parameter ketiga digunakan untuk mengenal pasti pengecam penciptaan segmen memori kongsi
*/
int shmget(key_t key, size_t size, int shmflg);
#include <sys> #include <sys></sys></sys>
/*
* Parameter pertama ialah pengecam memori kongsi yang akan dikendalikan
* Parameter kedua ialah operasi yang akan dilakukan
* Parameter ketiga ialah maklumat pembolehubah memori dikongsi sementara bagi struktur shmid_ds
*/
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
Fungsi panggilan sistem shmat() memetakan segmen memori yang dikongsi ke segmen data proses panggilan dan mengembalikan alamat pertama ruang memori Fungsinya diisytiharkan seperti berikut:
#include <sys> #include <sys> </sys></sys>
/*
* Parameter pertama ialah pengecam memori kongsi yang akan dikendalikan
* Parameter kedua digunakan untuk menentukan alamat yang dipetakan bagi memori yang dikongsikan Jika ia bukan 0, parameter ini akan diperuntukkan oleh sistem
* Parameter ketiga digunakan untuk menentukan kebenaran akses dan keadaan pemetaan segmen memori kongsi
*/
void *shmat(int shmid, const void *shmaddr, int shmflg);
Selepas menggunakan ruang memori yang dikongsi, anda perlu menggunakan panggilan fungsi shmdt() untuk memisahkannya daripada proses semasa. Pengisytiharan fungsi adalah seperti berikut:
#include <sys> #include <sys> </sys></sys>
/*
* Parameter ialah alamat pertama memori kongsi yang diperuntukkan
*/
int shmdt(const void *shmaddr);
1. Selepas menggunakan fungsi fork() untuk mencipta proses anak, proses itu mewarisi memori kongsi yang dipasang oleh proses induk.
2 Jika exec() dipanggil untuk melaksanakan program baharu, semua memori kongsi yang dipasang akan dinyahlekap secara automatik.
3 Jika fungsi exit() dipanggil dalam proses, semua memori kongsi yang dipasang akan diputuskan sambungan daripada proses semasa.
Mohon untuk memori yang dikongsi, proses induk menyimpan integer pada alamat pertama, dan proses anak membacanya.
#include #include <sys> #include <sys> #include <sys> #include #include #define SHM_SIZE 1024 int main() { int shm_id, pid; int *ptr = NULL; </sys></sys></sys>
/* Mohon untuk ingatan bersama */
shm_id = shmget((key_t)1004, SHM_SIZE, IPC_CREAT | 0600);
/* Petakan memori yang dikongsi untuk memproses ruang alamat */
ptr = (int*)shmat(shm_id, 0, 0); printf("Attach addr is %p \n", ptr); *ptr = 1004; printf("The Value of Parent is : %d \n", *ptr); if((pid=fork()) == -1){ perror("fork Err"); exit(0); } else if(!pid){ printf("The Value of Child is : %d \n", *ptr); exit(0); }else{ sleep(1);
/* Nyahpeta */
shmdt(ptr);
/* Padam memori kongsi */
shmctl(shm_id, IPC_RMID, 0); } return 0; }
Hasil keluaran:
Atas ialah kandungan terperinci Bagaimana untuk berkongsi memori antara proses Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Tugas utama pentadbir sistem Linux termasuk pemantauan sistem dan penalaan prestasi, pengurusan pengguna, pengurusan pakej perisian, pengurusan keselamatan dan sandaran, penyelesaian masalah dan resolusi, pengoptimuman prestasi dan amalan terbaik. 1. Gunakan alat atas, HTOP dan lain -lain untuk memantau prestasi sistem dan menyesuaikannya. 2. Menguruskan akaun pengguna dan keizinan melalui arahan USERADD dan arahan lain. 3. Gunakan APT dan YUM untuk menguruskan pakej perisian untuk memastikan kemas kini sistem dan keselamatan. 4. Konfigurasi firewall, memantau log, dan lakukan sandaran data untuk memastikan keselamatan sistem. 5. menyelesaikan masalah dan menyelesaikan melalui analisis log dan penggunaan alat. 6. Mengoptimumkan parameter kernel dan konfigurasi aplikasi, dan ikuti amalan terbaik untuk meningkatkan prestasi sistem dan kestabilan.

Pembelajaran Linux tidak sukar. 1.Linux adalah sistem operasi sumber terbuka berdasarkan UNIX dan digunakan secara meluas dalam pelayan, sistem tertanam dan komputer peribadi. 2. Memahami sistem fail dan pengurusan kebenaran adalah kunci. Sistem fail adalah hierarki, dan keizinan termasuk membaca, menulis dan melaksanakan. 3. Sistem pengurusan pakej seperti APT dan DNF menjadikan pengurusan perisian mudah. 4. Pengurusan proses dilaksanakan melalui PS dan arahan teratas. 5. Mula belajar dari arahan asas seperti MKDIR, CD, Touch dan Nano, dan kemudian cuba penggunaan lanjutan seperti skrip shell dan pemprosesan teks. 6. Kesilapan umum seperti masalah kebenaran dapat diselesaikan melalui sudo dan chmod. 7. Cadangan Pengoptimuman Prestasi termasuk menggunakan HTOP untuk memantau sumber, membersihkan fail yang tidak perlu, dan menggunakan SY

Purata gaji tahunan pentadbir Linux ialah $ 75,000 hingga $ 95,000 di Amerika Syarikat dan € 40,000 hingga € 60,000 di Eropah. Untuk meningkatkan gaji, anda boleh: 1. Secara berterusan mempelajari teknologi baru, seperti pengkomputeran awan dan teknologi kontena; 2. Mengumpulkan pengalaman projek dan menubuhkan portfolio; 3. Mewujudkan rangkaian profesional dan mengembangkan rangkaian anda.

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

Internet tidak bergantung pada sistem operasi tunggal, tetapi Linux memainkan peranan penting di dalamnya. Linux digunakan secara meluas dalam pelayan dan peranti rangkaian dan popular untuk kestabilan, keselamatan dan skalabiliti.

Inti sistem pengendalian Linux adalah antara muka baris arahannya, yang boleh melakukan pelbagai operasi melalui baris arahan. 1. Operasi Fail dan Direktori Gunakan LS, CD, MKDIR, RM dan arahan lain untuk menguruskan fail dan direktori. 2. Pengguna dan Pengurusan Kebenaran Memastikan keselamatan sistem dan peruntukan sumber melalui UserAdd, Passwd, CHMOD dan arahan lain. 3. Pengurusan proses menggunakan PS, membunuh dan arahan lain untuk memantau dan mengawal proses sistem. 4. Operasi rangkaian termasuk PING, IFCONFIG, SSH dan arahan lain untuk mengkonfigurasi dan menguruskan sambungan rangkaian. 5. Pemantauan sistem dan penyelenggaraan sistem seperti TOP, DF, DU untuk memahami status operasi sistem dan penggunaan sumber.

Pengenalan Linux adalah sistem operasi yang kuat yang disukai oleh pemaju, pentadbir sistem, dan pengguna kuasa kerana fleksibiliti dan kecekapannya. Walau bagaimanapun, kerap menggunakan arahan panjang dan kompleks boleh membosankan dan er

Linux sesuai untuk pelayan, persekitaran pembangunan, dan sistem tertanam. 1. Sebagai sistem pengendalian pelayan, Linux stabil dan cekap, dan sering digunakan untuk menggunakan aplikasi konkurasi tinggi. 2. Sebagai persekitaran pembangunan, Linux menyediakan alat arahan dan sistem pengurusan pakej yang cekap untuk meningkatkan kecekapan pembangunan. 3. Dalam sistem tertanam, Linux ringan dan disesuaikan, sesuai untuk persekitaran dengan sumber yang terhad.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft