隨想錄(在x86 linux上模擬多核cpu運行),x86linux

來源:互聯網
上載者:User

隨想錄(在x86 linux上模擬多核cpu運行),x86linux


【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】


    搞過嵌入式開發的朋友都知道無論在實際環境還是在fpga上調試代碼是一件非常辛苦,同時吃力不討好的事情。一方面晶片的片上資源少,另外一方面就是除了軟體之外你還要處理各種意外的硬體事故。好一點的公司可能還會提供虛擬機器來調試,但很多時候虛擬機器的穩定性也是一個問題。搞過skyeye的朋友應該比較有體會。


    其實,如果調試驅動代碼或者cpu boot代碼,那麼毫無疑問應該在實際環境上開發。但是如果開發的代碼只是c的內容,其實在x86上模擬就可以了。x86的調試環境極其穩定,而且支援的功能也很多,另外x86對單核、多核的支援也是非常的好,這是很多開發板無法比擬的。


    打個比方,在實際環境上調試多核是一件很累的事情。但是在x86上,尤其是多核x86上,你只需要起兩個thread,分別綁定到不同的cpu就可以了。就是這麼簡單。下面給出一份簡單的linux thread綁定代碼。編譯的方法是gcc start.c -g -o start -lpthread即可。原來的代碼地址在這。

#define _GNU_SOURCE#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>#define handle_error_en(en, msg) \      do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)intmain(int argc, char *argv[]){    int s, j;    cpu_set_t cpuset;    pthread_t thread;    thread = pthread_self();    /* Set affinity mask to include CPUs 0 to 4 */    CPU_ZERO(&cpuset);    for (j = 0; j < 4; j++)        CPU_SET(j, &cpuset);    s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);    if (s != 0)        handle_error_en(s, "pthread_setaffinity_np");    /* Check the actual affinity mask assigned to the thread */    s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset);    if (s != 0)        handle_error_en(s, "pthread_getaffinity_np");    printf("Set returned by pthread_getaffinity_np() contained:\n");    for (j = 0; j < CPU_SETSIZE; j++)        if (CPU_ISSET(j, &cpuset))            printf("    CPU %d\n", j);    exit(EXIT_SUCCESS);}

    怎麼看有沒有綁定成功呢?你可以添加一段while(1); 代碼。然後輸入top命令,按下1,看看對應的cpu有沒有使用率達到100%就可以了。





linux單進程怎實現多核cpu多線程分配?

"程式本身不可修改,現在的問題就是如何將此程式多線程化以達到效果"

---- 如果不能修改程式本身,怎麼變成多線程程式??? 樓主還是先去搞搞清楚進程、線程的基本概念吧。
 
想玩Linux系統,問雙核與單核CPU在該系統下運行優缺點在哪 ?怎取捨 ?

核心多少跟作業系統有什麼關係?
現在是個作業系統就支援多核心的。一般都是至少支援 4-8 個。
你要是有台多路伺服器還可以說說,單核雙核有什麼可比較的?
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.