<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微內(nèi)核是什么?宏內(nèi)核是什么?一文帶你了解操作系統(tǒng)內(nèi)核架構(gòu)

          共 5960字,需瀏覽 12分鐘

           ·

          2021-08-20 01:31


          導(dǎo)讀:近年來(lái),我國(guó)自主研發(fā)操作系統(tǒng)被反復(fù)提及。近期,一個(gè)計(jì)算機(jī)領(lǐng)域內(nèi)非常專業(yè)的詞來(lái)到了幾乎所有人的視線內(nèi),這就是——微內(nèi)核。人們對(duì)操作系統(tǒng)內(nèi)核的討論越來(lái)越熱烈,甚至有人說(shuō)我不懂什么叫微內(nèi)核,什么是宏內(nèi)核,接下來(lái)本文將帶領(lǐng)大家了解操作系統(tǒng)內(nèi)核架構(gòu),微內(nèi)核與宏內(nèi)核到底孰優(yōu)孰劣?


          作者:陳海波 夏虞斌 等

          來(lái)源:華章計(jì)算機(jī)(ID:hzbook_jsj)



          隨著操作系統(tǒng)功能的不斷增多和代碼規(guī)模的不斷擴(kuò)大,提供合理的層級(jí)結(jié)構(gòu),對(duì)于降低操作系統(tǒng)復(fù)雜度、提升操作系統(tǒng)安全與可靠性來(lái)說(shuō)變得尤為重要。圖1列舉了一些常見(jiàn)的操作系統(tǒng)內(nèi)核架構(gòu)。下面我們對(duì)這些結(jié)構(gòu)進(jìn)行簡(jiǎn)要的分析。

          ▲圖1 操作系統(tǒng)內(nèi)核架構(gòu)的頻譜:簡(jiǎn)要結(jié)構(gòu)(如DOS)、宏內(nèi)核(如UNIX/Linux)、微內(nèi)核、外核與多內(nèi)核等


          01 簡(jiǎn)要結(jié)構(gòu)

          一些功能較為簡(jiǎn)單的操作系統(tǒng),會(huì)選擇將應(yīng)用程序與操作系統(tǒng)放置在同一個(gè)地址空間(addressspace)中,無(wú)須底層硬件提供復(fù)雜的內(nèi)存管理、特權(quán)級(jí)隔離等功能。MS-DOS(MicroSoft Disk Operating System)是采用了簡(jiǎn)要結(jié)構(gòu)的一個(gè)典型例子。

          該結(jié)構(gòu)的一個(gè)優(yōu)勢(shì)在于,應(yīng)用程序?qū)Σ僮飨到y(tǒng)服務(wù)的調(diào)用可直接通過(guò)函數(shù)調(diào)用高效完成,但缺點(diǎn)也同樣明顯,任何一個(gè)應(yīng)用或操作系統(tǒng)模塊出現(xiàn)了問(wèn)題,均有可能使整個(gè)系統(tǒng)崩潰。隨著操作系統(tǒng)功能的不斷增加,簡(jiǎn)要結(jié)構(gòu)會(huì)使操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)難度越來(lái)越高,難以持續(xù)演進(jìn)。

          盡管缺乏隔離能力,簡(jiǎn)要結(jié)構(gòu)的操作系統(tǒng)依然采用了一定的模塊化與層次結(jié)構(gòu)以降低復(fù)雜度。

          圖2展示了MS-DOS的內(nèi)部結(jié)構(gòu):MSDOS.Sys模塊通過(guò)命令行接口與用戶交互,并負(fù)責(zé)與設(shè)備驅(qū)動(dòng)交互以實(shí)現(xiàn)對(duì)硬件設(shè)備的管理;I/O子系統(tǒng)(IO.Sys)實(shí)現(xiàn)對(duì)硬件設(shè)備I/O訪問(wèn)的管理,并以I/O請(qǐng)求作為抽象為MSDOS.Sys和設(shè)備驅(qū)動(dòng)I/O提供服務(wù)。

          ▲圖2 MS-DOS的系統(tǒng)結(jié)構(gòu)

          除了MS-DOS外,當(dāng)前采用簡(jiǎn)要結(jié)構(gòu)的操作系統(tǒng)還包括FreeRTOS與uCOS等。

          這些操作系統(tǒng)主要運(yùn)行在微控制單元(MicroController Unit,MCU)等相對(duì)比較簡(jiǎn)單的硬件上,這些硬件通常沒(méi)有提供現(xiàn)代意義上的內(nèi)存管理單元(MemoryManagement Unit,MMU),隔離能力較弱或缺失,難以運(yùn)行(往往也不需要運(yùn)行)復(fù)雜的操作系統(tǒng)。


          02 宏內(nèi)核架構(gòu)

          宏內(nèi)核(Monolithic kernel)又稱單內(nèi)核,其特征是操作系統(tǒng)內(nèi)核的所有模塊(包括進(jìn)程調(diào)度、內(nèi)存管理、文件系統(tǒng)、設(shè)備驅(qū)動(dòng)等)均運(yùn)行在內(nèi)核態(tài),具備直接操作硬件的能力,這類操作系統(tǒng)包括UNIX/Linux、FreeBSD等。圖3展示了一個(gè)典型的宏內(nèi)核架構(gòu)

          在操作系統(tǒng)代碼中,通常會(huì)有類似arch/arm/的目錄,用于封裝與體系結(jié)構(gòu)相關(guān)的功能實(shí)現(xiàn)。

          ▲圖3 宏內(nèi)核的基本結(jié)構(gòu)

          由于操作系統(tǒng)內(nèi)核的功能日趨復(fù)雜,宏內(nèi)核架構(gòu)的操作系統(tǒng)也逐步采用M.A.L.H方法對(duì)功能進(jìn)行模塊化、抽象、分層、層級(jí)等,以控制其不斷增長(zhǎng)的復(fù)雜度。下面是一些典型的方法。

          1. 模塊化

          現(xiàn)代操作系統(tǒng)(如UNIX、Linux、Windows等)的內(nèi)核均采用模塊化的策略來(lái)組織各個(gè)功能。為進(jìn)一步提高功能的可擴(kuò)展性,現(xiàn)代操作系統(tǒng)通常還提供了可加載內(nèi)核模塊(Loadable Kernel Module,LKM)機(jī)制。

          例如,當(dāng)前大部分設(shè)備驅(qū)動(dòng)是以可加載模塊的形式存在的,與內(nèi)核其他模塊解耦,使驅(qū)動(dòng)開(kāi)發(fā)與驅(qū)動(dòng)加載更加方便、靈活。

          2. 抽象

          現(xiàn)代操作系統(tǒng)內(nèi)核均廣泛采用抽象的方法來(lái)降低復(fù)雜度并提高可維護(hù)性。例如,UNIX將文件作為一個(gè)重要的抽象,提出“一切皆是文件”(everythingis a file),將數(shù)據(jù)、設(shè)備、內(nèi)核對(duì)象等均抽象為文件,并為上層應(yīng)用提供統(tǒng)一的接口。

          3. 分層

          宏內(nèi)核架構(gòu)的操作系統(tǒng)一開(kāi)始就采用了分層的架構(gòu)。例如,圖靈獎(jiǎng)獲得者EdsgerDijkstra在1968年提出的“THE”操作系統(tǒng)將操作系統(tǒng)分為6層,如圖4所示。現(xiàn)代操作系統(tǒng)內(nèi)核也均存在一定程度的分層結(jié)構(gòu),以更好地組織各種功能。圖5展示了Linux文件系統(tǒng)的分層結(jié)構(gòu)。

          ▲圖4 “THE”操作系統(tǒng)的分層結(jié)構(gòu)

          ▲圖5 文件系統(tǒng)的分層結(jié)構(gòu)

          4. 層級(jí)

          層級(jí)的概念同樣被廣泛應(yīng)用于內(nèi)核的資源管理中,如調(diào)度子系統(tǒng)中對(duì)進(jìn)程優(yōu)先級(jí)的分類,控制組(cgroup)對(duì)進(jìn)程層級(jí)的分類,內(nèi)存分配器對(duì)不同內(nèi)存的分類等。

          通過(guò)各種復(fù)雜度控制方法,Linux已經(jīng)演進(jìn)為一個(gè)超過(guò)2800萬(wàn)行代碼的復(fù)雜系統(tǒng),成為世界上最大的開(kāi)源協(xié)作項(xiàng)目,每年有超過(guò)1800人為L(zhǎng)inux提交補(bǔ)丁來(lái)修復(fù)問(wèn)題以及添加新功能。

          然而Linux同樣面臨挑戰(zhàn):一個(gè)通用的、適用于大部分場(chǎng)景的設(shè)計(jì),常常意味著很難滿足特定場(chǎng)景下對(duì)安全性、可靠性、實(shí)時(shí)性等方面的需求;同時(shí),在一個(gè)龐大的系統(tǒng)中進(jìn)行創(chuàng)新也變得越來(lái)越困難,這使得一些較大的創(chuàng)新(如網(wǎng)絡(luò)、文件系統(tǒng)、設(shè)備驅(qū)動(dòng)等)開(kāi)始往用戶態(tài)遷移。


          03 微內(nèi)核架構(gòu)

          隨著宏內(nèi)核操作系統(tǒng)的內(nèi)核功能不斷增長(zhǎng),系統(tǒng)的復(fù)雜度也持續(xù)增加,在可靠性、安全性等方面導(dǎo)致了更多的問(wèn)題。這是因?yàn)樵诤陜?nèi)核架構(gòu)下,所有內(nèi)核模塊均運(yùn)行在特權(quán)空間,一個(gè)單點(diǎn)的錯(cuò)誤就可能會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰或者被攻破。哪怕是具有極強(qiáng)編程能力的操作系統(tǒng)內(nèi)核程序員編寫(xiě)的內(nèi)核系統(tǒng)也很難避免bug。

          在Andrew Tanenbaum等人的論文中提到,在一般的工業(yè)界系統(tǒng)中每千行代碼大約會(huì)有6~16個(gè)缺陷。雖然很多缺陷在正常運(yùn)行時(shí)不會(huì)被觸發(fā),部分缺陷即使被觸發(fā)也不會(huì)引起顯著后果,但對(duì)于一個(gè)千萬(wàn)行代碼級(jí)的軟件而言,潛在的缺陷數(shù)量也是觸目驚心的。

          因此,研究人員嘗試對(duì)宏內(nèi)核架構(gòu)的操作系統(tǒng)進(jìn)行解耦,將單個(gè)功能或模塊(如文件系統(tǒng)、設(shè)備驅(qū)動(dòng)等)從內(nèi)核中拆分出來(lái),作為一個(gè)獨(dú)立的服務(wù)部署到獨(dú)立的運(yùn)行環(huán)境中;內(nèi)核僅保留極少的功能,為這些服務(wù)提供通信等基礎(chǔ)能力,使其能夠互相協(xié)作以完成操作系統(tǒng)所必需的功能。這種架構(gòu)被稱為微內(nèi)核(Microkernel)。

          在微內(nèi)核架構(gòu)下,服務(wù)與服務(wù)之間是完全隔離的,單個(gè)服務(wù)即使出現(xiàn)故障或受到安全攻擊,也不會(huì)直接導(dǎo)致整個(gè)操作系統(tǒng)崩潰或被攻破,從而能有效提高操作系統(tǒng)的可靠性與安全性。

          此外,微內(nèi)核架構(gòu)帶來(lái)了機(jī)制與策略的進(jìn)一步分離,也可以更方便地為不同場(chǎng)景定制不同的服務(wù),從而更好地適應(yīng)不用的應(yīng)用需求。

          小知識(shí):最早的微內(nèi)核操作系統(tǒng)

          一些讀者可能認(rèn)為微內(nèi)核架構(gòu)是一個(gè)比較新的設(shè)計(jì)。事實(shí)上,早在1969年,UNIX系統(tǒng)開(kāi)始設(shè)計(jì)的時(shí)候,類似微內(nèi)核架構(gòu)的操作系統(tǒng)就已經(jīng)出現(xiàn)。Per Brinch Hansen開(kāi)發(fā)的RC 4000多路編程系統(tǒng)在歷史上第一次將操作系統(tǒng)的組件分離為各個(gè)相互交互的功能組件,以及一個(gè)負(fù)責(zé)消息通信的內(nèi)核。Per Brinch Hansen在RC 4000中也首次提出了分離機(jī)制與策略的原則,以及管程(Monitor)這個(gè)概念。

          微內(nèi)核的發(fā)展到目前為止經(jīng)歷了三代。Mach是第一代微內(nèi)核的代表。1975年,Mach起源于羅徹斯特大學(xué),后來(lái)主要在卡內(nèi)基梅隆大學(xué)開(kāi)發(fā)。

          Mach將很多內(nèi)核功能以單獨(dú)服務(wù)的形式運(yùn)行在用戶態(tài);然而,Mach對(duì)進(jìn)程間通信(Inter-ProcessCommunication,IPC)的設(shè)計(jì)過(guò)于通用,加上Mach微內(nèi)核自身資源(包括內(nèi)存與CPU緩存等)占用過(guò)大的問(wèn)題,使得其性能與同時(shí)期的宏內(nèi)核相比存在差距,甚至有人據(jù)此將微內(nèi)核與性能差關(guān)聯(lián)起來(lái)。

          微內(nèi)核的性能一定差嗎?德國(guó)國(guó)家信息技術(shù)研究中心的JochenLiedtke深入分析了Mach微內(nèi)核系統(tǒng)的性能,指出較差的性能不是微內(nèi)核的必然結(jié)果。Jochen認(rèn)為,高性能IPC的設(shè)計(jì)與實(shí)現(xiàn)必然是與體系結(jié)構(gòu)相關(guān)的,過(guò)度抽象將極大影響IPC的性能,而利用體系結(jié)構(gòu)相關(guān)的狀態(tài)進(jìn)行優(yōu)化則可將IPC性能提升到極致。

          為此,Jochen Liedtke設(shè)計(jì)并實(shí)現(xiàn)了L4微內(nèi)核系統(tǒng),并提出了微內(nèi)核的最小化原則:一個(gè)操作系統(tǒng)內(nèi)核的功能只有在將其放在內(nèi)核態(tài)以外會(huì)影響整個(gè)系統(tǒng)的功能時(shí),才能被放置在內(nèi)核態(tài)。

          通過(guò)高性能的IPC實(shí)現(xiàn)以及極小化的微核(即微內(nèi)核系統(tǒng)的內(nèi)核態(tài)部分,又稱μkernel),微內(nèi)核架構(gòu)操作系統(tǒng)的性能可以達(dá)到甚至超過(guò)同時(shí)期的宏內(nèi)核架構(gòu)操作系統(tǒng)。L4被認(rèn)為是第二代微內(nèi)核操作系統(tǒng)的代表。

          隨著L4等微內(nèi)核操作系統(tǒng)在實(shí)時(shí)、高安全等場(chǎng)景的廣泛應(yīng)用,研究人員開(kāi)始對(duì)微內(nèi)核的安全性進(jìn)行進(jìn)一步的增強(qiáng)。EROS首次將能力(Capability)機(jī)制引入微內(nèi)核操作系統(tǒng)中,并高效地實(shí)現(xiàn)了該機(jī)制(關(guān)于Capability機(jī)制詳見(jiàn)《現(xiàn)代操作系統(tǒng):原理與實(shí)現(xiàn)》 16.2.6節(jié))。

          Capability機(jī)制允許更精確、更細(xì)粒度地給不同應(yīng)用程序授予對(duì)內(nèi)核對(duì)象的調(diào)用權(quán),從而能更好地提升系統(tǒng)安全性。seL4是一個(gè)典型的基于Capability機(jī)制的微內(nèi)核;谷歌正在實(shí)現(xiàn)的Fushcia微內(nèi)核操作系統(tǒng)同樣基于Capability機(jī)制實(shí)現(xiàn)了訪問(wèn)控制。

          此外,seL4還引入了形式化證明方法,通過(guò)數(shù)學(xué)的方式證明了其微核部分滿足從設(shè)計(jì)到實(shí)現(xiàn)的一致性,以及微核上的服務(wù)具有互不干擾(non-interference)等屬性。這些安全增強(qiáng)能力成為第三代微內(nèi)核架構(gòu)操作系統(tǒng)的重要特征。


          04 宏內(nèi)核vs.微內(nèi)核

          自宏內(nèi)核與微內(nèi)核這兩種操作系統(tǒng)架構(gòu)出現(xiàn)伊始,人們就兩者的優(yōu)劣與特點(diǎn)展開(kāi)了多次深入的討論。當(dāng)前,隨著一些新場(chǎng)景、新訴求的出現(xiàn),使類似微內(nèi)核架構(gòu)的操作系統(tǒng)架構(gòu)再次受到關(guān)注。

          1. 彈性擴(kuò)展能力:對(duì)于一個(gè)宏內(nèi)核來(lái)說(shuō),很難僅僅通過(guò)簡(jiǎn)單的裁剪或擴(kuò)展,使其支持資源訴求從KB到TB級(jí)別的場(chǎng)景。
          2. 硬件異構(gòu)性:異構(gòu)硬件往往需要一些定制化的方式來(lái)解決特定問(wèn)題,這種定制化對(duì)于宏內(nèi)核來(lái)說(shuō)很難得到長(zhǎng)期的支持。
          3. 功能安全:由于宏內(nèi)核在故障隔離和時(shí)延控制等方面的缺陷,截至目前尚無(wú)通過(guò)高等級(jí)功能安全認(rèn)證(例如,汽車行業(yè)的ASIL-D)的先例。
          4. 信息安全:宏內(nèi)核架構(gòu)的操作系統(tǒng)存在較大的信息安全隱患,例如內(nèi)核態(tài)驅(qū)動(dòng)容易導(dǎo)致低質(zhì)量的驅(qū)動(dòng)代碼入侵內(nèi)核,粗粒度權(quán)限管理容易帶來(lái)權(quán)限漏洞等。
          5. 確定性時(shí)延:由于宏內(nèi)核架構(gòu)資源隔離較為困難,且各模塊耦合度高導(dǎo)致難以控制系統(tǒng)調(diào)用的時(shí)延,因此較難做到確定性時(shí)延;即便為時(shí)延做一些特定優(yōu)化(例如Linux-RT補(bǔ)丁),時(shí)延抖動(dòng)仍然較大。

          在真實(shí)世界中,正如體系結(jié)構(gòu)領(lǐng)域的RISC與CISC之爭(zhēng)一樣,宏內(nèi)核與微內(nèi)核往往會(huì)互相借鑒。例如,Intel處理器采用了CISC的指令集架構(gòu),但其微架構(gòu)實(shí)現(xiàn)則采用了RISC架構(gòu);類似地,Linux等宏內(nèi)核架構(gòu)操作系統(tǒng)也采用了一些微內(nèi)核的設(shè)計(jì)思想。

          例如,盡管Linux的創(chuàng)始人Linus Torvalds在20世紀(jì)90年代與AndrewTanenbaum論戰(zhàn)時(shí)表明將驅(qū)動(dòng)放到用戶態(tài)是個(gè)不靠譜的想法,但近期Linux也逐步采用了一些用戶態(tài)驅(qū)動(dòng)模型(如UIO與VFIO等);Android操作系統(tǒng)在Treble項(xiàng)目中同樣將部分驅(qū)動(dòng)放到了用戶態(tài),并通過(guò)名為Binder的IPC機(jī)制來(lái)與這些驅(qū)動(dòng)進(jìn)行交互。

          小思考:小的操作系統(tǒng)內(nèi)核就是微內(nèi)核嗎?

          不是。有一些操作系統(tǒng)內(nèi)核(如FreeRTOS、uCOS-II等)雖然很小,但是不具備現(xiàn)代意義上的操作系統(tǒng)功能,包括虛擬內(nèi)存、用戶態(tài)和內(nèi)核態(tài)分離等。因此它們應(yīng)該被歸為本章提到的簡(jiǎn)要結(jié)構(gòu)內(nèi)核。

          軟件是計(jì)算系統(tǒng)的“靈魂”,而操作系統(tǒng)則是軟件運(yùn)行和支撐技術(shù)的核心,“CPU+操作系統(tǒng)”更是成為信息產(chǎn)業(yè)生態(tài)的核心、信息時(shí)代安全的基石。

          自1956年第一個(gè)實(shí)用操作系統(tǒng)誕生以來(lái),操作系統(tǒng)已歷經(jīng)60多年的發(fā)展。它一方面是伴隨以CPU為代表的硬件及其組成結(jié)構(gòu)的發(fā)展,另一方面是為了支持多機(jī)、分布和網(wǎng)絡(luò)環(huán)境,以及滿足新型計(jì)算模式和新型應(yīng)用的需求。

          迄今,以20年左右為周期,操作系統(tǒng)已出現(xiàn)從主機(jī)計(jì)算時(shí)代到個(gè)人計(jì)算時(shí)代,再到移動(dòng)計(jì)算時(shí)代的兩次重大變遷,每次變遷均涉及計(jì)算設(shè)備及其用戶兩方面的數(shù)量級(jí)的躍升,同時(shí)誕生了新的“CPU+操作系統(tǒng)”生態(tài)。

          當(dāng)然,從技術(shù)本質(zhì)看,操作系統(tǒng)“向下管理各種計(jì)算資源,向上為應(yīng)用程序提供運(yùn)行環(huán)境和開(kāi)發(fā)支撐,為用戶提供交互界面”的角色定位未變。

          當(dāng)前,萬(wàn)物互聯(lián)、人機(jī)物融合計(jì)算的泛在計(jì)算時(shí)代正在開(kāi)啟。以云計(jì)算、大數(shù)據(jù)、人工智能和物聯(lián)網(wǎng)等為代表的新型應(yīng)用場(chǎng)景,多種不同架構(gòu)的CPU、GPU和加速器與以新型存儲(chǔ)、傳感設(shè)備等為代表的新型硬件,以及嵌入式、移動(dòng)計(jì)算、邊緣計(jì)算、云計(jì)算等不同規(guī)模的計(jì)算系統(tǒng),使得操作系統(tǒng)的內(nèi)涵和外延均發(fā)生了重大變化,新一輪的重大變遷正在孕育中。

          支撐泛在計(jì)算的“泛在操作系統(tǒng)”將成為新的操作系統(tǒng)形態(tài),并催生新的“CPU+操作系統(tǒng)”生態(tài)。這一輪變遷將促進(jìn)新的操作系統(tǒng)研究與實(shí)踐,在帶來(lái)新機(jī)遇的同時(shí),也會(huì)產(chǎn)生新的挑戰(zhàn)和更激烈的競(jìng)爭(zhēng)。

          本文摘編自《現(xiàn)代操作系統(tǒng):原理與實(shí)現(xiàn)》一書(shū)。

          陳海波作品,結(jié)合前沿研究與工業(yè)界實(shí)踐
          面向真實(shí)場(chǎng)景與真實(shí)問(wèn)題
          全新打造ChcCore微內(nèi)核系列課程實(shí)驗(yàn)
          建立對(duì)操作系統(tǒng)的第一手實(shí)踐經(jīng)驗(yàn)

          推薦語(yǔ):本書(shū)以三個(gè)“面向”為導(dǎo)向,即面向經(jīng)典基礎(chǔ)理論與方法,面向國(guó)際前沿研究,面向工業(yè)界實(shí)踐,深入淺出地介紹操作系統(tǒng)的理論、架構(gòu)、設(shè)計(jì)方法與具體實(shí)現(xiàn)。本書(shū)是首本以ARM64為主體介紹操作系統(tǒng)的教材,將學(xué)術(shù)前沿與工業(yè)實(shí)踐充分結(jié)合,不僅介紹了現(xiàn)有的Linux宏內(nèi)核操作系統(tǒng)架構(gòu),而且介紹了微內(nèi)核、外核等操作系統(tǒng)架構(gòu)。

          干貨直達(dá)??


          更多精彩??

          在公眾號(hào)對(duì)話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          PPT | 讀書(shū) | 書(shū)單 | 硬核 | 干貨 | 講明白 | 神操作
          大數(shù)據(jù) | 云計(jì)算 | 數(shù)據(jù)庫(kù) | Python | 爬蟲(chóng) | 可視化
          AI | 人工智能 | 機(jī)器學(xué)習(xí) | 深度學(xué)習(xí) | NLP
          5G | 中臺(tái) | 用戶畫(huà)像 1024 | 數(shù)學(xué) | 算法 數(shù)字孿生

          據(jù)統(tǒng)計(jì),99%的大咖都關(guān)注了這個(gè)公眾號(hào)
          ??
          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码一区=区 | 性交免费网站 | 国产精品久久久久永久免费看 | 免费成人在线观看视频 | 99婷婷五月天 |