Rumah > Artikel > Operasi dan penyelenggaraan > Apakah maksud proses dalam linux?
Proses ialah contoh program yang dijalankan dalam Linux dan merupakan unit asas untuk menguruskan urus niaga sesuatu proses mempunyai persekitaran pemprosesan dan sumber sistemnya sendiri. Status proses berubah, termasuk penciptaan proses, penjadualan dan kematian.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
Proses ialah contoh program yang dijalankan dalam Linux.
Dalam sistem Linux, sistem pengendalian menyelesaikan tugas satu demi satu melalui proses, dan proses itu adalah unit asas untuk menguruskan transaksi. Proses ini mempunyai persekitaran pemprosesan bebasnya sendiri (seperti: pembolehubah persekitaran mana yang diperlukan pada masa ini, di mana direktori tempat program dijalankan, pengguna yang sedang menjalankan program, dll.) dan sumber sistem (seperti: penghunian CPU pemproses , memori, peranti I / O, data, program).
Apabila anda melaksanakan program dalam sistem Linux, sistem akan mewujudkan persekitaran khusus untuk program tersebut. Persekitaran ini mengandungi semua yang diperlukan oleh sistem untuk menjalankan program.
Setiap kali anda melaksanakan perintah dalam Linux, ia mencipta, atau memulakan, proses baharu. Sebagai contoh, apabila anda cuba menjalankan arahan "ls -l" untuk menyenaraikan kandungan direktori, anda memulakan proses. Jika terdapat dua tetingkap terminal dipaparkan pada skrin, maka anda mungkin telah menjalankan program terminal yang sama dua kali, dan akan terdapat dua proses terminal.
Setiap tetingkap terminal mungkin menjalankan Shell dan setiap Shell yang dijalankan ialah satu proses. Apabila anda memanggil arahan daripada Shell, program yang sepadan akan dilaksanakan dalam proses baharu Apabila pelaksanaan proses program selesai, proses Shell akan kembali berjalan.
Sistem pengendalian menjejaki proses melalui kod berangka yang dipanggil PID atau ID proses. Setiap proses dalam sistem mempunyai PID yang unik.
Kini kami menggunakan contoh untuk memahami proses dalam Linux. Kami melaksanakan arahan berikut pada baris arahan Shell:
$ sleep 10 & [1] 3324
Oleh kerana program akan menunggu selama 10 saat, kami cepat mencari sebarang proses bernama sleep pada Shell semasa:
$ ps -ef | grep sleep mozhiyan 3324 5712 cons1 17:11:46 /usr/bin/sleep
Kami melihat bahawa proses bernama /usr/bin/sleep
sedang berjalan dalam sistem (PIDnya adalah sama dengan PID yang kami dapat dalam arahan sebelumnya).
Sekarang, kami cuba menjalankan arahan tidur di atas daripada 3 tetingkap terminal berbeza secara selari, output arahan di atas akan serupa dengan yang berikut:
$ ps -ef | grep sleep mozhiyan 896 5712 cons1 17:16:51 /usr/bin/sleep mozhiyan 5924 5712 cons1 17:16:52 /usr/bin/sleep mozhiyan 2424 5712 cons1 17:16:50 /usr/bin/sleep
Kami melihat tidur program Proses berasingan dicipta untuk setiap contoh.
Setiap proses Linux mempunyai nombor ID lain, ID proses induk (ppid). Setiap proses pengguna dalam sistem mempunyai proses induk.
Arahan "ps -f" akan menyenaraikan PID dan PPID proses. Output arahan ini adalah serupa dengan yang berikut:
$ ps -f UID PID PPID TTY STIME COMMAND mozhiyan 4124 228 cons0 21:37:09 /usr/bin/ps mozhiyan 228 1 cons0 21:32:23 /usr/bin/bash
Arahan yang anda jalankan pada gesaan baris arahan Shell mempunyai proses Shell semasa sebagai proses induk. Contohnya, jika anda memasukkan arahan ls pada gesaan baris arahan Shell, Shell akan melaksanakan arahan ls Pada masa ini, kernel Linux akan menyalin halaman memori Shell dan kemudian melaksanakan arahan ls.
Dalam Unix, setiap proses dicipta menggunakan kaedah fork dan exec. Walau bagaimanapun, pendekatan ini mengakibatkan kehilangan sumber sistem.
Di Linux, kaedah fork dilaksanakan menggunakan halaman memori salin atas tulis, jadi ia hanya menyebabkan kehilangan masa dan memori yang diperlukan untuk menyalin jadual halaman memori proses induk, dan akan mencipta halaman jadual untuk proses kanak-kanak Struktur tugas yang unik.
Mod salin atas tulis mengelak daripada membuat salinan struktur yang tidak perlu semasa membuat proses baharu. Sebagai contoh, jika pengguna mengeluarkan arahan ls pada gesaan baris arahan Shell, kernel Linux akan mencipta proses anak Shell, iaitu proses Shell ialah proses induk dan proses arahan ls ialah proses anak proses arahan akan menghala ke halaman memori yang sama seperti Shell, dan kemudian proses anak menggunakan teknologi salin atas tulis untuk melaksanakan arahan ls.
Status proses
Setiap proses Linux mempunyai kitaran hayatnya sendiri, seperti penciptaan, pelaksanaan, penamatan dan pembersihan. Setiap proses juga mempunyai statusnya sendiri, yang menunjukkan apa yang sedang berlaku dalam proses tersebut. Status proses berubah, termasuk penciptaan proses, penjadualan dan kematian.
Proses boleh mempunyai keadaan berikut:
D (keadaan tidur tidak terganggu) - proses sedang tidur dan tidak boleh disambung semula sehingga peristiwa berlaku.
R (Status berjalan) - Proses sedang berjalan.
S (keadaan tidur) - proses tidak berjalan, tetapi menunggu acara atau isyarat.
T (keadaan berhenti) - Proses dihentikan oleh isyarat, seperti SIGINT atau SIGSTOP.
Z (keadaan Zombie) - Proses yang ditandai 1c32c9935d389823f555cc876149c7b8 adalah proses zombi dan kekal kerana proses induknya memusnahkannya dengan sewajarnya. Jika proses induk keluar, proses ini akan dimusnahkan oleh proses init.
Untuk melihat status proses yang ditentukan, anda boleh menggunakan arahan berikut:
ps -C processName -o pid=,cmd,stat
Contohnya:
$ ps -C sleep -o pid=,cmd,stat CMD STAT 9434 sleep 20 S
Berkaitan cadangan: "Tutorial video Linux》
Atas ialah kandungan terperinci Apakah maksud proses dalam linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!