亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

前段時(shí)間分享的一篇《完了!CPU 一味求快出事了》得到了眾多網(wǎng)友的好評(píng),今天我們就來(lái)繼續(xù)探討 CPU 的那些事!

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

圖片來(lái)自 Pexels

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

中斷機(jī)制

我是 CPU 一號(hào)車間的阿 Q,我又來(lái)了!

我們?nèi)粘5墓ぷ骶褪遣粩鄨?zhí)行代碼指令,不過(guò)這看似簡(jiǎn)單的工作背后其實(shí)也并不輕松。

咱不能悶著頭啥也不管一個(gè)勁的只管執(zhí)行代碼,還得和連接在主板上的其他單位打交道。

經(jīng)常保持聯(lián)系的有鍵盤(pán)、鼠標(biāo)、磁盤(pán),哦對(duì),還有網(wǎng)卡,這家伙最近把我惹到了,待會(huì)再說(shuō)這事兒。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

原以為內(nèi)存那家伙已經(jīng)夠慢的了,沒(méi)想到跟上面這幾位通個(gè)信比他更慢,咱 CPU 工廠的時(shí)間一刻值千金,不能干等著,耽誤工夫。后來(lái)廠里一合計(jì),想了個(gè)叫中斷的辦法。

在我們車間裝了個(gè)大燈,這些單位想聯(lián)系我們辦事兒,就先給我們發(fā)一個(gè)中斷信號(hào),大燈就會(huì)自動(dòng)亮起。

我們平時(shí)工作執(zhí)行代碼指令的時(shí)候,每執(zhí)行一條指令就會(huì)瞅一眼看看大燈有沒(méi)有亮起來(lái)。

一旦發(fā)現(xiàn)燈亮了,就把手頭的工作先放一邊,去處理一下。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

我們記性很差的,等會(huì)處理了完了還得回來(lái)接著原來(lái)的活繼續(xù)干,為了等會(huì)回來(lái)還能接的起來(lái),走之前得把當(dāng)前執(zhí)行的這個(gè)線程的各個(gè)寄存器的值,執(zhí)行到哪里了等等這些信息都保存在這個(gè)線程的棧里去。

不過(guò)有時(shí)候我們?cè)趫?zhí)行非常重要的事情的時(shí)候,就不想被他們打斷。于是我們又在車間里那個(gè) eflags 寄存器中設(shè)置了一個(gè)標(biāo)記,如果是 1 我們才允許被打斷,如果是 0 那就算天王老子找我們也不管了。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

哦不對(duì),還有一種不可以屏蔽的中斷 NMI,走得是綠色通道。不過(guò)我可不期望有這種事情發(fā)生,因?yàn)橐话愣紱](méi)有好事,不是電源斷電就是溫度過(guò)高,或者總線出了錯(cuò)誤等這之類嚴(yán)重的事情。

8259A PIC

還有一個(gè)問(wèn)題,找我們辦事兒的單位有很多,我們得要區(qū)分開(kāi)來(lái),到底是誰(shuí)來(lái)消息了,而且要是他們一起來(lái)找,按什么樣優(yōu)先級(jí)順序處理,也是一件頭疼的事情。

為此,廠里單獨(dú)組建了一個(gè)全資的子公司來(lái)負(fù)責(zé)這事兒,他就是可編程中斷控制器 PIC,外號(hào) 8259A,其他單位想聯(lián)系我們都得通過(guò)這個(gè) PIC,我們只需要和 PIC 進(jìn)行對(duì)接就可以了。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

我們給辦事單位都分配了一個(gè)編號(hào),叫做中斷向量。我們還準(zhǔn)備了一個(gè)表格叫中斷描述符表 IDT,表格里記錄了很多信息,其中就有處理這個(gè)中斷號(hào)對(duì)應(yīng)的函數(shù)地址。

我們找 PIC 拿到編號(hào)后就執(zhí)行處理函數(shù)就 OK 了。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

這個(gè)表格有點(diǎn)大,足足有 256 項(xiàng),咱 CPU 車間空間有限,放不下,就把它放在內(nèi)存那家伙那里了,為了能快速找到這個(gè)表,專門(mén)添置了一個(gè)叫 idtr 的寄存器指向這個(gè)表格。

其實(shí)除了中斷,我們?cè)趫?zhí)行指令的時(shí)候如果遇到了異常情況,也會(huì)去這個(gè)表里執(zhí)行異常處理函數(shù),最常見(jiàn)的比如遇到了除數(shù)是 0,內(nèi)存地址錯(cuò)誤等等情況。

這種情況下,我們必須主動(dòng)放下手里的活,去處理異常,所以我們也說(shuō)異常是同步的,而中斷不知道什么時(shí)候發(fā)生,所以是異步的。

APIC

8259A 干的挺不錯(cuò)的,不過(guò)后來(lái)咱們廠擴(kuò)大規(guī)模,從單核 CPU 變成了多核,他就有點(diǎn)應(yīng)付不過(guò)來(lái)了。

終于有一天,廠里召開(kāi)會(huì)議,把 8259A 給撤了,成立了一個(gè)新的全資子公司叫高級(jí)可編程中斷控制器 APIC,名字就多了個(gè)高級(jí)兩個(gè)字,干的活還是一樣的。

不過(guò)你還別說(shuō),這兩個(gè)字還真不是吹噓,比 8259A 不知道高到哪里去了。

這個(gè) APIC 的新公司一上臺(tái),就成立了兩個(gè)部門(mén),一個(gè)叫 I/O APIC,負(fù)責(zé)接待那些要找我們辦事兒的單位,一個(gè)叫 Local APIC,以外包的形式入駐到我 CPU 的各個(gè)車間工作,因?yàn)榫桶ぶ覀冝k公,所以取名叫 Local。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

I/O APIC 收到中斷信號(hào)以后,根據(jù)自己的策略就分發(fā)到對(duì)應(yīng)的 Local APIC,咱們八個(gè)車間就可以專心處理了,為我們省了不少事兒。

不僅如此,通過(guò)這個(gè)外包團(tuán)隊(duì),我們 8 個(gè)車間還能向彼此發(fā)起中斷請(qǐng)求,我們把這個(gè)叫做處理器間中斷 Inter-Processor Interrupt,簡(jiǎn)稱 IPI。

中斷親和性

每當(dāng)網(wǎng)絡(luò)中有數(shù)據(jù)包到來(lái),網(wǎng)卡那家伙就發(fā)送一個(gè)中斷消息過(guò)來(lái),告訴我們?nèi)ヌ幚怼?/p>

不過(guò)最近不知道怎么回事,網(wǎng)絡(luò)數(shù)據(jù)量激增。咱們廠里明明有 8 個(gè)車間,他非得一個(gè)勁的只給我們發(fā)消息,搞得我們手頭的工作老是被打斷,忙得不可開(kāi)交。

終于,我忍不住了,去找網(wǎng)卡那家伙理論了一番。不過(guò)他告訴我,這也不能怪他,分發(fā)給誰(shuí)處理,那是 APIC 在負(fù)責(zé)。

想想也是,回頭我就去了 APIC 那里,要求他們分?jǐn)傄稽c(diǎn)給別的車間處理。

APIC 表示這他們做不了主,得讓廠里來(lái)決定。

沒(méi)過(guò)幾天,廠里開(kāi)了個(gè)會(huì),參會(huì)的有各車間代表、APIC 負(fù)責(zé)人,還請(qǐng)了操作系統(tǒng)那邊的相關(guān)代表過(guò)來(lái)。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

會(huì)上,大家為了此事?tīng)?zhēng)執(zhí)不休。

二號(hào)車間虎子:“阿 Q,誰(shuí)叫你們一號(hào)車間是 Bootstrap Processor,你們就多辛苦一點(diǎn)嘛”。

三號(hào)車間代表:“你這話說(shuō)的不合適,大家是一個(gè) Team,要互相幫助!要不這樣,既然有這么多單位要聯(lián)系我們,咱就分下工,比如一號(hào)車間負(fù)責(zé)網(wǎng)卡,二號(hào)負(fù)責(zé)磁盤(pán),我們?nèi)?hào)負(fù)責(zé)鍵盤(pán),以此類推。”

五號(hào)車間代表:“你想的倒是挺美哦,鍵盤(pán)一天能發(fā)多少中斷,網(wǎng)卡一天要發(fā)多少中斷,你凈挑輕松的干。這樣吧,咱就用隨機(jī)分發(fā)進(jìn)行負(fù)載均衡你們覺(jué)得怎么樣?”

八號(hào)車間代表:“隨機(jī)個(gè)啥啊,多麻煩,依我看吶咱 8 個(gè)車間就輪流來(lái)唄。”

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

這時(shí),領(lǐng)導(dǎo)問(wèn)操作系統(tǒng)代表有沒(méi)有什么建議。

這代表站起身來(lái),推了推眼鏡說(shuō)到:“幾位有沒(méi)有聽(tīng)過(guò)線程的 CPU 親和性?”

大家都搖了搖頭,問(wèn)到:“這是個(gè)什么意思?”

“就是有些線程想綁定在你們之中的某一個(gè)核上面執(zhí)行,不希望一會(huì)兒在這個(gè)核執(zhí)行,一會(huì)兒在那個(gè)核執(zhí)行。”

我接過(guò)他的話:“好像是有這么回事兒,之前有遇到過(guò),有個(gè)線程一直被分配到我們一號(hào)車間,不過(guò)我們對(duì)這個(gè)不用關(guān)心吧,執(zhí)行誰(shuí)不是干活啊,對(duì)我們都一個(gè)樣。”

代表?yè)u了搖頭,“唉,這可不一樣!你們每個(gè)核的一二級(jí)緩存都是自己在管理,要是換到別的核,這緩存多半就沒(méi)用了,又得重新來(lái)建立,這換來(lái)?yè)Q去的豈不是瞎耽誤功夫嘛!對(duì)于一般的線程他們倒是不關(guān)心,但是有些線程執(zhí)行大量的內(nèi)存訪問(wèn)和運(yùn)算處理,又對(duì)性能要求很高的話,那就很在意這個(gè)問(wèn)題了。”

我們幾個(gè)都恍然大悟,紛紛點(diǎn)頭。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

虎子起身問(wèn)到:“那你們是如何實(shí)現(xiàn)這個(gè)親和性的呢?這跟我們今天的會(huì)議又有什么關(guān)系呢?”

代表繼續(xù)回答說(shuō)到:“我先回答你的第一個(gè)問(wèn)題。線程調(diào)度是我們操作系統(tǒng)完成的工作,我們提供了 API 接口,線程通過(guò)調(diào)用這些接口表明自己的親和性意愿,我們?cè)谡{(diào)度的時(shí)候就能按照他們的意愿把線程分配給你們來(lái)執(zhí)行。”

代表喝了一口水接著說(shuō)到:“我再回答你的第二個(gè)問(wèn)題。既然線程可以有親和性,那中斷也可以按照這個(gè)思路來(lái)分發(fā)啊!APIC 默認(rèn)有一套分發(fā)策略,但是也提供親和性的設(shè)置,可以指定誰(shuí)哪些核來(lái)處理,這樣不用把規(guī)矩定死,靈活可變,豈不更好?”

剛說(shuō)完,會(huì)議室門(mén)口突然出現(xiàn)一年輕少年,揮手將操作系統(tǒng)代表喚了出去。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

接下來(lái),我們?cè)敿?xì)討論了這種方案的可行性,最后大家一致決定,就照這么辦。

我們一起提出了一個(gè)叫中斷親和性的東西,操作系統(tǒng)那邊提供一個(gè)可配置的入口 smp_affinity,可以通過(guò)設(shè)置各處理器核的掩碼來(lái)決定中斷交由誰(shuí)來(lái)處理,APIC 回去負(fù)責(zé)落地支持。

有了這套方案,再遇到網(wǎng)絡(luò)高峰期,咱們一號(hào)車間的壓力就有辦法緩解了。

我們剛剛達(dá)成一致,操作系統(tǒng)代表返回會(huì)議室,神色凝重的說(shuō)到:“不好意思各位,操作系統(tǒng)那邊有點(diǎn)事情需要趕回去處理一下,先走一步了。”

隨著網(wǎng)卡的一聲中斷,一個(gè)新的數(shù)據(jù)包來(lái)到了這片土地。帝國(guó)網(wǎng)絡(luò)部新來(lái)的年輕人顯然沒(méi)有意識(shí)到危險(xiǎn)的到來(lái)······

太慢不能忍!CPU 又拿硬盤(pán)和網(wǎng)卡開(kāi)刀了!

總線技術(shù)

我是 CPU 一號(hào)車間的阿 Q,最近為了一件事兒搞得我挺煩的。

當(dāng)初我們 CPU 工廠剛剛來(lái)到主板上建廠時(shí),那時(shí)候主板上的單位還不多,跟我們打交道最多的就是內(nèi)存那家伙了。

后來(lái),鍵盤(pán)、鼠標(biāo)、硬盤(pán)、網(wǎng)卡、聲卡、顯卡等等設(shè)備紛紛入駐主板,這塊土地變得越來(lái)越熱鬧起來(lái)。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

不過(guò),他們的到來(lái)并沒(méi)有影響我們的地位,畢竟我們是中央處理器,所有人都得聽(tīng)我們指揮。

為了和主板上這些家伙們通信,我們花了重金鋪了一條線路,主板上家家戶戶都連上了這條線路,我們把它叫做總線,雖然說(shuō)是一條,但實(shí)際上它包含了傳輸數(shù)據(jù)的數(shù)據(jù)總線,傳輸?shù)刂返牡刂房偩€和進(jìn)行控制管理的控制總線。

這樣一來(lái),各單位就能一起聊天了。不過(guò)這線路是共用的,大家不能都一起傳數(shù)據(jù),那就亂套了。

為了統(tǒng)一管理,我們?cè)O(shè)立了一個(gè)新的單位叫總線控制器,這個(gè)單位來(lái)統(tǒng)一管理總線,大家要通信就得找它申請(qǐng),這就叫做總線仲裁。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

不過(guò)啊,主板上的單位之間的速度還是千差萬(wàn)別的,像內(nèi)存就比硬盤(pán)、網(wǎng)卡這些單位快多了(當(dāng)然,跟我們 CPU 車間的工作速度那還是不能比)。

不僅如此,不同單位他們的接口還千差萬(wàn)別,用一套總線矛盾就日益明顯了,后來(lái)就變成了多級(jí)總線,讓慢的跟慢的玩,快的跟快的玩,最后大家再用一個(gè)東西把不同總線連接起來(lái),這個(gè)東西就是橋!

主板上后來(lái)出現(xiàn)了兩個(gè)著名的橋,一個(gè)離我們 CPU 很近的叫北橋,內(nèi)存那家伙和我們通信就會(huì)經(jīng)過(guò)它,另一個(gè)離我們遠(yuǎn)一點(diǎn)的叫南橋,那些慢一些的 I/O 設(shè)備就通過(guò)南橋接進(jìn)來(lái)。

再后來(lái),隨著我們 CPU 工廠的壯大,直接把北橋收購(gòu)了,現(xiàn)在變成了我們廠里的一個(gè)部門(mén)了。

PIO 模式

現(xiàn)在我們可以和這些 I/O 設(shè)備通信了,就拿硬盤(pán)來(lái)說(shuō)吧,它有 I/O 端口,我們提供了 in 和 out 兩條指令,就可以對(duì)它進(jìn)行讀寫(xiě)數(shù)據(jù)了。

這種通信的方式叫做可編程輸入輸出模型,Programming Input/Output Model,簡(jiǎn)稱 PIO。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

我們是整個(gè)主板上的核心,俗話說(shuō)得好,能力越大,責(zé)任越大,但有時(shí)候真心覺(jué)得有點(diǎn)累。

隨著越來(lái)越多的設(shè)備接入主板,越來(lái)越多的程序需要等待我們?nèi)?zhí)行,工作量大的壓的我們喘不過(guò)氣來(lái)。

尤其是隨著技術(shù)進(jìn)步,我們 CPU 工廠的速度越來(lái)越快,與硬盤(pán)的讀寫(xiě)速度之間的差距越來(lái)越拉大,我們還用這種方式通信就太浪費(fèi)我們的時(shí)間了。

DMA 技術(shù)

這幾天,我們幾個(gè)車間的 Leader 私下聚在一起討論起這個(gè)事情來(lái)。

“阿 Q,你不覺(jué)得現(xiàn)在我們花了太多時(shí)間再讀寫(xiě)硬盤(pán)上了嗎,這家伙慢不是他的錯(cuò),扯我們后腿這就是他的錯(cuò)了啊。傳輸一次數(shù)據(jù),我們要執(zhí)行好多次 I/O 端口讀寫(xiě),我們寶貴的時(shí)間都浪費(fèi)在這上面了!”,二號(hào)車間的虎子一臉幽怨的說(shuō)到。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

“嗨,我最近也為這事發(fā)愁呢,程序越來(lái)越多,讀寫(xiě)硬盤(pán)的時(shí)間越來(lái)越多了,尤其是那個(gè)叫 MySQL 的,老讓我訪問(wèn)硬盤(pán),可累死我了。”

沒(méi)想到我倆都憋了一肚子苦水呢。

這時(shí),平日里愛(ài)拍老板馬屁的八號(hào)車間老大說(shuō)了一句話:“你們說(shuō)的問(wèn)題確實(shí)存在,這工作太沒(méi)技術(shù)含量了,就是個(gè)體力活嘛,要不咱給老板說(shuō)說(shuō),讓他外包出去吧。”

我倆一聽(tīng),妙啊,要是能把這體力活外包出去,那可簡(jiǎn)直太好了,我們就可以專心做我們的專職工作了。

“你跟老板平時(shí)走得近,這事你去說(shuō)吧”,我給虎子使了個(gè)眼色,一起攛掇老八去說(shuō)這事。

“行,我去就我去”。

還別說(shuō),領(lǐng)導(dǎo)立馬就同意了這個(gè)想法,畢竟能提高我們的工作效率,他自然是舉雙手歡迎。

沒(méi)過(guò)多久,就成立了一個(gè)外包團(tuán)隊(duì),獨(dú)立出我們廠子,專門(mén)來(lái)負(fù)責(zé)這件事。

和我們 CPU 一樣,他們也提供了幾個(gè)寄存器,傳輸數(shù)據(jù)的時(shí)候,只需要設(shè)置一下這些寄存器的內(nèi)容,告訴他們要傳輸哪里的數(shù)據(jù),從哪到哪,長(zhǎng)度是多少,接下來(lái)的事情我們就不用操心了,交由他們來(lái)完成。

我們就可以騰出功夫做其他事情,等數(shù)據(jù)傳輸完畢了,他們?cè)儆弥袛嗟姆绞礁嬖V我們,我們直接去處理就好了,省去了讓我們親自去搬運(yùn)的過(guò)程,真是爽的飛起!

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

后來(lái),我們給這項(xiàng)技術(shù)也取了一個(gè)名字,叫 Direct Memory Access,直接存儲(chǔ)器訪問(wèn),簡(jiǎn)稱 DMA,這個(gè)外包團(tuán)隊(duì)就是 Dmac,DMA 控制器。

DMA 全面開(kāi)花

前幾天的月總結(jié)會(huì)上,領(lǐng)導(dǎo)表?yè)P(yáng)了老八,說(shuō)多虧他的建議讓廠里的生產(chǎn)效率大大提升。早知道,當(dāng)初就不攛掇老八去跟老板提建議了,我自己去。

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

正想著走神,突然想到了一個(gè)問(wèn)題,這一次我打算抓住機(jī)會(huì)掙個(gè)表現(xiàn)。

“老板,這個(gè) DMA 技術(shù)好是好,但現(xiàn)在只能用于硬盤(pán)哦。最近網(wǎng)卡那家伙數(shù)據(jù)包也挺多的,我花了好多時(shí)間去把數(shù)據(jù)包從網(wǎng)卡讀取到內(nèi)存中,又低效又沒(méi)有技術(shù)含量,可不可以把這技術(shù)推廣到網(wǎng)卡上啊?”,我起身說(shuō)到。

老板點(diǎn)了點(diǎn)頭,若有所思。

二號(hào)車間虎子見(jiàn)狀也起身說(shuō)到:“老板,除了硬盤(pán)和網(wǎng)卡,顯示器也有這個(gè)需求。我經(jīng)常要疲于奔波于把內(nèi)存數(shù)據(jù)傳輸?shù)斤@示器,也是勞神勞力,建議 DMA 技術(shù)也推廣到顯示器呢。”

老板聽(tīng)完,皺了皺眉頭說(shuō)到,“這個(gè)不同設(shè)備之間的差別還是挺大的,沒(méi)法通用。難不成我們要為每個(gè)設(shè)備成立一個(gè)外包團(tuán)隊(duì)?這成本有點(diǎn)高啊···”

老板果然還是老板,還是把成本考慮在第一位。

這時(shí),愛(ài)拍馬屁的老八又說(shuō)話了,“老板說(shuō)的是。我倒是有個(gè)建議,這個(gè) DMA 推廣到網(wǎng)卡、顯示器這些單位也可以,不過(guò)讓他們自己掏錢來(lái)增加 DMAC,按照他們各自不同的需求來(lái)做。咱們不能當(dāng)這冤大頭。”

老板一聽(tīng),喜形于色,大聲叫好!

CPU明明8個(gè)核,網(wǎng)卡為啥拼命折騰1號(hào)核?

 

就這樣,很快我們就把這項(xiàng)技術(shù)推廣了出去,主板上以網(wǎng)卡、顯示器、攝像頭為首的那些個(gè)單位為了不落后于人,紛紛擁抱變化,集成了 DMAC。

我們得到了徹底的解放,再也不用做枯燥的搬運(yùn)工了~

彩蛋:“阿 Q,聽(tīng)說(shuō)了嗎,最近 linux 帝國(guó)新成立了一個(gè)公司,居然繞過(guò)我們 CPU 就能把數(shù)據(jù)從網(wǎng)卡寫(xiě)入硬盤(pán)中”。

“不可能啊,至少得經(jīng)過(guò)我們拷貝一下吧”,“根本不用,他們號(hào)稱是零拷貝技術(shù)”。預(yù)知后事如何,請(qǐng)關(guān)注后續(xù)精彩······

作者:軒轅之風(fēng)

編輯:陶家龍

出處:轉(zhuǎn)載自微信公眾號(hào)編程技術(shù)宇宙(ID:xuanyuancoding)

分享到:
標(biāo)簽:CPU
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定