操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    1前言

    周末時間過得很快,最近在看一個電視劇《歲歲年年柿柿紅》,那些年代的感觸還是很深的,當年我們家也是那樣的狀態。想不到幾十年就過來了。同是農村過來的可以一起看看。

    這次想說一下互斥鎖,原子操作,主要是上次說的那個賣票的程序,在出票的時候沒有加鎖,很容易造成同時出一張票的問題,在Linux內核里面,信號量和鎖機制非常重要。大家先了解其中的原理,寫代碼和看代碼的時候才游刃有余。

    本想把幾個鎖機制都一次一起寫了,但是周末時間有限,總是沒有一個連貫的時間,先把原子操作整理一下。

    2正文

    原子操作

    為什么有原子操作?

    1、多進程之間對同一個資源操作導致問題

    2、多CPU對同一資源操作導致問題

    什么是原子操作?

    答:所謂的原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷linux 信號量使用,也就是說,它的最小的執行單位,不能有比它更小的執行單元,因此這里的原子實際是使用了物理學里物質微粒的概念。

    舉個栗子:

    1、多線程操作

    正常對一個變量自加需要三步操作

    如果有兩個進程同時對變量i操作的話,可能會出現下面的情況

    進程1執行第一條執行后,進程2開始對i進行操作,這時候進程2執行完了,i的值是1,回到進程1,因為eax寄存器的值是0,自增1后也變成了1,但是我們希望兩次操作得到的是i變成2。這樣問題就出現了。

    如何解決?

    把三條指令變成一條指令,那就可以解決單CPU多進程的搶占問題

    上面三條指令可以變成 inc [i]

    2、多cpu操作

    上面的情況雖然解決了單cpu問題,但是在多cpu上,多個cpu對同一個資源搶占,同樣問出現上面的問題

    舉個栗子:

    看上面的圖片,這樣操作之后,i 還是1,這又出現問題了

    如何解決問題?

    在CPU操作之前,先上鎖Lock,操作完后才釋放鎖,這樣就避免了問題。

    加上lock之后linux 信號量使用,操作就正常了

    我們在寫嵌入式代碼,不只是Linux,在寫其他微處理器,rtos代碼的時候,也會有這樣的問題,嵌入式雖然這些年工資比不上互聯網,但是里面的精髓需要慢慢錘煉的,也希望這一波AI人工智能能把嵌入式的薪水提高一個檔次。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有