Saya mengerti bahwa proses adalah unit kepemilikan sumber daya dan instruksi yang dapat dieksekusi. Utas memungkinkan proses berbagi sumber dayanya dengan beberapa eksekusi, dan lebih mudah bagi OS untuk menjadwalkan utas karena semua overhead terkait dengan seluruh proses.
Tapi mengapa namanya di utarakan ? Apakah ada referensi ke string atau interleaving eksekusi? Meski begitu, ini bukan istilah intuitif menurut saya.
Pernah melihat bagaimana mengalikan benang, memutar, membentuk kabel yang lebih tebal, lebih kuat?
Itulah metaforanya, setiap utas bersifat independen tetapi semua utas bersama-sama berkolaborasi untuk hasil komputasi akhir. Selain itu, seperti pada benang tekstil, benang dapat putus tanpa merusak struktur seluruh kabel.
sumber
tl; dr: Mereka disebut utas karena "utas" adalah metafora yang tepat.
Saat Anda memulai utas, Anda bergantung pada sistem operasi untuk mengalokasikan waktu pemrosesan sehingga utas Anda dapat dijalankan. Saat utas Anda dijalankan, prosesor (atau inti) menaruh semua perhatiannya pada utas Anda. Ketika sistem operasi mengalihkan inti ke utas yang berbeda, utas Anda berhenti dijalankan saat utas lainnya sedang diperbaiki.
Jadi eksekusi melompat-lompat di semua tempat. Tetapi integritas dari set instruksi mesin tetap utuh, terlepas dari lompatan ini, karena kita membangun pagar dan mekanisme konkurensi untuk melindungi keadaannya, dan keadaan objek yang berinteraksi dengannya.
Jadi utas merujuk, bukan pada pelaksanaan instruksi pada utas tertentu, tetapi pada petunjuk yang pada akhirnya akan dieksekusi dalam utas yang telah kami buat. Setiap thread, dengan kata lain, dapat dianggap sebagai mesin atau agen individual (kami menyebutnya proses ringan), tanpa harus memikirkan semua konteks yang dialihkan sistem operasi untuk memberikan kesan bahwa mereka semua mengeksekusi secara bersamaan.
Dengan kata lain, terlepas dari semua lompatan yang dilakukan OS di belakang layar, yang kami sebut utas (urutan operasi yang kami jalankan dalam proses yang ringan) masih dapat dianggap sebagai urutan operasi yang sama, seandainya kami tidak menelurkan utas, dengan asumsi kami telah mengambil perlindungan konkurensi yang diperlukan.
Jika deskripsi ini tampak terlalu berat dan abstrak, maka pikirkan utas di forum, seperti Reddit. Anda dapat membuka diskusi baru; setiap diskusi adalah utasnya sendiri. Anda bisa melompat-lompat di antara utas. Tetapi setiap utas masih mempertahankan integritas strukturalnya sebagai percakapan individu.
sumber
Sulit untuk mengurai (pun sepenuhnya dimaksudkan) sumber dari istilah "Utas" karena berbagai hal mengeruhkan air.
Penggunaan utas dalam forum atau email sense hampir dipastikan berasal dari frasa "utas percakapan" yang menurut tanggal ini sejauh 1593.
Hal-hal tampaknya kurang jelas untuk arti utas yang Anda tanyakan karena menurut tautan ini , utas seperti yang kita ketahui sebenarnya tidak disebut "utas" hingga tahun 70an atau mungkin awal tahun 80an meskipun penerapan proses memori bersama sebenarnya mendahului apa yang kita anggap sebagai proses kelas berat saat ini. Mengingat bahwa bentuk terkait dari multiprocessing memori bersama disebut "serat" Saya sangat curiga bahwa kata "benang" seharusnya mengingatkan kita pada kain tenun atau analogi terkait tekstil lainnya.
sumber
Saya pikir itu ada hubungannya dengan 'utas penalaran' atau 'utas pemikiran'.
Berbeda dengan suatu proses, utas membagikan memori. Jadi jika suatu proses disamakan dengan seseorang dengan pikirannya sendiri (ingatan), sebuah utas dapat disamakan dengan satu garis pemikiran di dalam pikiran itu.
sumber
Saya membaca analogi thread dalam pemrograman. Pikirkan CPU sebagai jarum jahit, dan utas sebagai string yang sebenarnya. Sekarang, jika Anda memiliki beberapa jarum jahit tetapi hanya satu utas. Tidakkah Anda berpikir, itu akan sangat tidak efisien. CPU / jarum jahit lain akan menunggu utasnya tersedia. Namun, jika kita memiliki banyak utas, maka pekerjaan itu dapat diselesaikan dalam waktu singkat.
sumber