Dapatkah prosesor multi-core menjalankan banyak proses pada saat yang bersamaan?

9

Saya mengerti bahwa prosesor multi-core dapat menjalankan banyak utas dari proses yang sama pada saat yang sama menggunakan inti yang berbeda.
Bisakah itu juga menjalankan banyak proses pada saat yang sama (masing-masing inti menjalankan proses yang berbeda)?

NimsDotNet
sumber

Jawaban:

14

Sejauh menyangkut sistem operasi dan aplikasi, masing-masing inti adalah prosesor yang terpisah dan tunduk pada aturan afinitas yang sama dengan memiliki beberapa prosesor.

Prosesor mana (baik itu nyata, inti atau hipertread) proses yang berjalan tergantung sepenuhnya pada sistem penjadwalan sistem operasi. Ini adalah sistem penjadwalan ini (dipengaruhi oleh pengaturan afinitas ) yang memutuskan di mana proses harus dijalankan dan kapan. Proses dan utas dapat beralih di antara prosesor dan inti sesuka hati sesuai keinginan penjadwal.

Majenko
sumber
7

Dari pengetahuan saya yang terbatas tentang sistem operasi, saya percaya bahwa setiap proses memiliki setidaknya satu utas, dan utas inilah yang dijadwalkan, bukan proses itu sendiri. Proses ini hanya menyimpan informasi tentang program dan utas yang telah ditetapkan berjalan. Dengan cara ini aplikasi berulir tunggal mendapatkan perlakuan yang sama dengan aplikasi multithreaded, tetapi aplikasi multithreaded dapat menggunakan sumber daya dengan lebih baik.

Sebagai contoh mari kita asumsikan kita memiliki dua proses dengan masing-masing dua utas dan satu aplikasi ulir, semuanya bekerja keras pada prosesor dual core (atau CPU ganda, tidak ada bedanya di sini)

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

Setiap utas dapat dijadwalkan di semua inti CPU dan beban diseimbangkan oleh penjadwal OS.

Jika kita kemudian pergi dan mengatur afinitas prosesor untuk Proses B untuk membatasi itu ke satu CPU maka semua utas proses itu terikat ke CPU itu juga dan tidak akan berjalan pada CPU lain. Melakukan hal yang sama pada Proses C tidak akan menghasilkan perubahan nyata karena hanya dapat berjalan pada satu CPU pada satu waktu.

Mokubai
sumber
2

Jawaban singkat:

  1. Ya, asalkan OS mendukungnya.
  2. Saat ini semua OS mendukungnya.

Proses dan utas (seperti dalam multi-threading) adalah konstruksi tingkat OS. Setelah Anda mendapatkan level yang cukup rendah dalam penjadwalan ini menghilang dan Anda hanya memiliki banyak utas eksekusi antrian untuk mendapatkan waktu eksekusi.

Tuan Alpha
sumber