欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > 詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式

詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式

熱門標(biāo)簽:長(zhǎng)沙開福怎么申請(qǐng)400電話 江蘇電銷外呼防封系統(tǒng)是什么 廣州電銷機(jī)器人系統(tǒng)圖 高德地圖標(biāo)注無營(yíng)業(yè)執(zhí)照 百度地圖標(biāo)注要不要錢 東莞人工智能電銷機(jī)器人供應(yīng)商 賀州市地圖標(biāo)注app 金融行業(yè)外呼線路 智能電話機(jī)器人線路

Linux 用戶態(tài)和內(nèi)核態(tài)由于 CPU 權(quán)限的限制,通信并不像想象中的使用進(jìn)程間通信方式那么簡(jiǎn)單,今天這篇文章就來看看 Linux 用戶態(tài)和內(nèi)核態(tài)究竟有哪些通信方式。

我們平常在寫代碼時(shí),一般是在用戶空間,通過系統(tǒng)調(diào)用函數(shù)來訪問內(nèi)核空間,這是最常用的一種用戶態(tài)和內(nèi)核態(tài)通信的方式。(關(guān)于 Linux 用戶態(tài)和內(nèi)核態(tài)可以參考 xx)

除此之外,還有以下四種方式:

  • procfs(/proc)
  • sysctl(/proc/sys)
  • sysfs(/sys)
  • netlink 套接口

procfs(/proc)

procfs 是 進(jìn)程文件系統(tǒng) 的縮寫,它本質(zhì)上是一個(gè)偽文件系統(tǒng),為什么說是 偽 文件系統(tǒng)呢?因?yàn)樗徽加猛獠看鎯?chǔ)空間,只是占用少量的內(nèi)存,通常是掛載在 /proc 目錄下。

我們?cè)谠撃夸浵驴吹降囊粋€(gè)文件,實(shí)際上是一個(gè)內(nèi)核變量。內(nèi)核就是通過這個(gè)目錄,以文件的形式展現(xiàn)自己的內(nèi)部信息,相當(dāng)于 /proc 目錄為用戶態(tài)和內(nèi)核態(tài)之間的交互搭建了一個(gè)橋梁,用戶態(tài)讀寫 /proc 下的文件,就是讀寫內(nèi)核相關(guān)的配置參數(shù)。

比如常見的 /proc/cpuinfo/proc/meminfo/proc/net 就分別提供了 CPU、內(nèi)存、網(wǎng)絡(luò)的相關(guān)參數(shù)。除此之外,還有很多的參數(shù),如下所示:

root@ubuntu:~# ls /proc/
1   1143 1345 1447 2   2292 29  331  393 44  63  70  76  acpi    diskstats  irq     locks     sched_debug  sysvipc      zoneinfo
10  1145 1357 148  20  23  290 332  396 442  64  7019 77  asound   dma     kallsyms   mdstat    schedstat   thread-self
1042 1149 1361 149  2084 2425 291 34  398 45  65  7029 8  buddyinfo driver    kcore    meminfo    scsi      timer_list
1044 1150 1363 15  2087 25  3  3455 413 46  66  7079 83  bus    execdomains keys     misc     self      timer_stats
1046 1151 1371 16  2090 256  30  35  418 47  6600 7080 884 cgroups  fb      key-users  modules    slabinfo    tty
1048 1153 1372 17  21  26  302 36  419 5   67  71  9  cmdline  filesystems kmsg     mounts    softirqs    uptime
11  1190 1390 18  22  27  31  37  420 518  6749 72  96  consoles  fs      kpagecgroup mtrr     stat      version
1126 12  143  182  2214 28  32  373  421 524  68  73  97  cpuinfo  interrupts  kpagecount  net      swaps     version_signature
1137 1252 1434 184  2215 280  327 38  422 525  69  74  98  crypto   iomem    kpageflags  pagetypeinfo sys      vmallocinfo
1141 13  144  190  2262 281  33  39  425 5940 7   75  985 devices  ioports   loadavg   partitions  sysrq-trigger vmstat

可以看到,這里面有很多的數(shù)字表示的文件,這些其實(shí)是當(dāng)前系統(tǒng)運(yùn)行的進(jìn)程文件,數(shù)字表示進(jìn)程號(hào)(PID),每個(gè)文件包含該進(jìn)程所有的配置信息,包括進(jìn)程狀態(tài)、文件描述符、內(nèi)存映射等等,我們可以看下:

root@ubuntu:~# ls /proc/1/
attr/      cmdline     environ     io        mem       ns/       pagemap     schedstat    stat       timers
autogroup    comm       exe       limits      mountinfo    numa_maps    personality   sessionid    statm      uid_map
auxv       coredump_filter fd/       loginuid     mounts      oom_adj     projid_map    setgroups    status      wchan
cgroup      cpuset      fdinfo/     map_files/    mountstats    oom_score    root/      smaps      syscall     
clear_refs    cwd/       gid_map     maps       net/       oom_score_adj  sched      stack      task/

綜上,內(nèi)核通過一個(gè)個(gè)的文件來暴露自己的系統(tǒng)配置信息,這些文件,有些是只讀的,有些是可寫的,有些是動(dòng)態(tài)變化的,比如進(jìn)程文件,當(dāng)應(yīng)用程序讀取某個(gè) /proc/ 文件時(shí),內(nèi)核才會(huì)去注冊(cè)這個(gè)文件,然后再調(diào)用一組內(nèi)核函數(shù)來處理,將相應(yīng)的內(nèi)核參數(shù)拷貝到用戶態(tài)空間,這樣用戶讀這個(gè)文件就可以獲取到內(nèi)核的信息。一個(gè)大概的圖示如下所示:

sysctl

我們熟悉的 sysctl 是一個(gè) Linux 命令,man sysctl 可以看到它的功能和用法。它主要是被用來修改內(nèi)核的運(yùn)行時(shí)參數(shù),換句話說,它可以在內(nèi)核運(yùn)行過程中,動(dòng)態(tài)修改內(nèi)核參數(shù)。

它本質(zhì)上還是用到了文件的讀寫操作,來完成用戶態(tài)和內(nèi)核態(tài)的通信。它使用的是 /proc 的一個(gè)子目錄 /proc/sys。和 procfs 的區(qū)別在于:

procfs 主要是輸出只讀數(shù)據(jù),而 sysctl 輸出的大部分信息是可寫的。

例如,我們比較常見的是通過 cat /proc/sys/net/ipv4/ip_forward 來獲取內(nèi)核網(wǎng)絡(luò)層是否允許轉(zhuǎn)發(fā) IP 數(shù)據(jù)包,通過 echo 1 > /proc/sys/net/ipv4/ip_forward 或者 sysctl -w net.ipv4.ip_forward=1 來設(shè)置內(nèi)核網(wǎng)絡(luò)層允許轉(zhuǎn)發(fā) IP 數(shù)據(jù)包。

同樣的操作,Linux 也提供了文件 /etc/sysctl.conf 來讓你進(jìn)行批量修改。

sysfs

sysfs 是 Linux 2.6 才引入的一種虛擬文件系統(tǒng),它的做法也是通過文件 /sys 來完成用戶態(tài)和內(nèi)核的通信。和 procfs 不同的是,sysfs 是將一些原本在 procfs 中的,關(guān)于設(shè)備和驅(qū)動(dòng)的部分,獨(dú)立出來,以 “設(shè)備樹” 的形式呈現(xiàn)給用戶。

sysfs 不僅可以從內(nèi)核空間讀取設(shè)備和驅(qū)動(dòng)程序的信息,也可以對(duì)設(shè)備和驅(qū)動(dòng)進(jìn)行配置。

我們看下 /sys 下有什么:

# ls /sys
block bus class dev devices firmware fs hypervisor kernel module power

可以看到這些文件基本上都跟計(jì)算機(jī)的設(shè)備和驅(qū)動(dòng)等息息相關(guān)的。更多關(guān)于這些文件的解釋大家可以自行了解,這里就不過多展開了。

netlink

netlink 是 Linux 用戶態(tài)與內(nèi)核態(tài)通信最常用的一種方式。Linux kernel 2.6.14 版本才開始支持。它本質(zhì)上是一種 socket,常規(guī) socket 使用的標(biāo)準(zhǔn) API,在它身上同樣適用。比如創(chuàng)建一個(gè) netlink socket,可以調(diào)用如下的 socket 函數(shù):

#include <asm/types.h>
#include <sys/socket.h>
#include <linux/netlink.h>

netlink_socket = socket(AF_NETLINK, socket_type, netlink_family);

netlink 這種靈活的方式,使得它可以用于內(nèi)核與多種用戶進(jìn)程之間的消息傳遞系統(tǒng),比如路由子系統(tǒng),防火墻(Netfilter),ipsec 安全策略等等。

引申:

net-tools 工具通過 procfs(/proc) 和 ioctl 系統(tǒng)調(diào)用去訪問和改變內(nèi)核網(wǎng)絡(luò)參數(shù)配置,而 iproute2 則通過 netlink 套接字接口與內(nèi)核通信,前者已經(jīng)被淘汰了,后者逐步成為標(biāo)準(zhǔn)。

總結(jié)

Linux 用戶態(tài)和內(nèi)核態(tài)通信主要的四種方式,其中 netlink 和 procfs 是最常見的方式。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:永州 松原 廊坊 滄州 玉樹 北京 洛陽(yáng) 張家界

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式》,本文關(guān)鍵詞  詳解,Linux,用戶,態(tài),與,內(nèi)核,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    99久久综合狠狠综合久久| 欧美性色aⅴ视频一区日韩精品| 欧美一级一级性生活免费录像| 一区二区三区产品免费精品久久75| 成人免费黄色大片| 国产精品三区在线观看| 国产精品区一区二区三区| 国产黄色精品视频| 五月天免费网站| 国产目拍亚洲精品99久久精品| 国产一区二区三区香蕉| 婷婷丁香综合网| 中文字幕欧美国产| 成人精品视频一区二区三区尤物| 欧美手机在线观看| 日韩美女视频一区二区| 91亚洲永久精品| 欧美日韩一区成人| 婷婷国产在线综合| 久久精品国产亚洲AV熟女| 久久综合国产精品| 国产真实乱对白精彩久久| 日本一级片免费| 亚洲欧洲另类国产综合| 被黑人猛躁10次高潮视频| 欧美日韩日本视频| 日本aⅴ免费视频一区二区三区 | 欧美做受高潮6| 久久免费的精品国产v∧| 国产成人综合网站| 色天天综合色天天久久| 亚洲一区二区四区蜜桃| 亚洲视频天天射| 精品日产卡一卡二卡麻豆| 国产综合久久久久影院| √天堂中文官网8在线| 亚洲黄色av一区| www国产视频| 久久综合狠狠综合久久激情| 成人黄色av电影| 欧美日韩不卡在线| 美脚の诱脚舐め脚责91| 成人免费精品动漫网站| 一区二区在线观看免费| 亚洲黄色在线网站| 日本一区二区高清| 亚洲欧美激情一区二区三区| 日韩欧美精品在线| 岛国精品一区二区| 欧美精品日韩一区| 国产一区二区精品久久| 欧美综合一区二区| 麻豆精品视频在线观看免费| 麻豆天美蜜桃91| 日韩电影免费在线看| 登山的目的在线| 亚洲国产一区二区a毛片| 亚洲天堂岛国片| 亚洲另类中文字| 五月婷婷综合在线观看| 国产精品久久久久婷婷| 五十路六十路七十路熟婆| 国产视频亚洲色图| 无码人妻精品一区二区三| 久久精品无码一区二区三区| 91丨国产丨九色丨pron| 精品福利一二区| 久久发布国产伦子伦精品| 久久综合色之久久综合| 91视频在线观看| 久久一区二区三区国产精品| 91碰在线视频| 国产亚洲综合av| 在线xxxxx| 中文字幕一区av| 六月婷婷七月丁香| 一区二区不卡在线播放 | 国产成人a级片| 欧美一区二区视频在线观看2022| 高清日韩电视剧大全免费| 8x福利精品第一导航| 成人一区二区三区在线观看| 欧美成人三级在线| 少妇熟女视频一区二区三区| 国产精品欧美精品| 熟女少妇内射日韩亚洲| 午夜精品免费在线| 69av视频在线| 国产精品亚洲午夜一区二区三区| 欧美一级淫片007| 91蝌蚪porny九色| 国产精品免费视频一区| 亚洲精品国产91| 视频一区二区中文字幕| 欧美调教femdomvk| www.久久久久久久久| 久久精品一区二区三区不卡牛牛 | 一区二区三区在线视频观看58| 免费成人深夜天涯网站| 日韩有码一区二区三区| 欧美色图免费看| 9色porny自拍视频一区二区| 中文字幕久久午夜不卡| www..com.cn蕾丝视频在线观看免费版| 亚洲成人动漫在线免费观看| 91国偷自产一区二区三区观看| 国产传媒久久文化传媒| 久久久久久影视| 一级黄色片大全| 男男成人高潮片免费网站| 欧美一区二区日韩一区二区| 超碰人人cao| 亚洲美女区一区| 国产这里有精品| 成人激情av网| 国产精品久久综合| 久久国产高清视频| 国产九色精品成人porny | 久久久国产精品午夜一区ai换脸| 少妇精品一区二区三区| 日韩成人精品在线观看| 91精品国产乱| 人妻无码一区二区三区| 日韩av网站在线观看| 6080亚洲精品一区二区| bl动漫在线观看| 日韩精品乱码免费| 日韩女优毛片在线| 熟女高潮一区二区三区| 久久精品国产一区二区三| 精品国精品国产| 国产视频不卡在线| 国产精一品亚洲二区在线视频| 国产亚洲精品中文字幕| 日本成人免费在线观看| 国产91精品免费| 亚洲婷婷在线视频| 欧美影视一区二区三区| 少妇搡bbbb搡bbb搡打电话| 天天综合日日夜夜精品| 欧美成人高清电影在线| avhd101老司机| 国产成人av网站| 亚洲视频一区二区在线| 欧美色电影在线| 六十路息与子猛烈交尾| 另类小说一区二区三区| 久久久久久久久97黄色工厂| 婷婷激情四射网| 91麻豆精品在线观看| 午夜视频一区二区三区| 精品久久久久一区二区国产| 国产三级在线观看完整版| 成人免费视频网站在线观看| 亚洲男同性恋视频| 宅男噜噜噜66一区二区66| 天天躁日日躁aaaa视频| 国产精品911| 亚洲精品国久久99热| 欧美一区二区三区日韩视频| 影音先锋男人在线| av中文字幕在线不卡| 午夜欧美电影在线观看| 久久综合久色欧美综合狠狠| 好吊色视频在线观看| 欧类av怡春院| 国产激情视频一区二区在线观看| 亚洲男同1069视频| 精品少妇一区二区三区免费观看 | 国产精品每日更新| 欧美视频自拍偷拍| 亚洲精品国产一区黑色丝袜| 成人精品视频网站| 午夜激情综合网| 国产午夜三级一区二区三| 在线免费不卡视频| 人妻大战黑人白浆狂泄| 成人免费视频视频在线观看免费| 午夜视频在线观看一区二区| 国产亚洲精品aa| 欧美日韩精品免费| 性少妇xx生活| 永久免费未满蜜桃| 国产不卡一区视频| 三级成人在线视频| 成人欧美一区二区三区黑人麻豆| 91精品一区二区三区在线观看| 秋霞欧美一区二区三区视频免费| 巨乳女教师的诱惑| 国产精品综合一区二区| 亚洲国产日韩av| 国产精品视频九色porn| 日韩一区二区三区高清免费看看| 久久久久久视频| 黑人巨大精品欧美| 久久黄色一级视频| 国产精品1区二区.| 日本欧美加勒比视频| 亚洲免费观看高清完整版在线观看熊 | 国产精品素人一区二区|