国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux--epoll

這篇具有很好參考價(jià)值的文章主要介紹了linux--epoll。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

epoll

參考文獻(xiàn)
https://www.cnblogs.com/lojunren/p/3856290.html
https://www.51cto.com/article/717096.html
linux下的I/O復(fù)用epoll詳解
要深刻理解epoll,首先得了解epoll的三大關(guān)鍵要素:mmap、紅黑樹(shù)、鏈表。

IO多路復(fù)用

首先需要了解什么是IO多路復(fù)用
IO多路復(fù)用是一種同步的IO模型。利用IO多路復(fù)用模型,可以實(shí)現(xiàn)一個(gè)線程監(jiān)視多個(gè)文件句柄;一旦某個(gè)文件句柄就緒,就能夠通知到對(duì)應(yīng)應(yīng)用程序進(jìn)行相應(yīng)的讀寫(xiě)操作;沒(méi)有文件句柄就緒時(shí)就會(huì)阻塞應(yīng)用程序,從而釋放出CPU資源。
IO可以理解為,在操作系統(tǒng)中,數(shù)據(jù)在內(nèi)核態(tài)和用戶(hù)態(tài)之間的讀、寫(xiě)操作,大部分情況下是指網(wǎng)絡(luò)IO;
多路大部分情況下是指多個(gè)TCP連接,也就是多個(gè)Socket 或者多個(gè)Channel;
復(fù)用是指復(fù)用一個(gè)或多個(gè)線程資源。IO多路復(fù)用意思就是說(shuō),一個(gè)或多個(gè)線程處理多個(gè) TCP 連接。盡可能地減少系統(tǒng)開(kāi)銷(xiāo),無(wú)需創(chuàng)建和維護(hù)過(guò)多的進(jìn)程/線程。

三種實(shí)現(xiàn)IO多路復(fù)用的模型

分別是Select、poll 和 epoll。下面詳細(xì)介紹一下三種多路復(fù)用模型的基本原理和優(yōu)缺點(diǎn):

select模型

它的基本原理是,采用輪詢(xún)和遍歷的方式。也就是說(shuō),在客戶(hù)端操作服務(wù)器時(shí),會(huì)創(chuàng)建三種文件描述符,簡(jiǎn)稱(chēng)FD。分別是writefds(寫(xiě)描述符)、readfds(讀描述符)和 exceptfds(異常描述符)。
而select會(huì)阻塞監(jiān)視這三種文件描述符,等有數(shù)據(jù)、可讀、可寫(xiě)、出異?;虺瑫r(shí)都會(huì)返回;
返回后通過(guò)遍歷fdset,也就是文件描述符的集合,來(lái)找到就緒的FD,然后,觸發(fā)相應(yīng)的IO操作。
它的優(yōu)點(diǎn)是跨平臺(tái)支持性好,幾乎在所有的平臺(tái)上支持。它的缺點(diǎn)也很明顯,由于select是采用輪詢(xún)的方式進(jìn)行全盤(pán)掃描,因此,隨著FD數(shù)量增多而導(dǎo)致性能下降。
因此,每次調(diào)用select()方法,都需要把FD集合從用戶(hù)態(tài)拷貝到內(nèi)核態(tài),并進(jìn)行遍歷。而操作系統(tǒng)對(duì)單個(gè)進(jìn)程打開(kāi)的FD數(shù)量是有限制的,一般默認(rèn)是1024個(gè)。雖然,可以通過(guò)操作系統(tǒng)的宏定義FD_SETSIZE修改最大FD數(shù)量限制,但是,在IO吞吐量巨大的情況下,效率提升仍然有限。

poll模型

poll 模型的原理與select模型基本一致,也是采用輪詢(xún)加遍歷,唯一的區(qū)別就是 poll 采用鏈表的方式來(lái)存儲(chǔ)FD。
所以,它的優(yōu)點(diǎn)點(diǎn)是沒(méi)有最大FD的數(shù)量限制。
它的缺點(diǎn)和select一樣,也是采用輪詢(xún)方式全盤(pán)掃描,同樣也會(huì)隨著FD數(shù)量增多而導(dǎo)致性能下降。

epoll模型

由于select和poll都會(huì)因?yàn)橥掏铝吭黾佣鴮?dǎo)致性能下降,因此,才出現(xiàn)了epoll模型。
epoll模型是采用時(shí)間通知機(jī)制來(lái)觸發(fā)相關(guān)的IO操作。它沒(méi)有FD個(gè)數(shù)限制,而且從用戶(hù)態(tài)拷貝到內(nèi)核態(tài)只需要一次。它主要通過(guò)系統(tǒng)底層的函數(shù)來(lái)注冊(cè)、激活FD,從而觸發(fā)相關(guān)的 IO 操作,這樣大大提高了性能。
epoll模型最大的優(yōu)點(diǎn)是將輪詢(xún)改成了回調(diào),大大提高了CPU執(zhí)行效率,也不會(huì)隨FD數(shù)量的增加而導(dǎo)致效率下降。當(dāng)然,它也沒(méi)有FD數(shù)量限制,也就是說(shuō),它能支持的FD上限是操作系統(tǒng)的最大文件句柄數(shù)。一般而言,1G 內(nèi)存大概支持 10 萬(wàn)個(gè)句柄。分布式系統(tǒng)中常用的組件如Redis、Nginx都是優(yōu)先采用epoll模型。
它的缺點(diǎn)是只能在Linux下工作。

對(duì)比

linux--epoll,Linux,linux,數(shù)據(jù)庫(kù),sql

epool模型工作原理

主要是通過(guò)調(diào)用以下三個(gè)系統(tǒng)函數(shù)來(lái)注冊(cè)、激活FD,從而觸發(fā)相關(guān)的 IO 操作:
(1)epoll_create()函數(shù),在系統(tǒng)啟動(dòng)時(shí),會(huì)在Linux內(nèi)核里面申請(qǐng)一個(gè)B+樹(shù)結(jié)構(gòu)的文件系統(tǒng),然后,返回epoll對(duì)象,也是一個(gè)FD。
(2)epoll_ctl()函數(shù),每新建一個(gè)連接的時(shí)候,會(huì)同步更新epoll對(duì)象中的FD,并且綁定一個(gè) callback回調(diào)函數(shù)。
linux--epoll,Linux,linux,數(shù)據(jù)庫(kù),sql

(3)epoll_wait()函數(shù),輪詢(xún)所有的callback集合,并觸發(fā)對(duì)應(yīng)的 IO 操作
linux--epoll,Linux,linux,數(shù)據(jù)庫(kù),sql文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-664310.html

到了這里,關(guān)于linux--epoll的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux系統(tǒng)部署SQL Server結(jié)合內(nèi)網(wǎng)穿透實(shí)現(xiàn)公網(wǎng)訪問(wèn)本地?cái)?shù)據(jù)庫(kù)

    Linux系統(tǒng)部署SQL Server結(jié)合內(nèi)網(wǎng)穿透實(shí)現(xiàn)公網(wǎng)訪問(wèn)本地?cái)?shù)據(jù)庫(kù)

    簡(jiǎn)單幾步實(shí)現(xiàn)在Linux centos環(huán)境下安裝部署sql server數(shù)據(jù)庫(kù),并結(jié)合cpolar內(nèi)網(wǎng)穿透工具,創(chuàng)建安全隧道將其映射到公網(wǎng)上,獲取公網(wǎng)地址,實(shí)現(xiàn)在外異地遠(yuǎn)程連接家里/公司的sqlserver數(shù)據(jù)庫(kù),而無(wú)需公網(wǎng)IP,無(wú)需設(shè)置路由器,亦無(wú)需云服務(wù)器。 下載 SQL Server 2022 (16.x) Red Hat 存儲(chǔ)庫(kù)配

    2024年04月10日
    瀏覽(29)
  • Linux centos安裝SQL Server數(shù)據(jù)庫(kù),結(jié)合cpolar內(nèi)網(wǎng)穿透實(shí)現(xiàn)公網(wǎng)訪問(wèn)

    Linux centos安裝SQL Server數(shù)據(jù)庫(kù),結(jié)合cpolar內(nèi)網(wǎng)穿透實(shí)現(xiàn)公網(wǎng)訪問(wèn)

    簡(jiǎn)單幾步實(shí)現(xiàn)在Linux centos環(huán)境下安裝部署sql server數(shù)據(jù)庫(kù),并結(jié)合cpolar內(nèi)網(wǎng)穿透工具,創(chuàng)建安全隧道將其映射到公網(wǎng)上,獲取公網(wǎng)地址,實(shí)現(xiàn)在外異地遠(yuǎn)程連接家里/公司的sqlserver數(shù)據(jù)庫(kù),而無(wú)需公網(wǎng)IP,無(wú)需設(shè)置路由器,亦無(wú)需云服務(wù)器。 下載 SQL Server 2022 (16.x) Red Hat 存儲(chǔ)庫(kù)配

    2024年02月08日
    瀏覽(21)
  • Linux達(dá)夢(mèng)數(shù)據(jù)庫(kù)安裝

    Linux達(dá)夢(mèng)數(shù)據(jù)庫(kù)安裝

    說(shuō)明: 達(dá)夢(mèng)官方推薦是創(chuàng)建新的用戶(hù)進(jìn)行安裝,但是在公司自己私創(chuàng)用戶(hù)是違規(guī)的,也可以直接使用root用戶(hù)進(jìn)行安裝,新用戶(hù)和使用root安裝不同點(diǎn)我會(huì)標(biāo)注出來(lái)。 a、創(chuàng)建用戶(hù)組dinstall. ??groupadd dinstall ?b、創(chuàng)建安裝用戶(hù)dmdba. ??useradd -g dinstall -m -d /home/dmdba -s /bin/bash d

    2024年02月09日
    瀏覽(29)
  • 數(shù)據(jù)庫(kù)定時(shí)備份linux篇

    數(shù)據(jù)庫(kù)定時(shí)備份linux篇

    目錄 1 序言 2 crond 相關(guān)知識(shí)點(diǎn) 2.1 crond 是什么? 2.2 crontab 進(jìn)行定時(shí)任務(wù)設(shè)置 2.2.1 crontab 指令選項(xiàng)說(shuō)明 2.2.2 crontab 指令使用格式 2.2.3 特定時(shí)間執(zhí)行任務(wù)例子 2.2.4 crontab 設(shè)置步驟 3 各個(gè)數(shù)據(jù)庫(kù)備份腳本 3.1 Oracle數(shù)據(jù)庫(kù) 3.2 Mysql數(shù)據(jù)庫(kù) 3.3 postgresql數(shù)據(jù)庫(kù) 3.4 mongoDB數(shù)據(jù)庫(kù) 4 定時(shí)備份數(shù)據(jù)

    2024年02月04日
    瀏覽(21)
  • Linux 使用bash創(chuàng)建MYSQL數(shù)據(jù)庫(kù)并導(dǎo)入數(shù)據(jù)庫(kù)文件

    Linux 使用bash創(chuàng)建MYSQL數(shù)據(jù)庫(kù)并導(dǎo)入數(shù)據(jù)庫(kù)文件

    主要是杠一下的數(shù)據(jù)庫(kù)123-456.sql,這個(gè)神經(jīng)病一樣,試了很多寫(xiě)法

    2024年01月22日
    瀏覽(29)
  • linux環(huán)境安裝mysql數(shù)據(jù)庫(kù)

    linux環(huán)境安裝mysql數(shù)據(jù)庫(kù)

    一:查看是否自帶mariadb數(shù)據(jù)庫(kù) 命令:rpm -qa | grep mariadb 如果自帶數(shù)據(jù)庫(kù)則卸載掉重新安裝 命令:yum remove mariadb-connector-c-3.1.11-2.el8_3.x86_64 二:下載mysql 命令:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 注意:如果出現(xiàn)No such file or directory,運(yùn)行命令:su root 三

    2024年02月15日
    瀏覽(32)
  • Linux下oracle數(shù)據(jù)庫(kù)啟動(dòng)

    Linux下oracle數(shù)據(jù)庫(kù)啟動(dòng)

    1.登錄到Linux服務(wù)器(ssh) 2.切換到oracle用戶(hù)權(quán)限 (命令是: # su –l oracle ) 3.進(jìn)入sqlplus界面(命令是:$ sqlplus /nolog 或 sqlplus / as sysdba) 原本的畫(huà)面會(huì)變?yōu)?SQL 接著請(qǐng)輸入 SQLconn / as sysdba ; 輸入 SQL startup (作用:?jiǎn)?dòng)數(shù)據(jù)庫(kù)實(shí)例) 另外停止數(shù)據(jù)庫(kù)的指令如下: SQL shutdown immediate 回到

    2024年02月10日
    瀏覽(94)
  • Linux 導(dǎo)入MySQL數(shù)據(jù)庫(kù)(四)

    Linux 導(dǎo)入MySQL數(shù)據(jù)庫(kù)(四)

    一、導(dǎo)出數(shù)據(jù)庫(kù)用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑): 1、導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu): 敲回車(chē)后會(huì)提示輸入密碼 PS: 在Linux命令中, 符號(hào)用于將命令的輸出重定向到文件中。在這個(gè)例子中,mysqldump命令將數(shù)據(jù)庫(kù)abc的數(shù)據(jù)和表結(jié)構(gòu)導(dǎo)出到一個(gè)名為abc.sql的文件中。如

    2024年02月09日
    瀏覽(29)
  • linux系統(tǒng)--------------mysql數(shù)據(jù)庫(kù)管理

    linux系統(tǒng)--------------mysql數(shù)據(jù)庫(kù)管理

    目錄 一、SQL語(yǔ)句 1.1SQL語(yǔ)言分類(lèi) 1.2查看數(shù)據(jù)庫(kù)信息? ? 1.3登錄到你想登錄的庫(kù) 1.4查看數(shù)據(jù)庫(kù)中的表信息 1.5顯示數(shù)據(jù)表的結(jié)構(gòu)(字段) 1.5.1數(shù)據(jù)表的結(jié)構(gòu) 1.5.2常用的數(shù)據(jù)類(lèi)型: 二、關(guān)系型數(shù)據(jù)庫(kù)的四種語(yǔ)言 2.1DDL:數(shù)據(jù)定義語(yǔ)言,用于創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,如庫(kù)、表、索引等 2.1.1庫(kù)

    2024年03月24日
    瀏覽(22)
  • linux中安裝ES數(shù)據(jù)庫(kù)

    linux中安裝ES數(shù)據(jù)庫(kù)

    jdk安裝 Elasticsearch 是一個(gè)開(kāi)源的搜索引擎,建立在全文搜索引擎庫(kù) Apache Lucene 基礎(chǔ)之上 用 Java 編寫(xiě)的,它的內(nèi)部使用 Lucene 做索引與搜索,但是它的目的是使全文檢索變得簡(jiǎn)單, 通過(guò)隱藏 Lucene 的復(fù)雜性,取而代之的提供一套簡(jiǎn)單一致的 RESTful API。 Elasticsearch 不僅僅只是一個(gè)

    2023年04月09日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包