Keraguan tentang multithreading dan hyperthreading [ditutup]

-2

Hari ini saya mencoba memahami apa itu multithreading dan hyperthreading. Namun saya memiliki beberapa keraguan tentang itu.

  1. Dalam multithreading, apa yang terjadi ketika dua utas mencoba mengubah lokasi yang sama secara bersamaan?

  2. Apakah thread sepenuhnya konsep sistem operasi dan CPU tidak tahu tentang mereka? Itu melihat mereka sebagai proses?

hyperthreading memungkinkan sistem operasi untuk melihat dua kali lipat jumlah inti logis per inti fisik.

  1. Apakah itu berarti setiap inti fisik menjalankan dua proses secara bersamaan? Atau itu berarti Dua utas secara bersamaan?

Jadi pada dasarnya saya bingung antara proses dan utas jika terjadi hyperthreading. Juga Apa yang terjadi ketika utas dan proses dependen tiba jika multithreading dan hyperthreading?

Raman
sumber
1) Ini tidak dapat terjadi; 2) Tidak; Utas bukan konsep yang dibatasi hanya pada OS; 3) Hyperthreading berarti bahwa satu inti dapat memproses 2 utas, ini berbeda dari CPU yang memiliki banyak inti karena alasan yang jelas.
Ramhound

Jawaban:

3
  1. Akses simultan: Ini adalah pertanyaan yang sangat kompleks . Pada tingkat yang sangat rendah, untuk mengakses lokasi memori individual, perangkat keras merawatnya dengan mungkin memblokir satu utas untuk beberapa siklus jam. Pada tingkat yang lebih tinggi — yang biasanya ditangani oleh seorang programmer — Anda biasanya diharapkan menggunakan kunci, semafor, antrian pesan, memori transaksional, atau mekanisme lain untuk mencegahnya terjadi; atau untuk menggunakan algoritma "bebas kunci" yang dirancang dengan cermat bersama dengan primitif atom. Mendapatkan hak ini adalah sulit .
  2. Lebih atau kurang. Thread juga dapat dianggap sebagai proses yang berbagi ruang alamat virtual mereka. Utas terkadang disebut "proses ringan" karena alasan ini. Tentu saja, sama-sama valid untuk menganggap proses sebagai utas yang memiliki ruang alamat berbeda (dan sumber daya kernel lainnya).
  3. Hyperthreading: CPU modern jauh lebih cepat daripada memori (bahkan memori cache) sehingga mereka menghabiskan sebagian besar waktu menunggu daripada benar-benar memproses. Prosesor Superscalar dapat menjalankan beberapa instruksi sekaligus, tetapi sebagian besar kode memiliki terlalu banyak kemandirian untuk benar-benar memanfaatkan ini. Hyperthreading memungkinkan dua utas dijadwalkan untuk menggunakan sumber daya inti yang sama sehingga, semoga, sumber daya dapat dimanfaatkan sepenuhnya. Terkadang ini bekerja lebih baik daripada hanya menggunakan dua core, kadang tidak
Wim Lewis
sumber
Selain itu: Memprogram aplikasi multiprosesing / berulir memerlukan jenis perhatian yang sama dengan pemrograman aplikasi RTOS (real time OS). Tidak ada keajaiban CPU di dalamnya, hanya pengerjaan dan pengetahuan.
Hannu