成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

內核系統調用的實現和互斥機制

系統
操作系統本質上是對底層的資源進行管理并封裝了底層的能力,對上層提供服務。這種服務好比是實現了一個排序算法,但是是否使用多線程,這個是由上層決定的,內核本身不會在底層實現多線程排序這種能力。

[[403398]]

本文轉載自微信公眾號「編程雜技」,作者theanarkh。轉載本文請聯系編程雜技公眾號。

有感于最近在知乎看到了兩個問題,分享一下對內核系統調用的實現和互斥機制的認識。

下面是這兩個問題:

https://www.zhihu.com/question/462048846/answer/1919407185

https://www.zhihu.com/question/460985657/answer/1912146181

系統調用的實現

兩個問題分別是問了TCP/IP協議和epoll的實現中,內核是否使用了多線程。這個問題的角度挺有意思的,內核雖然在內部使用進程/線程實現了某些功能(比如pdflush線程定時回寫硬盤、kswapd進程周期回收內存、處理工作隊列的線程)。但是系統調用的實現中,是不涉及多線程的概念的。

操作系統本質上是對底層的資源進行管理并封裝了底層的能力,對上層提供服務。這種服務好比是實現了一個排序算法,但是是否使用多線程,這個是由上層決定的,內核本身不會在底層實現多線程排序這種能力。

互斥機制

但是因為在多核的情況下,多個CPU上會執行多個線程,如果多個線程同時請求內核訪問同一個內核數據結構,那么就會引起競態情況。所以內核需要實現訪問資源的互斥機制。這樣才能保證多個CPU中同時只有一個CPU會操作共享的數據結構。比如自旋鎖,保證多個CPU只有其中一個CPU拿到這個鎖,然后操作共享的數據。另外,內核還實現了原子操作,比如內核里提供的atomic原子操作,可以對整形變量進行原子性操作,其具體實現原理根據CPU架構而不同,比如i386 CPU提供了Lock指令,保證同時只有一個CPU可以鎖住總線,對內存進行互斥訪問,下面是i386原子操作的實現。

  1. static __inline__ void atomic_add(int i, atomic_t *v) 
  2.   __asm__ __volatile__( 
  3.     LOCK "addl %1,%0" 
  4.     // 輸出到v->counter所在內存 
  5.     :"=m" (v->counter) 
  6.     // %1和0%對應下面兩個值,i是整形,隨便存到一個寄存器,m表示表示從v->counter的內存讀取 
  7.     :"ir" (i), "m" (v->counter)); 

如果單核的情況下,非搶占式的則不需要這種機制,因為在執行系統調用的時候,進程調度器是不會調度其他進程執行的,這就保證了系統調用的原子性。如果在搶占式模式下并且支持在執行系統調用時被搶占,那么還是需要互斥和原子機制的,總而言之,存在競態情況的,都需要保證共享數據的互斥訪問。

 

內核實現的功能雖然沒有使用多線程,但是通常底層是多核,上層是使用多進程/多線程的,所以內核為了保證互斥訪問共享數據,需要實現一些原子操作和互斥機制。

 

責任編輯:武曉燕 來源: 編程雜技
相關推薦

2011-01-14 13:50:37

2024-07-25 11:53:53

2021-03-15 15:18:16

鴻蒙HarmonyOS應用

2009-10-29 09:41:01

Linux內核DeviceMappe

2022-04-11 08:42:09

TypeScript子類型定義

2024-12-27 09:46:10

2021-01-29 13:29:53

系統調用

2016-09-20 15:21:35

LinuxInnoDBMysql

2019-04-10 13:43:19

Linux內核進程負載

2023-12-15 15:55:24

Linux線程同步

2020-12-28 08:51:06

操作系統微內核Dubbo

2021-10-25 09:53:52

鴻蒙HarmonyOS應用

2024-06-28 08:45:58

2021-05-10 08:30:59

CentosUbutun運維

2017-08-16 16:20:01

Linux內核態搶占用戶態搶占

2015-03-26 13:14:53

javascriptjs callback實現調用

2024-01-09 09:40:23

2025-05-20 05:53:07

DubboSPI機制

2020-09-04 10:14:02

Linux驅動7內核

2009-06-19 20:32:00

Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区在线观看 | 午夜影晥| 成人在线免费视频 | 成人av一区 | 亚洲成人免费av | 91原创视频 | 免费在线观看av网站 | 中文一区二区视频 | 午夜黄色影院 | 天天做日日做 | 日日干日日操 | 日韩精品一二三区 | 91电影在线播放 | 国产成人免费视频网站视频社区 | 伊人网在线看 | 日韩在线播放第一页 | 国产精品视频一二三区 | 超碰97免费观看 | 国产精品一区二区精品 | a级毛片毛片免费观看久潮喷 | 91精品国产手机 | 色爱综合网 | 黄在线免费观看 | 色.com| 色妹子综合网 | 一级免费在线视频 | 欧美精品一区二区在线观看 | 亚洲日本中文 | 91精品国产综合久久福利软件 | 91在线成人 | 视频在线观看亚洲 | 国产一区二区精品自拍 | 亚洲午夜在线 | 成人在线视频看看 | 中文字幕久久精品 | 午夜寂寞影院列表 | 国产婷婷综合 | 国产精品一区二区三区久久 | 久久av.com| 久久尤物免费一区二区三区 | 日韩欧美在线一区 |