自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

華為“鴻蒙”所涉及的微內(nèi)核到底是什么?一文帶你認(rèn)識(shí)微內(nèi)核

系統(tǒng)
華為的鴻蒙系統(tǒng)搭載的內(nèi)核和安卓的完全不一樣,安卓使用的是宏內(nèi)核,而華為使用的則是另外一款全新的構(gòu)架微內(nèi)核,這款內(nèi)核將會(huì)讓系統(tǒng)的應(yīng)用程序都單獨(dú)運(yùn)行不會(huì)互相打擾影響,而且其優(yōu)點(diǎn)還不僅于此。而且谷歌也擁有微內(nèi)核新星 Google Fuchisa。

有消息宣稱,華為的鴻蒙系統(tǒng)搭載的內(nèi)核和安卓的完全不一樣,安卓使用的是宏內(nèi)核,而華為使用的則是另外一款全新的構(gòu)架微內(nèi)核,這款內(nèi)核將會(huì)讓系統(tǒng)的應(yīng)用程序都單獨(dú)運(yùn)行不會(huì)互相打擾影響,而且其優(yōu)點(diǎn)還不僅于此。而且谷歌也擁有微內(nèi)核新星 Google Fuchisa。那么,微內(nèi)核究竟是什么呢?這里讓我們一起來(lái)認(rèn)識(shí)下微內(nèi)核吧。

[[269146]]

背景 & 龐大的 UNIX 家族

計(jì)算機(jī)技術(shù)在二戰(zhàn)后快速發(fā)展,構(gòu)成計(jì)算機(jī)的主要基本單元從電子管發(fā)展到分立晶體管,再到后來(lái)的大規(guī)模集成電路。隨著計(jì)算機(jī)技術(shù)發(fā)展,計(jì)算機(jī)性能越來(lái)越強(qiáng)勁,硬件越來(lái)越復(fù)雜,人們發(fā)現(xiàn)很難去直接管理計(jì)算機(jī)了,于是人們開(kāi)始設(shè)計(jì)軟件用于管理越來(lái)越復(fù)雜的計(jì)算機(jī)系統(tǒng),這些軟件稱作系統(tǒng)級(jí)軟件。從最開(kāi)始的批處理系統(tǒng),多道程序系統(tǒng),分時(shí)系統(tǒng)到上世紀(jì) 60 年代開(kāi)始出現(xiàn)通用操作系統(tǒng),計(jì)算機(jī)系統(tǒng)層出不窮,直到上世紀(jì) 70 年代才出現(xiàn)被大家廣泛接受廣泛使用的通用操作系統(tǒng)。其中最經(jīng)典的當(dāng)然就是 UNIX 系統(tǒng)了。

UNIX 系統(tǒng),1971 年誕生于大名鼎鼎的貝爾實(shí)驗(yàn)室的一臺(tái) PDP-11/24 機(jī)器上,其后經(jīng)過(guò)不斷發(fā)展與傳播,在 80 年代取得了巨大成功,UNIX 被移植到眾多的處理器架構(gòu),并在眾多行業(yè)得到廣泛使用,甚至成為行業(yè)標(biāo)準(zhǔn)影響至今。

 

UNIX 以及類 UNIX 系統(tǒng)如 Linux 都是典型的宏內(nèi)核設(shè)計(jì),也就是把所有系統(tǒng)服務(wù)都放到內(nèi)核里,因?yàn)橄到y(tǒng)服務(wù)代碼之間存在大量數(shù)據(jù)交換和大量的服務(wù)請(qǐng)求,而在同一個(gè)代碼段內(nèi)進(jìn)行函數(shù)調(diào)用(C 語(yǔ)言)或跳轉(zhuǎn)(匯編或者機(jī)器碼時(shí)代)是最直接、高效的方法,在同一片地址空間也方便數(shù)據(jù)交換,所以這樣的宏內(nèi)核設(shè)計(jì)是很自然的。

但是隨著 UNIX 內(nèi)核功能的拓展(文件系統(tǒng)、TCP/IP 網(wǎng)絡(luò)協(xié)議棧、進(jìn)程管理、內(nèi)存管理、驅(qū)動(dòng)程序等),UNIX 內(nèi)核代碼也相應(yīng)增加了很多,進(jìn)而在可維護(hù)性.穩(wěn)定性,安全性方面面臨一些挑戰(zhàn)。為了試圖解決這些挑戰(zhàn),人們開(kāi)始嘗試使用微內(nèi)核的思想來(lái)設(shè)計(jì)系統(tǒng)內(nèi)核。

什么是微內(nèi)核

微內(nèi)核設(shè)計(jì)的基本思想是簡(jiǎn)化內(nèi)核功能,在內(nèi)核之外的用戶態(tài)盡可能多地實(shí)現(xiàn)系統(tǒng)服務(wù),同時(shí)加入相互之間的安全保護(hù)。內(nèi)核只提供最基礎(chǔ)的服務(wù),比如多進(jìn)程調(diào)度、多進(jìn)程通信(IPC)等。其中進(jìn)程通信是作為連接應(yīng)用與用戶態(tài)系統(tǒng)服務(wù)的橋梁。

下圖是宏內(nèi)核與微內(nèi)核的對(duì)比示意圖:

 

宏內(nèi)核系統(tǒng)相關(guān)的服務(wù)基本都是放于內(nèi)核態(tài)內(nèi)核中,例如文件系統(tǒng)、設(shè)備驅(qū)動(dòng)、虛擬內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧等;而微內(nèi)核則把更多的系統(tǒng)服務(wù)(例如文件系統(tǒng)、POSIX 服務(wù)、網(wǎng)絡(luò)協(xié)議棧甚至外設(shè)驅(qū)動(dòng))放到用戶態(tài)應(yīng)用,形成一個(gè)個(gè)服務(wù),等待其他應(yīng)用的請(qǐng)求。而后來(lái),為了在宏內(nèi)核與微內(nèi)核之間揚(yáng)長(zhǎng)避短,也發(fā)展出了中間的混合內(nèi)核的形態(tài),部分服務(wù)也會(huì)放置于內(nèi)核中。

微內(nèi)核的發(fā)展歷史

微內(nèi)核這個(gè)概念從提出開(kāi)始就在不斷地發(fā)展、完善進(jìn)步之中,到目前為止可以分為三代。

第一代微內(nèi)核:從無(wú)到有

第一代微內(nèi)核的主要代表是 Mach,該系統(tǒng)由卡內(nèi)基-梅隆大學(xué)的 Avie Tevanian和Richard Rashid 主導(dǎo)開(kāi)發(fā)。在 Mach 剛剛開(kāi)始設(shè)計(jì)時(shí),UNIX 的發(fā)展正如日中天,所以 Mach 在設(shè)計(jì)時(shí)的一大目標(biāo)就是兼容 UNIX,但是與 UNIX 不同的是 Mach 嘗試使用微內(nèi)核架構(gòu)去設(shè)計(jì)。Mach 以 IPC 是作為所有系統(tǒng)服務(wù)與內(nèi)核交換數(shù)據(jù)的基礎(chǔ)機(jī)制,充分運(yùn)用 IPC、虛擬內(nèi)存、多進(jìn)程等特性將冗余的系統(tǒng)服務(wù)移出內(nèi)核作為進(jìn)程運(yùn)行。

1986 年,經(jīng)過(guò)兩年的開(kāi)發(fā),第一版的 Mach 發(fā)布后的第二年,Mach 就發(fā)布了第 2 版,不過(guò)由于時(shí)間倉(cāng)促,加之沒(méi)有足夠的人手與資金,所以此時(shí) Mach 內(nèi)核并不提供完全的系統(tǒng)服務(wù)。為了支撐系統(tǒng)上層運(yùn)行,這一版的內(nèi)核包含了大量 4.3 版本的 BSD 系統(tǒng)(UNIX 的一個(gè)分支)代碼提供系統(tǒng)服務(wù),并且 BSD 系統(tǒng)服務(wù)運(yùn)行在內(nèi)核狀態(tài),這導(dǎo)致 Mach 內(nèi)核的代碼體積甚至大于常規(guī) UNIX 內(nèi)核。

第一版和第二版的 Mach 主要做了如下工作:1.驗(yàn)證了微內(nèi)核的可行性;2.在多處理器計(jì)算機(jī)上進(jìn)行移植驗(yàn)證了微內(nèi)核在多處理器計(jì)算機(jī)上的運(yùn)行;3.最后為了提高 IPC 的效率,Mach 使用共享內(nèi)存機(jī)制來(lái)完成 IPC。而 Mach 的共享內(nèi)存機(jī)制是在虛擬內(nèi)存技術(shù)的支持下實(shí)現(xiàn)的,只有需要對(duì)內(nèi)存進(jìn)行寫入時(shí)才進(jìn)行復(fù)制。這么一處理比每次都復(fù)制一遍內(nèi)存節(jié)省了內(nèi)存使用同時(shí)又加快了 IPC 機(jī)制的處理時(shí)間,這個(gè)改進(jìn)稱為寫時(shí)復(fù)制,并且在如今的通用操作系統(tǒng)如 Linux 中常常用到。

經(jīng)過(guò)測(cè)試,Mach 2.5 的效率最多比 UNIX 少 25%,但是考慮到 Mach 帶來(lái)的可靠性、可拓展性、安全性,這個(gè)效率損失尚可以接受。當(dāng)然此時(shí) Mach 內(nèi)核還不算完全的微內(nèi)核。而考慮到微內(nèi)核可以更高效地利用多處理器計(jì)算機(jī)的處理器核心資源,人們期待著等 Mach 把系統(tǒng)服務(wù)都搬到內(nèi)核之外后可以把運(yùn)行效率損失降下來(lái)。同時(shí) Mach 在微內(nèi)核方面小小的嘗試迅速吸引了大批公司與組織的注意,開(kāi)放軟件基金會(huì)(Open Software Foundation, OSF)宣布下一代系統(tǒng) OSF/1 將基于 Mach 的內(nèi)核, NeXTSTEP 也將使用 Mach2.5, 甚至IBM也打算利用 Mach 構(gòu)建 Workplace OS。蘋果公司這個(gè)時(shí)候也出手了,蘋果公司也從此基于 Mach2.5 打造其操作系統(tǒng)內(nèi)核 XNU,XNU 的構(gòu)成如下圖所示,Mach 作為內(nèi)核的內(nèi)環(huán),外環(huán)右側(cè)是蘋果的驅(qū)動(dòng)框架(I/O Kit),外環(huán)左側(cè)是 BSD 的系統(tǒng)服務(wù)代碼提供 UNIX 兼容的服務(wù)層,這三者共同協(xié)作向上層提供完整的系統(tǒng)服務(wù)。XNU 廣泛地使用在蘋果公司的 OSX,IOS 等系統(tǒng)中。

 

這個(gè)時(shí)候由于 UNIX 系統(tǒng)廣泛使用帶來(lái)的商業(yè)利益,此時(shí) BSD 系統(tǒng)開(kāi)發(fā)者與 UNIX 的擁有者 AT&T 陷入了法律大戰(zhàn),Mach 使用的 BSD 相關(guān)代碼有了法律風(fēng)險(xiǎn)。提升性能的期望和規(guī)避法律風(fēng)險(xiǎn)的需求推動(dòng)著 Mach 3.0 的開(kāi)發(fā),Mach 3.0 的開(kāi)發(fā)目標(biāo)主要是為了替換 BSD 系統(tǒng)服務(wù),同時(shí)盡量多地將系統(tǒng)服務(wù)放到內(nèi)核之外去運(yùn)行,成為名副其實(shí)的微內(nèi)核設(shè)計(jì)。經(jīng)過(guò)眾多開(kāi)發(fā)者 3 年的努力,Mach 3.0 于 1990 年發(fā)布,但是由于在系統(tǒng)服務(wù)之間完全使用 IPC 通信,而不是向宏內(nèi)核那樣直接進(jìn)行函數(shù)調(diào)用,即便是多處理器機(jī)器上運(yùn)行也性能損失慘重,Mach 3.0 最多比 UNIX 損失 67% 運(yùn)行效率,這導(dǎo)致 Mach 3.0 以及其所代表的第一代微內(nèi)核設(shè)計(jì)被看衰。此后斷斷續(xù)續(xù)有在 Mach 的基礎(chǔ)上對(duì)性能進(jìn)行提升的嘗試,但是均不太理想,至此 Mach 成為了微內(nèi)核第一代先驅(qū)者。

第二代微內(nèi)核:解決性能問(wèn)題

第二代微內(nèi)核的主要代表是 L3 和 L4,以及 QNX 系統(tǒng)使用的 Neutrino 內(nèi)核。前面第一代的微內(nèi)核 Mach 由于效率問(wèn)題雖然失敗了,但是微內(nèi)核的理念并沒(méi)有被放棄,德國(guó)的計(jì)算機(jī)科學(xué)家 Jochen Liedtke 認(rèn)為 Mach 的 IPC 效率低下的原因就是因?yàn)? IPC 部分不夠精簡(jiǎn),于是他開(kāi)發(fā)了 L3 和 L4 微內(nèi)核,對(duì) IPC 部分進(jìn)行了很徹底的精簡(jiǎn):1. 內(nèi)核的 IPC 機(jī)制只是單純地傳遞信息,諸如安全權(quán)限檢查這類的代碼都省略掉,省略掉的功能全部由用戶進(jìn)程自己處理。如此一來(lái) IPC 功能部分的代碼執(zhí)行時(shí)間大大縮短;2. IPC 不使用內(nèi)存?zhèn)鬟f消息,而使用寄存器傳遞消息,同時(shí)限制 IPC 每次傳遞的信息長(zhǎng)度,這樣省去了對(duì)內(nèi)存的訪問(wèn)時(shí)間。L4 微內(nèi)核的 IPC 速度經(jīng)過(guò)測(cè)試要比 Mach 快 20 倍,這個(gè)令人驚訝的優(yōu)化效果吸引了眾多的目光,使微內(nèi)核的研究重新火熱起來(lái)。后面 L4 內(nèi)核又發(fā)展出了很多相關(guān)系統(tǒng),比如 Pistachio,L4/MIPS,與 Fiasco 等等,這些內(nèi)核組成了 L4 的大家族。

 

第二代微內(nèi)核的代表除了有 L4 內(nèi)核,也還有其他微內(nèi)核比如 Exokernel、Rambler 等,不過(guò)商業(yè)上最成功的則是目前黑莓公司旗下的 QNX 系統(tǒng)所使用的 Neutrino 內(nèi)核(QNX,1980 年誕生,最初以 QUICK UNIX 為名,后改為 QNX;2004 年 QNX 被 Harman 國(guó)際收購(gòu);2010 年 Harman 國(guó)際下被黑莓收購(gòu),QNX 成為黑莓旗下的資產(chǎn)),QNX 主要為高可靠領(lǐng)域提供解決方案,比如交通、能源、醫(yī)療、航天航空等。

 

第三代微內(nèi)核:主要重視安全問(wèn)題等

在前面兩代的基礎(chǔ)上,第三代微內(nèi)核蓬勃發(fā)展,許許多多微內(nèi)核都被開(kāi)發(fā)出來(lái),主要代表有:seL4、Fiasco.OC、NOVA 等。 本來(lái)第一代微內(nèi)核的設(shè)計(jì)隔離了使內(nèi)核安全性降低的系統(tǒng)服務(wù),讓系統(tǒng)服務(wù)漏洞不會(huì)影響內(nèi)核,進(jìn)而提高了內(nèi)核安全性,可以說(shuō)是關(guān)上了破壞系統(tǒng)的門, 但是第二代系統(tǒng)卻又給攻擊者開(kāi)了個(gè)窗戶;由于第二代微內(nèi)核在內(nèi)核中省去了關(guān)于安全性檢查等步驟,把所有關(guān)于安全檢查功能的實(shí)現(xiàn)都交給系統(tǒng)服務(wù)自己去實(shí)現(xiàn),這導(dǎo)致系統(tǒng)服務(wù)的通信接口直接暴露給用戶態(tài),任何進(jìn)程都可能無(wú)限制地請(qǐng)求系統(tǒng)服務(wù),系統(tǒng)服務(wù)不得不花費(fèi)額外的代價(jià)來(lái)區(qū)分請(qǐng)求是否合法,容易造成拒絕服務(wù)攻擊。比如正常的文件服務(wù)應(yīng)該是從虛擬文件系統(tǒng)服務(wù)->文件系統(tǒng)服務(wù)->磁盤驅(qū)動(dòng)服務(wù)這個(gè)流程來(lái)完成的,但是如果攻擊者如果繞過(guò)虛擬文件系統(tǒng)服務(wù),直接無(wú)限制地請(qǐng)求攻擊者本身沒(méi)有權(quán)限訪問(wèn)的文件系統(tǒng)服務(wù),使文件系統(tǒng)服務(wù)長(zhǎng)期處于滿載狀態(tài),讓其他進(jìn)程無(wú)法通過(guò)正常的虛擬文件系統(tǒng)得到文件系統(tǒng)服務(wù)。為了增強(qiáng)安全性,且不過(guò)分影響性能,人們開(kāi)始研發(fā)第三代微內(nèi)核。

seL4 是在第二代內(nèi)核 L4 的基礎(chǔ)上發(fā)展而來(lái)的。seL4 不僅僅繼承了 L4 內(nèi)核家族的高性能特性,還具備基于端點(diǎn)(enndpoint)的 IPC 機(jī)制。這種 IPC 機(jī)制最大的特點(diǎn)是使用了能力空間的概念,進(jìn)程在使用 IPC 請(qǐng)求系統(tǒng)服務(wù)時(shí)必須具備相對(duì)應(yīng)的能力,進(jìn)程持有不可偽造的令牌來(lái)表示擁有請(qǐng)求某種服務(wù)的能力。令牌可以被復(fù)制,可以被轉(zhuǎn)移,還可以通過(guò) IPC 進(jìn)行傳輸。令牌其實(shí)是一個(gè)指向存在于內(nèi)核空間內(nèi)核對(duì)象的指針,所以普通進(jìn)程并不能修改自身以及其他進(jìn)程的權(quán)限分配,但是內(nèi)核可以對(duì)令牌指定的權(quán)限進(jìn)行控制,從而保證了用戶態(tài)不能繞過(guò)能力空間這個(gè)機(jī)制對(duì)系統(tǒng)服務(wù)造成濫用。

seL4 還是第一個(gè)完全通過(guò)形式化驗(yàn)證的內(nèi)核,通俗說(shuō)形式化驗(yàn)證就是在數(shù)學(xué)軟件的幫助下使用數(shù)學(xué)語(yǔ)言自動(dòng)化地推導(dǎo)檢查系統(tǒng)的每一個(gè)運(yùn)行狀態(tài)。seL4 形式化驗(yàn)證相關(guān)論文。

其他的微內(nèi)核系統(tǒng):Fuchsia,Minix

Fuchsia 是 Google 開(kāi)發(fā)的一款全新操作系統(tǒng),試圖覆蓋手機(jī)、平板甚至筆記本等一系列領(lǐng)域。Google 為該系統(tǒng)配備了 Vulkan 圖形接口、3D 桌面渲染 Scenic、Flutter 應(yīng)用開(kāi)發(fā)框架,還有一個(gè)稱為 zircon 的微內(nèi)核。zircon 內(nèi)核是從高通平臺(tái)的一個(gè) Bootloader 項(xiàng)目:Little Kernel 發(fā)展而來(lái)。zircon 內(nèi)核屬于微內(nèi)核設(shè)計(jì),只提供 IPC,進(jìn)程管理,地址空間管理功能。zircon 區(qū)別于以進(jìn)程或者以文件為核心的設(shè)計(jì),zircon 是以內(nèi)存為核心來(lái)設(shè)計(jì)的,內(nèi)存在 zircon 中是以對(duì)象的方式存在,可以通過(guò) channel 通信機(jī)制傳遞虛擬內(nèi)存對(duì)象(Virtual memory object)的句柄,進(jìn)程拿到句柄后可以把這塊內(nèi)存映射到自己的空間。

Minix 系統(tǒng)則由荷蘭阿姆斯特丹的 Vrije 大學(xué)的Andrew S.Tanenbaum 教授所開(kāi)發(fā)。該系統(tǒng)最大的特點(diǎn)是可以故障隔離,自動(dòng)重啟失敗的服務(wù)。Minix 使用分層設(shè)計(jì),最底層的微內(nèi)核提供中斷處理、進(jìn)程管理、進(jìn)程通信等服務(wù),這一層運(yùn)行在內(nèi)核態(tài);中間層提供輪回服務(wù)(Reincarnation Server)、文件服務(wù)、進(jìn)程管理、X圖形服務(wù)以及驅(qū)動(dòng)等,這一層運(yùn)行在用戶態(tài);最上層為用戶進(jìn)程。其中輪回服務(wù)負(fù)責(zé)在中間層的服務(wù)出現(xiàn)崩潰時(shí)重啟這些服務(wù),從而保證服務(wù)的自我修復(fù)。Minix 由于其自我修復(fù)特性被英特爾管理引擎(ME)所選用,該管理引擎主要負(fù)責(zé)管理英特爾芯片的內(nèi)部模塊。

微內(nèi)核的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 系統(tǒng)服務(wù)模塊化,可移植性高;
  • 內(nèi)核安全性提高(模塊內(nèi)部的 bug 不影響內(nèi)核穩(wěn)定,將黑客利用軟件漏洞造成的破壞限制在單個(gè)模塊內(nèi)部);
  • 可以多套系統(tǒng)服務(wù)共存,相當(dāng)于同時(shí)運(yùn)行多種操作系統(tǒng);
  • 穩(wěn)定統(tǒng)一的接口(可以獨(dú)立維護(hù)私有驅(qū)動(dòng)以及服務(wù),不需要跟內(nèi)核源碼綁定);
  • 在商業(yè)上,微內(nèi)核可以避免代碼受到一些開(kāi)源協(xié)議的影響,比如 GPL 協(xié)議;
  • 內(nèi)核精簡(jiǎn),可以進(jìn)行形式化驗(yàn)正,利用數(shù)學(xué)證明內(nèi)核的安全性;
  • 數(shù)學(xué)可證明的實(shí)時(shí)性;
  • 非常適合多處理器系統(tǒng)設(shè)計(jì),在多處理器核心計(jì)算機(jī)上,互相依賴的系統(tǒng)服務(wù)可以同時(shí)運(yùn)行;

缺點(diǎn)

  • 通過(guò)進(jìn)程通信的方式交換數(shù)據(jù)或者調(diào)用系統(tǒng)服務(wù),而不是使用系統(tǒng)調(diào)用,造成額外的操作系統(tǒng)開(kāi)銷;
  • 使用一些頻繁使用的系統(tǒng)服務(wù)時(shí),比如網(wǎng)絡(luò)收發(fā)數(shù)據(jù),造成的進(jìn)程上下文切換對(duì)操作系統(tǒng)來(lái)說(shuō)也是一個(gè)負(fù)擔(dān);
  • 由于系統(tǒng)服務(wù)高度模塊化,系統(tǒng)服務(wù)之間存在大量的內(nèi)存復(fù)制;
  • 對(duì)互相之間存在復(fù)雜調(diào)用關(guān)系的系統(tǒng)服務(wù),難以設(shè)計(jì)通信接口;
  • 系統(tǒng)服務(wù)與內(nèi)核在地址空間上分離,造成代碼局部性差,降低了 cache 命中率。

 

責(zé)任編輯:武曉燕 來(lái)源: 與非網(wǎng)
相關(guān)推薦

2020-12-30 09:05:24

架構(gòu)微內(nèi)核系統(tǒng)

2021-01-18 13:05:52

Serverless Serverfull FaaS

2020-10-27 10:26:03

編程開(kāi)發(fā)Java

2019-12-04 13:50:07

CookieSessionToken

2024-05-22 09:45:49

2021-01-22 15:21:51

微信更新表情

2020-12-28 08:51:06

操作系統(tǒng)微內(nèi)核Dubbo

2023-03-29 15:21:18

2022-09-30 15:09:20

云計(jì)算邊緣計(jì)算邊緣云

2020-12-08 11:17:41

微內(nèi)核架構(gòu)設(shè)計(jì)

2017-10-30 12:14:20

云計(jì)算云平臺(tái)云服務(wù)

2024-11-26 08:31:36

2021-05-18 09:48:58

前端開(kāi)發(fā)架構(gòu)

2020-03-05 10:28:19

MySQLMRR磁盤讀

2022-10-08 00:00:00

Spring數(shù)據(jù)庫(kù)項(xiàng)目

2023-03-27 09:08:11

Linux

2020-10-14 06:22:14

UWB技術(shù)感知

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2020-09-27 06:53:57

MavenCDNwrapper
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)