Seperti yang telah saya jelaskan dalam artikel tentang menukar benang, ia juga penting untuk kembali kepada topik ini perubahan konteks Tetapi digunakan untuk proses kali ini. Dengan cara ini, anda akan mempunyai maklumat yang hilang untuk memahami cara CPU dan sistem pengendalian berfungsi seiring apabila anda menjalankan perisian berbilang tugas.
Apakah proses?

Dalam pengkomputeran, satu proses Proses ialah contoh program atau perisian yang sedang berjalan. Ia boleh dianggap sebagai entiti aktif yang melaksanakan satu siri arahan berurutan, mengakses sumber sistem dan berkomunikasi dengan proses lain. Sesuatu proses mempunyai ruang memori sendiri yang diperuntukkan, termasuk kod program, data, timbunan pelaksanaan dan pembolehubah.
Setiap proses Ia dicipta dan diuruskan oleh sistem pengendalian, yang memperuntukkan sumber seperti memori, masa CPU, fail terbuka dan peranti input/output. Sistem pengendalian juga bertanggungjawab untuk menjadualkan dan menyelaraskan pelaksanaan proses, memastikan penggunaan sumber yang ada dengan cekap.
Setiap proses boleh mempunyai keadaan sendiri, yang boleh aktif (berjalan), menunggu (disekat oleh acara), digantung (berhenti sementara), atau ditamatkan (diberhentikan). Proses boleh berkomunikasi antara satu sama lain melalui mekanisme seperti komunikasi antara proses (IPC), yang membolehkan pertukaran data dan penyegerakan antara proses.
Apakah CPI?
IPC (Komunikasi Antara Proses) Ia adalah satu set mekanisme dan teknik yang digunakan oleh proses dalam sistem pengendalian untuk berkomunikasi dan berkongsi maklumat antara satu sama lain. IPC membenarkan proses untuk berkomunikasi dan bekerjasama, sama ada pada komputer yang sama atau merentasi komputer berbeza yang disambungkan oleh rangkaian.
CPI adalah penting untuk pengaturcaraan serentak dan penciptaan aplikasi yang memerlukan interaksi dan penyegerakan antara pelbagai proses. Ia menyediakan cara untuk pertukaran data, penyegerakan aktiviti, dan penyelarasan tugas antara proses.
Terdapat mekanisme CPI berbeza yang tersedia, termasuk:
- Barisan beratur mesej: membenarkan penghantaran dan penerimaan mesej antara proses menggunakan baris gilir yang dikongsi.
- Memori yang dikongsi: Ia membenarkan berbilang proses untuk mengakses kawasan memori biasa, membolehkan mereka menukar data dengan cepat dan cekap.
- Soket: Mereka menyediakan antara muka rangkaian untuk komunikasi antara proses pada mesin yang berbeza melalui TCP/IP atau protokol rangkaian lain.
- Paip: Mereka membenarkan komunikasi sehala antara proses, di mana output satu proses dialihkan sebagai input kepada proses yang lain.
- Penyegerakan: Mekanisme penyegerakan, seperti semaphore, mutex, dan pembolehubah keadaan, digunakan untuk menyelaraskan akses kepada sumber yang dikongsi dan mengelakkan keadaan perlumbaan antara proses.
Pilihan mekanisme IPC bergantung pada keperluan khusus aplikasi dan persekitaran di mana proses berjalan. Setiap mekanisme mempunyai kelebihan dan batasan tersendiri dari segi prestasi, kerumitan dan keselamatan.
IPC memainkan peranan asas dalam pengaturcaraan serentak dan pembinaan sistem teragih, kerana ia membolehkan komunikasi dan kerjasama antara proses, memudahkan pembangunan aplikasi yang kompleks dan penggunaan sumber sistem yang cekap.
Apakah PCB?
Dalam konteks proses, PCB (Blok Kawalan Proses) merujuk kepada struktur data yang digunakan oleh sistem pengendalian untuk mengekalkan maklumat penting tentang proses yang sedang berjalan. Ia juga dikenali sebagai Blok Kawalan Proses.
PCB dicipta oleh sistem operasi apabila proses baru dicipta dan disimpan dalam ingatan utama. Ia mengandungi maklumat penting tentang status dan pentadbiran proses, membolehkan sistem pengendalian mengawal dan mengurus pelaksanaannya dengan betul.
Beberapa data yang disimpan pada PCB mungkin termasuk:
- Pengenalpastian proses: pengecam unik untuk proses, seperti nombor atau nama proses.
- Status proses: Menunjukkan sama ada proses sedang berjalan, menunggu, sedia untuk dijalankan, digantung atau ditamatkan.
- Maklumat pengurusan ingatan: saiz memori yang diperuntukkan kepada proses, alamat asas, had memori, jadual halaman, dsb.
- Maklumat pengurusan sumber: senarai fail yang dibuka oleh proses, kebenaran akses, deskriptor fail, dsb.
- Maklumat perancang: keutamaan proses, masa CPU yang digunakan, penjadualan dan peruntukan sumber, antara lain.
- Kawalan maklumat: Memproses data konteks, seperti daftar CPU, penuding tindanan, pembilang program, daftar status, dsb.
PCB sentiasa dikemas kini oleh sistem pengendalian apabila proses berubah keadaan atau suis konteks berlaku. Apabila proses digantung atau ditukar kepada proses lain, sistem pengendalian menyimpan keadaan semasa proses ke PCBnya dan memuatkan keadaan proses seterusnya untuk dilaksanakan.
PCB adalah penting untuk pengurusan proses yang cekap sistem pengendalian, membolehkan kawalan dan penyelarasan sumber CPU dan penjadualan yang betul. Setiap kali operasi suis konteks dilakukan, sistem pengendalian merujuk kepada PCB yang sepadan untuk mendapatkan maklumat yang diperlukan tentang proses berjalan.
Perbezaan antara proses dan benang
The benang dan proses Benang adalah dua konsep penting dalam bidang pengaturcaraan dan pelaksanaan program dalam sistem pengendalian. Berikut adalah beberapa perbezaan utama antara benang dan proses:
- Konteks pelaksanaanSesuatu proses mempunyai konteks pelaksanaan bebasnya sendiri, yang termasuk ruang ingatannya sendiri, daftar CPU, ID proses, fail terbuka dan sumber lain. Thread, sebaliknya, berkongsi konteks pelaksanaan yang sama dalam proses. Mereka berkongsi ruang memori yang sama, membuka fail dan sumber lain sebagai proses induk.
- Penciptaan dan kemusnahanProses dicipta oleh panggilan sistem pengendalian dan mempunyai kitaran hayat bebas mereka sendiri. Mereka boleh dicipta dan dimusnahkan secara bebas, bermakna menamatkan satu proses tidak menjejaskan proses berjalan yang lain. Benang, sebaliknya, dicipta dalam proses sedia ada. Sesuatu proses boleh mempunyai berbilang benang, dan penciptaan dan pemusnahan benang dilakukan dalam konteks proses induk.
- Komunikasi dan penyegerakanProses biasanya berkomunikasi dan menyegerakkan menggunakan mekanisme komunikasi antara proses (IPC), seperti paip, baris gilir mesej atau memori dikongsi. Benang, berkongsi ruang memori yang sama, boleh berkomunikasi dan menyegerak secara langsung menggunakan pembolehubah kongsi atau kunci pengecualian bersama.
- Prestasi dan kecekapan: Oleh kerana benang berkongsi sumber dan mempunyai kos penciptaan dan pemusnahan yang lebih rendah daripada proses, pertukaran antara benang dalam proses biasanya lebih pantas dan lebih cekap daripada bertukar antara proses. Ini menjadikan urutan sesuai untuk tugasan serentak dan selari yang boleh mendapat manfaat daripada pemprosesan serentak dan perkongsian sumber.
- Perlindungan SumberBenang berkongsi ruang memori dan sumber yang sama dalam proses, yang bermaksud mereka mesti berhati-hati apabila mengakses dan mengubah suai sumber dikongsi yang sama. Penyegerakan yang betul diperlukan untuk mengelakkan keadaan perlumbaan dan memastikan konsistensi data yang dikongsi. Sebaliknya, proses mempunyai ruang dan sumber ingatan sendiri, menjadikannya lebih bebas dan kurang terdedah kepada konflik sumber.
Perbezaan antara penukaran konteks proses dan penukaran konteks benang
| Suis konteks benang | Proses perubahan konteks |
|---|---|
| TCS berlaku apabila CPU menyimpan keadaan semasa utas dan beralih ke utas lain dalam proses yang sama. | PCS berlaku apabila penjadual sistem pengendalian menyimpan keadaan semasa program berjalan (termasuk keadaan PCB) dan beralih kepada program lain. |
| TCS membantu CPU mengendalikan berbilang benang secara serentak. | PCS melibatkan memuatkan keadaan program baharu untuk dilaksanakan. |
| TCS tidak melibatkan menukar ruang alamat memori. Semua alamat memori yang alamat pemproses kekal disimpan. | PCS melibatkan pertukaran ruang alamat memori. Semua alamat memori yang dikira oleh pemproses dikosongkan. |
| Cache pemproses dan penimbal carian terjemahan mengekalkan keadaannya. | Cache pemproses dan TLB disiram. |
| Walaupun TCS melibatkan menukar daftar dan penuding tindanan, ia tidak melibatkan kos menukar ruang alamat. Oleh itu, ia lebih cekap. | PCS melibatkan kos yang tinggi untuk menukar ruang alamat. Oleh itu, ia kurang cekap. |
| TCS lebih pantas dan murah sedikit. | PCS agak perlahan dan lebih mahal. |
Dalam proses berbenang tunggal, benang itu sendiri mewakili keseluruhan proses. Walau bagaimanapun, dalam proses berbilang benang, bertukar antara benang yang berbeza diperlukan untuk pelaksanaan program:
- Perubahan benangPenukaran benang melibatkan pertukaran dari satu benang ke benang lain dalam proses yang sama. Jenis penukaran konteks ini sangat cekap dan menjimatkan, kerana ia hanya melibatkan penukaran identiti dan sumber tertentu, seperti pembilang program, daftar dan penuding tindanan. Kos pertukaran dari satu thread ke thread yang lain hampir sama dengan kos masuk dan keluar kernel.
- Perubahan prosesPenukaran proses melibatkan peralihan dari satu proses ke proses yang lain. Dalam kes ini, semua sumber yang berkaitan dengan proses semasa mesti ditukar dengan sumber yang diperlukan oleh proses baharu. Ini melibatkan menukar ruang alamat memori, termasuk alamat memori, jadual halaman dan sumber kernel, serta cache pemproses.
Cara melaksanakan suis konteks
Mari lihat bagaimana untuk menukar konteks dalam sistem komputer, dan untuk berbuat demikian, kita perlu memahami beberapa konsep terlebih dahulu:
Walaupun penukaran konteks mengambil beratus-ratus nanosaat pada pemproses yang lebih lama, ia hanya memerlukan beberapa ns pada pemproses yang lebih baharu. Kesan suis konteks bergantung pada pemproses dan boleh diukur dalam kitaran jam, dalam julat ratusan dalam beberapa kes dan bahkan lebih seribu dalam yang lain. Perlu diingat bahawa penukaran konteks memerlukan kos tambahan disebabkan oleh pembilasan TLB (Terjemahan Lookaside Buffer), perkongsian cache antara berbilang tugas dan pelaksanaan penjadual tugas, antara lain. Pertukaran konteks antara dua utas dalam proses yang sama adalah lebih pantas daripada antara dua proses berbeza, kerana utas berkongsi peta memori maya yang sama. Oleh sebab itu, pembilasan TLB tidak diperlukan…
Apakah penukaran konteks?
El suis konteks, ialah proses menyimpan keadaan proses untuk pemulihan dan penyambungan kemudian, dan kemudian memuatkan keadaan berbeza yang disimpan sebelum ini. Ini membolehkan berbilang proses untuk berkongsi unit pemprosesan pusat (CPU) tunggal dan merupakan ciri asas sistem pengendalian berbilang pengaturcaraan atau berbilang tugas. Dalam sistem CPU tradisional, setiap proses berjalan menggunakan daftar CPU untuk menyimpan data dan mengekalkan keadaan semasanya. Walau bagaimanapun, dalam sistem berbilang tugas, sistem pengendalian bertukar antara proses atau utas untuk membolehkan berbilang proses dilaksanakan secara serentak. Pada setiap suis, sistem pengendalian mesti menyimpan keadaan proses yang sedang berjalan dan kemudian memuatkan keadaan proses seterusnya untuk dilaksanakan pada CPU. Urutan operasi yang melibatkan keadaan proses menyimpan dan memuatkan ini dikenali sebagai penukaran konteks.
Kos Penukaran Konteks: Kesan terhadap Prestasi
Konteks sering bertukar memerlukan sejumlah besar sumber perkakasan, dan kebanyakan reka bentuk sistem pengendalian tertumpu pada pengoptimuman penggunaannya. Beralih daripada satu proses ke proses yang lain melibatkan melaksanakan pelbagai tugas pentadbiran, seperti menyimpan dan memuatkan daftar dan peta ingatan, mengemas kini jadual dan senarai, dan banyak lagi. Sifat sebenar suis konteks bergantung pada seni bina sistem, sistem pengendalian dan jumlah sumber yang dikongsi. Benang yang tergolong dalam proses yang sama berkongsi banyak sumber, tidak seperti proses yang tidak berkaitan yang tidak bekerjasama antara satu sama lain.
Sebagai contoh, dalam kernel linuxSuis konteks melibatkan pemuatan blok kawalan proses (PCB) yang sepadan yang disimpan dalam jadual PCB ke tindanan kernel untuk mendapatkan maklumat tentang keadaan proses baharu. Data keadaan CPU seperti daftar, penuding tindanan dan pembilang program dimuatkan, serta maklumat pengurusan memori seperti jadual pembahagian dan jadual halaman (melainkan proses lama berkongsi memori dengan yang baharu). Untuk mengelakkan ralat terjemahan alamat sekiranya proses lama dan semasa menggunakan ruang memori yang berbeza, penimbal lookaside terjemahan (TLB) mesti dibuang. Ini memberi kesan negatif kepada prestasi, kerana selepas kebanyakan suis konteks, semua rujukan memori dalam TLB hilang, kerana ia menjadi kosong.
Tambahan pula, suis konteks yang serupa berlaku antara benang pengguna, terutamanya dalam benang hijau, dan biasanya sangat ringan, menjimatkan dan memulihkan hanya konteks minimum. Dalam kes yang melampau, seperti bertukar antara coroutine dalam Go, suis konteks adalah setara dengan prestasi coroutine dan hanya lebih mahal sedikit daripada panggilan subrutin.
Ringkasan proses
The langkah yang terlibat dalam perubahan konteks adalah seperti berikut:
- Simpan konteks proses yang sedang berjalan pada CPU. Kemas kini blok kawalan proses dan medan penting lain.
- Alihkan blok kawalan proses sebelumnya ke baris gilir yang sepadan, seperti baris gilir sedia, baris gilir I/O, dsb.
- Pilih proses baharu untuk dijalankan.
- Kemas kini blok kawalan proses yang dipilih. Ini termasuk mengemas kini status proses kepada "berjalan."
- Kemas kini struktur data pengurusan memori seperti yang diperlukan.
- Pulihkan konteks proses yang dilaksanakan sebelum ini apabila ia dimuatkan semula ke dalam pemproses. Ini dilakukan dengan memuatkan nilai sebelumnya dari blok kawalan proses dan daftar.
Sebagai contoh, dalam kes linux khususnya, yang merupakan sistem yang paling saya ketahui, ialah:
- Proses semasa yang berjalan pada CPU mencapai titik di mana ia mesti diganggu, atau peristiwa berlaku yang memerlukan suis konteks, seperti panggilan sistem atau gangguan perkakasan.
- Kernel sistem pengendalian menyimpan keadaan proses semasa, termasuk daftar CPU, penuding tindanan dan pembilang program, dalam blok kawalan prosesnya (PCB). Ini dilakukan untuk mengekalkan keadaan proses dan membolehkannya disambung semula kemudian.
- Kernel memilih proses seterusnya untuk dijalankan, sama ada dari baris gilir sedia atau mengikut algoritma penjadualan. PCB proses yang baru dipilih dikemas kini, menetapkan statusnya kepada berjalan.
- Tugas yang diperlukan dilakukan untuk menyediakan persekitaran proses baharu, seperti memuatkan daftar CPU dan penuding tindanan dengan nilai yang disimpan pada PCBnya.
- Kernel mengemas kini struktur memori, seperti jadual pembahagian dan jadual halaman, untuk proses baharu.
- Akhirnya, konteks proses baharu dipulihkan, dan ia diberikan CPU untuk dilaksanakan. Proses menyambung semula pelaksanaan dari tempat ia berhenti sebelum ini.
Perlu diingat bahawa contoh ini adalah penyederhanaan proses sebenar yang berlaku dalam suis konteks Linux. Pada hakikatnya, terdapat lebih banyak tugas dan pertimbangan yang terlibat, seperti mengurus peranti I/O dan sumber sistem lain. Tambahan pula, kernel Linux melaksanakan pelbagai dasar penjadualan yang menentukan cara proses dipilih untuk pelaksanaan dan cara masa CPU diagihkan di kalangan mereka.
Saya harap ini telah membantu, bersama-sama dengan artikel menukar benang… Jika anda berminat dengan tutorial ini, anda boleh lihat lebih lanjut di sini.