Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah maksud proses dalam linux?

Apakah maksud proses dalam linux?

青灯夜游
青灯夜游asal
2021-11-30 16:19:144627semak imbas

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.

Apakah maksud proses dalam linux?

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!

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