apakah konteks dalam linux

青灯夜游
青灯夜游asal
2022-11-10 20:09:221996semak imbas

Dalam Linux, konteks juga dipanggil konteks CPU Ia adalah persekitaran yang CPU mesti bergantung sebelum menjalankan sebarang tugas, termasuk daftar CPU dan pembilang program adalah untuk menukar konteks CPU sebelumnya tugas (iaitu, daftar CPU dan pembilang program) disimpan, kemudian muatkan konteks tugas baharu ke dalam daftar dan pembilang program ini, dan akhirnya lompat ke lokasi baharu yang ditunjukkan oleh pembilang program untuk menjalankan tugas baharu.

apakah konteks dalam linux

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

1.

Linux ialah sistem pengendalian berbilang tugas. Ia menyokong tugasan yang jauh lebih besar daripada bilangan CPU untuk dijalankan pada masa yang sama sebenarnya berjalan pada masa yang sama Sistem memperuntukkan CPU kepada mereka secara bergilir-gilir dalam tempoh masa yang singkat, memberikan pengguna ilusi bahawa banyak tugasan dijalankan pada masa yang sama.

Sebelum setiap tugasan dijalankan, CPU perlu mengetahui di mana tugas itu dimuatkan dan di mana ia mula dijalankan. Dalam erti kata lain, sistem perlu menyediakan daftar CPU dan pembilang program (Kaunter Program, PC) terlebih dahulu Tetapi memori yang sangat pantas

  • Kaunter program: digunakan untuk menyimpan lokasi arahan yang dilaksanakan oleh CPU, atau lokasi arahan seterusnya yang akan dilaksanakan

  • Ringkasnya, kami mempunyai jawapannya

Apakah itu konteks:

Konteks yang biasa kita rujuk juga dipanggil konteks CPU Ia adalah persekitaran yang mesti bergantung kepada CPU hidup sebelum menjalankan sebarang tugas, termasuk daftar CPU dan pembilang program

Penukaran konteks:

Iaitu untuk menyimpan konteks CPU dahulu (iaitu, daftar CPU dan pembilang program ) daripada tugasan sebelumnya, kemudian muatkan konteks tugas baharu ke dalam daftar dan pembilang program ini, dan akhirnya lompat ke lokasi baharu yang ditunjukkan oleh pembilang program dan jalankan tugas baharu.

2 Pengenalan terperinci penukaran konteks

Menurut tugasan pensuisan CPU yang berbeza, ia boleh dibahagikan menjadi ,

,

进程上下文切换线程上下文切换中断上下文切换Mari kita fahami 2 perkara pengetahuan berikut yang terlibat dalam penukaran konteks panggilan sistem , Keadaan berjalan proses

Keadaan berjalan proses:

Linux membahagikan ruang berjalan proses kepada

dan . Keadaan proses yang berjalan dalam dua ruang ini dipanggil

dan 内核空间 masing-masing. 用户空间内核态用户态Ruang kernel (Ring 0): Mempunyai kebenaran tertinggi dan boleh mengakses terus semua sumber (baca fail ,)

  • Mengagihkan memori, operasi IO, mencipta proses anak... semuanya adalah operasi kernel. Ini juga menunjukkan bahawa apabila operasi IO kerap, parameter Sistem akan menjadi sangat tinggi.

    • Ruang pengguna (Ring 3): hanya boleh mengakses sumber terhad, tidak boleh mengakses terus peranti perkakasan seperti memori dan mesti membuat sistem panggilan Hanya dengan memasukkan kernel anda boleh mengakses sumber istimewa ini

  • Atur cara ruang pengguna biasa termasuk: Cangkang, pangkalan data, pelayan web, program PHP, program Java.. .

    • Apabila anda menggunakan arahan atas untuk melihat CPU dalam sistem Linux, anda boleh melihat pengguna dan sistem, yang sepadan dengan mod pengguna dan kernel. Sumber cpu yang diduduki oleh keadaan

  • adalah seperti di atas Perkhidmatan web kami berjalan di bawah

dan tidak mempunyai kebenaran untuk io fail . Apabila fail perlu dibaca, ia Melibatkan panggilan sistem

用户态 panggilan sistem:

Peralihan daripada mod pengguna kepada mod kernel perlu diselesaikan melalui panggilan sistem. Sebagai contoh, apabila melihat fail, berbilang panggilan sistem perlu dilaksanakan: buka, baca, tulis, tutup, dsb. Proses panggilan sistem adalah seperti berikut:

  • Simpan lokasi arahan mod pengguna asal dalam daftar CPU; >

    Untuk melaksanakan kod kernel, daftar CPU perlu dikemas kini ke lokasi baharu arahan mod kernel, dan akhirnya melompat ke mod kernel untuk menjalankan tugas kernel; >
  • Selepas panggilan sistem selesai, daftar CPU perlu memulihkan keadaan pengguna asal yang disimpan, kemudian beralih ke ruang pengguna dan teruskan menjalankan proses

  • Jadi, panggilan sistem Proses sebenarnya melibatkan dua suis konteks CPU.

Proses suis konteks?

Pelaksanaan proses ditamatkan, dan CPU yang digunakan sebelum ini akan dikeluarkan, dan potongan masa menunggu seterusnya akan diambil daripada baris gilir sedia . proses;

  • Oleh kerana proses memerlukan sumber sistem yang agak besar (seperti ingatan tidak mencukupi), proses akan digantung pada masa ini dan sistem akan menjadualkan proses lain untuk pelaksanaan;

  • Apabila proses dengan keutamaan yang lebih tinggi (proses operasi sistem) memerlukan potongan masa, untuk memastikan proses dengan keutamaan yang lebih tinggi boleh dilaksanakan, proses semasa akan digantung ;

  • Jika terdapat fungsi tidur dalam proses semasa, ia juga akan digantung

  • Penukaran konteks urutan?

  • Untuk sistem pengendalian, thread ialah unit pelaksanaan terkecil, dan proses ialah unit pengurusan sumber terkecil

    . Secara terang-terangan, panggilan tugas yang dipanggil dalam kernel sebenarnya dijadualkan oleh utas dan proses itu hanya menyediakan sumber seperti memori maya dan pembolehubah global kepada utas. Oleh itu, untuk adegan dan proses, kita boleh memahaminya dengan cara ini:

Apabila proses hanya mempunyai satu utas, proses itu boleh dianggap sama kepada benang.

Apabila proses mempunyai berbilang utas, utas ini akan berkongsi sumber proses induk (iaitu berkongsi sumber yang sama seperti memori maya dan pembolehubah global). Sumber ini tidak perlu diubah suai semasa penukaran konteks.

  • Selain itu, urutan juga mempunyai data peribadinya sendiri, seperti tindanan dan daftar, yang juga perlu disimpan semasa penukaran konteks.

  • Ringkasnya, terdapat dua situasi penukaran konteks benang:

  • Dua sebelum dan selepas Thread tergolong dalam proses yang berbeza, kerana sumber tidak dikongsi, jadi proses penukaran adalah sama seperti penukaran konteks proses; selepas tergolong dalam proses yang sama, kerana memori maya dikongsi, jadi apabila menukar, sumber seperti memori maya kekal tidak berubah Hanya data peribadi, daftar dan data bukan kongsi lain yang perlu ditukar.

Sampuk suis konteks?

  • Pengendalian gangguan akan mengganggu penjadualan biasa dan pelaksanaan proses. Apabila mengganggu proses lain, keadaan semasa proses perlu disimpan Selepas gangguan tamat, proses masih boleh meneruskan berjalan dari keadaan asalnya.

  • Penukaran konteks gangguan tidak melibatkan mod pengguna proses tersebut. Oleh itu, walaupun proses gangguan mengganggu proses yang berada dalam mod pengguna, tidak perlu menyimpan dan memulihkan sumber mod pengguna seperti memori maya dan pembolehubah global proses ini. Konteks gangguan sebenarnya hanya merangkumi keadaan yang diperlukan untuk pelaksanaan program perkhidmatan gangguan mod kernel, termasuk daftar CPU, tindanan kernel, parameter gangguan perkakasan, dsb.

    Ringkasan

    Menurut laporan ujian Tsuna, setiap suis konteks memerlukan puluhan nanosaat hingga beberapa mikrosaat masa CPU Kali ini Masih cukup mengagumkan .

    Tidak kira senario mana yang menyebabkan penukaran konteks, anda harus tahu:

    • Penukaran konteks CPU, ya Ia adalah satu daripada fungsi teras yang memastikan operasi normal sistem Linux Dalam keadaan biasa, kita tidak perlu memberi perhatian khusus kepadanya.

    • Walau bagaimanapun, penukaran konteks yang berlebihan akan memakan masa CPU dalam menyimpan dan memulihkan data seperti daftar, tindanan kernel dan memori maya, sekali gus memendekkan proses sebenar proses . Masa berjalan menyebabkan prestasi keseluruhan sistem menurun dengan ketara.

    Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci apakah konteks 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