2016-07-30 21 views
0

如果我像這樣運行在平行的一些工作:並行在bash

#!/bin/bash 
for i in `seq 1 100`; 
do 
    ./program data$i.txt & 
done 

這意味着我需要100個內核?或者如果我沒有100個內核,某些作業將等待,或者它們都將在較少的內核上運行,那麼多於一個作業將被分配給一個內核?如果我需要100個內核,我應該怎麼做,一次運行10個,而不必從1到10進行for循環,然後運行bash文件10次?

回答

1

操作系統負責進程和線程調度。

或者如果我沒有100個核心部分工作將等待

是的,作業將等待。但它可能不會對你顯而易見。一份工作不會等待另一份工作完成後纔開始。當每個作業正在運行時,操作系統的調度算法可能會中斷正在執行作業的進程並使CPU進入另一個進程。參見:Scheduling

摘錄:

進程調度

的進程調度器是操作系統,其判定該方法在某一時間點運行的一部分。它通常有能力暫停正在運行的進程,將其移動到正在運行的隊列的後面並啓動一個新進程;這樣的調度器被稱爲搶先調度器,否則它是合作調度器。