Mengapa utas disebut utas?

9

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.

Mat
sumber

Jawaban:

11

Sudahkah Anda mencari di kamus? Kata utas memiliki arti menjahit terakhir.

3: sesuatu yang terus menerus atau ditarik:

a: garis pemikiran atau rangkaian pemikiran yang menghubungkan bagian-bagian secara berurutan (seperti ide atau peristiwa)

http://www.merriam-webster.com/dictionary/thread

GrandmasterB
sumber
Menarik. Saya telah melakukan pencarian untuk "define thread" tetapi definisi itu bukan salah satunya. Saya senang Anda menyebutkan ini, karena cukup abstrak untuk melintasi jembatan dari penggunaan umum ke pemrograman.
Matt
9

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.

masukkan deskripsi gambar di sini

Tulains Córdova
sumber
2
sementara saya selalu membayangkan "utas" hanya Anda dan GrandmasterB menggambarkannya, tidak yakin tentang keseluruhan "kabel yang dipilin, lebih tebal, lebih kuat". Alih-alih sebagian besar utas dalam OS terlihat seperti ini: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (orang di sebelah kanan akan menjadi pengontrol memori) Ya, beberapa kali beberapa string itu dimaksudkan untuk menyelesaikan masalah umum, tetapi sebagian besar hanya di sana dan OS hanya memungkinkan mereka semua melakukan apa pun yang mereka inginkan (dengan alasan)
DXM
7

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.

Robert Harvey
sumber
4

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.

Evicatos
sumber
3

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.

Alexander Torstling
sumber
1

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.

tangkas
sumber
1
Apakah ada yang salah? Kenapa -1?
Cekatan