常用的操作系统知识
為什么要有操作系統(tǒng)
現(xiàn)代計(jì)算機(jī)系統(tǒng)是由一個(gè)或者多個(gè)處理器,主存,磁盤,打印機(jī),鍵盤,鼠標(biāo)顯示器,網(wǎng)絡(luò)接口以及各種其他輸入,輸出設(shè)備組成的復(fù)雜系統(tǒng),每位程序員不可能掌握所有系統(tǒng)實(shí)現(xiàn)的細(xì)節(jié),并且管理優(yōu)化這些部件是一件挑戰(zhàn)性極強(qiáng)的工作。所以,我們需要為計(jì)算機(jī)安裝一層軟件,成為操作系統(tǒng),任務(wù)就是用戶程序提供一個(gè)簡(jiǎn)單清晰的計(jì)算機(jī)模型,并管理以上所有設(shè)備。
定義也就有了:操作系統(tǒng)是一個(gè)用來(lái)協(xié)調(diào)、管理和控制計(jì)算機(jī)硬件和軟件資源的系統(tǒng)程序,它位于硬件和應(yīng)用程序之間。(程序是運(yùn)行在系統(tǒng)上的具有某種功能的軟件,比如說(shuō)瀏覽器,音樂(lè)播放器等。)
操作系統(tǒng)的發(fā)展歷史
手工階段
早期的程序員將對(duì)應(yīng)于程序和數(shù)據(jù)的已穿孔的紙帶(或卡片)裝入輸入機(jī),然后啟動(dòng)輸入機(jī)把程序和數(shù)據(jù)輸入計(jì)算機(jī)內(nèi)存,接著通過(guò)控制臺(tái)開(kāi)關(guān)啟動(dòng)程序針對(duì)數(shù)據(jù)運(yùn)行;計(jì)算完畢,打印機(jī)輸出計(jì)算結(jié)果;用戶取走結(jié)果并卸下紙帶(或卡片)后,才讓下一個(gè)用戶上機(jī)。
手工操作方式有兩個(gè)特點(diǎn):
(1)用戶獨(dú)占全機(jī)。不會(huì)出現(xiàn)因資源已被其他用戶占用而等待的現(xiàn)象,但資源的利用率低。 (2)CPU 等待手工操作。CPU的利用不充分。 ? 20世紀(jì)50年代后期,出現(xiàn)人機(jī)矛盾:手工操作的慢速度和計(jì)算機(jī)的高速度之間形成了尖銳矛盾,手工操作方式已嚴(yán)重?fù)p害了系統(tǒng)資源的利用率(使資源利用率降為百分之幾,甚至更低),不能容忍。唯一的解決辦法:只有擺脫人的手工操作,實(shí)現(xiàn)作業(yè)的自動(dòng)過(guò)渡。這樣就出現(xiàn)了成批處理。批處理階段
出現(xiàn)了批處理系統(tǒng),它是加載在計(jì)算機(jī)上的一個(gè)系統(tǒng)軟件,在它的控制下,計(jì)算機(jī)能夠自動(dòng)地、成批地處理一個(gè)或多個(gè)用戶的作業(yè)(這作業(yè)包括程序、數(shù)據(jù)和命令)。
?為了解決上面手工階段的問(wèn)題,所以產(chǎn)生了批處理系統(tǒng),而批處理系統(tǒng)又分為單道批處理和多道批處理。
單道批處理
系統(tǒng)對(duì)作業(yè)的處理是成批進(jìn)行的,但內(nèi)存中始終保持一道作業(yè)。該系統(tǒng)主要特征如下
1)自動(dòng)性:無(wú)需人工干預(yù)
2)順序性:磁帶上的各道作業(yè)順序進(jìn)入內(nèi)存,作業(yè)完成順序與其進(jìn)入內(nèi)存的順序,在正常情況下應(yīng)完全相同
3)單道性:內(nèi)存中只允許存在一道程序運(yùn)行
多道批處理
多道程序設(shè)計(jì)技術(shù)允許多個(gè)程序同時(shí)進(jìn)入內(nèi)存,并在操作系統(tǒng)的控制下交替運(yùn)行。內(nèi)存中的程序共享系統(tǒng)中各中硬、軟件資源。當(dāng)一道程序因I/O請(qǐng)求而暫停運(yùn)行時(shí),CPU便立即轉(zhuǎn)去運(yùn)行另一道程序。其主要特點(diǎn)如下:
1)多道:計(jì)算機(jī)內(nèi)存中同時(shí)允許多道相互獨(dú)立的程序
2)宏觀并行:同時(shí)進(jìn)入系統(tǒng)內(nèi)存的多道程序都處于運(yùn)行過(guò)程中,宏觀上在并行運(yùn)行
3)微觀串行:內(nèi)存中多道程序流輪流占有CPU,交替執(zhí)行
多道批處理系統(tǒng)的優(yōu)點(diǎn)是資源的利用率高,系統(tǒng)吞吐量大,CPU和其他資源都處于忙碌狀態(tài)。缺點(diǎn)是用戶響應(yīng)時(shí)間較長(zhǎng)。不提供人機(jī)交互能力,用戶既不了解自己程序的運(yùn)行情況,也不能控制計(jì)算機(jī)。
分時(shí)系統(tǒng)
由于CPU速度不斷提高和采用分時(shí)技術(shù),一臺(tái)計(jì)算機(jī)可同時(shí)連接多個(gè)用戶終端,而每個(gè)用戶可在自己的終端上聯(lián)機(jī)使用計(jì)算機(jī),好象自己獨(dú)占機(jī)器一樣。
分時(shí)技術(shù):把處理機(jī)的運(yùn)行時(shí)間分成很短的時(shí)間片,按時(shí)間片輪流把處理機(jī)分配給各聯(lián)機(jī)作業(yè)使用。
若某個(gè)作業(yè)在分配給它的時(shí)間片內(nèi)不能完成其計(jì)算,則該作業(yè)暫時(shí)中斷,把處理機(jī)讓給另一作業(yè)使用,等待下一輪時(shí)再繼續(xù)其運(yùn)行。由于計(jì)算機(jī)速度很快,作業(yè)運(yùn)行輪轉(zhuǎn)得很快,給每個(gè)用戶的印象是,好象他獨(dú)占了一臺(tái)計(jì)算機(jī)。而每個(gè)用戶可以通過(guò)自己的終端向系統(tǒng)發(fā)出各種操作控制命令,在充分的人機(jī)交互情況下,完成作業(yè)的運(yùn)行。
具有上述特征的計(jì)算機(jī)系統(tǒng)稱為分時(shí)系統(tǒng),它允許多個(gè)用戶同時(shí)聯(lián)機(jī)使用計(jì)算機(jī)。
特點(diǎn):
(1)多路性。若干個(gè)用戶同時(shí)使用一臺(tái)計(jì)算機(jī)。微觀上看是各用戶輪流使用計(jì)算機(jī);宏觀上看是各用戶并行工作。
(2)交互性。用戶可根據(jù)系統(tǒng)對(duì)請(qǐng)求的響應(yīng)結(jié)果,進(jìn)一步向系統(tǒng)提出新的請(qǐng)求。這種能使用戶與系統(tǒng)進(jìn)行人機(jī)對(duì)話的工作方式,明顯地有別于批處理系統(tǒng),因而,分時(shí)系統(tǒng)又被稱為交互式系統(tǒng)。
(3)獨(dú)立性。用戶之間可以相互獨(dú)立操作,互不干擾。系統(tǒng)保證各用戶程序運(yùn)行的完整性,不會(huì)發(fā)生相互混淆或破壞現(xiàn)象。
(4)及時(shí)性。系統(tǒng)可對(duì)用戶的輸入及時(shí)作出響應(yīng)。分時(shí)系統(tǒng)性能的主要指標(biāo)之一是響應(yīng)時(shí)間,它是指:從終端發(fā)出命令到系統(tǒng)予以應(yīng)答所需的時(shí)間。
分時(shí)系統(tǒng)的主要目標(biāo):對(duì)用戶響應(yīng)的及時(shí)性,即不至于用戶等待每一個(gè)命令的處理時(shí)間過(guò)長(zhǎng)。
分時(shí)系統(tǒng)可以同時(shí)接納數(shù)十個(gè)甚至上百個(gè)用戶,由于內(nèi)存空間有限,往往采用對(duì)換(又稱交換)方式的存儲(chǔ)方法。即將未“輪到”的作業(yè)放入磁盤,一旦“輪到”,再將其調(diào)入內(nèi)存;而時(shí)間片用完后,又將作業(yè)存回磁盤(俗稱“滾進(jìn)”、“滾出“法),使同一存儲(chǔ)區(qū)域輪流為多個(gè)用戶服務(wù)。
多用戶分時(shí)系統(tǒng)是當(dāng)今計(jì)算機(jī)操作系統(tǒng)中最普遍使用的一類操作系統(tǒng)。
實(shí)時(shí)操作系統(tǒng)
雖然多道批處理系統(tǒng)和分時(shí)系統(tǒng)能獲得較令人滿意的資源利用率和系統(tǒng)響應(yīng)時(shí)間,但卻不能滿足實(shí)時(shí)控制與實(shí)時(shí)信息處理兩個(gè)應(yīng)用領(lǐng)域的需求。于是就產(chǎn)生了實(shí)時(shí)系統(tǒng),即系統(tǒng)能夠及時(shí)響應(yīng)隨機(jī)發(fā)生的外部事件,并在嚴(yán)格的時(shí)間范圍內(nèi)完成對(duì)該事件的處理。
實(shí)時(shí)系統(tǒng)在一個(gè)特定的應(yīng)用中常作為一種控制設(shè)備來(lái)使用。
實(shí)時(shí)系統(tǒng)可分成兩類:
(1)實(shí)時(shí)控制系統(tǒng)。當(dāng)用于飛機(jī)飛行、導(dǎo)彈發(fā)射等的自動(dòng)控制時(shí),要求計(jì)算機(jī)能盡快處理測(cè)量系統(tǒng)測(cè)得的數(shù)據(jù),及時(shí)地對(duì)飛機(jī)或?qū)椷M(jìn)行控制,或?qū)⒂嘘P(guān)信息通過(guò)顯示終端提供給決策人員。當(dāng)用于軋鋼、石化等工業(yè)生產(chǎn)過(guò)程控制時(shí),也要求計(jì)算機(jī)能及時(shí)處理由各類傳感器送來(lái)的數(shù)據(jù),然后控制相應(yīng)的執(zhí)行機(jī)構(gòu)。
(2)實(shí)時(shí)信息處理系統(tǒng)。當(dāng)用于預(yù)定飛機(jī)票、查詢有關(guān)航班、航線、票價(jià)等事宜時(shí),或當(dāng)用于銀行系統(tǒng)、情報(bào)檢索系統(tǒng)時(shí),都要求計(jì)算機(jī)能對(duì)終端設(shè)備發(fā)來(lái)的服務(wù)請(qǐng)求及時(shí)予以正確的回答。此類對(duì)響應(yīng)及時(shí)性的要求稍弱于第一類。
實(shí)時(shí)操作系統(tǒng)的主要特點(diǎn):
(1)及時(shí)響應(yīng)。每一個(gè)信息接收、分析處理和發(fā)送的過(guò)程必須在嚴(yán)格的時(shí)間限制內(nèi)完成。
(2)高可靠性。需采取冗余措施,雙機(jī)系統(tǒng)前后臺(tái)工作,也包括必要的保密措施等。
內(nèi)核態(tài)和用戶態(tài)
操作系統(tǒng)結(jié)構(gòu)
操作系統(tǒng)的發(fā)展大致經(jīng)歷了無(wú)結(jié)構(gòu)操作系統(tǒng)(第一代),模塊化的操作系統(tǒng)(第二代),分層式結(jié)構(gòu)(第三代),這些稱為傳統(tǒng)操作系統(tǒng)結(jié)構(gòu)。而微內(nèi)核操作系統(tǒng)是現(xiàn)代操作系統(tǒng)結(jié)構(gòu),他是在C/S(客戶端/服務(wù)器)這種架構(gòu)方式上發(fā)展起來(lái)的。傳統(tǒng)操作系統(tǒng)的內(nèi)容,大家只需要了解就可以了。重點(diǎn)在微內(nèi)核操作系統(tǒng)。
微內(nèi)核操作系統(tǒng)
????微內(nèi)核操作系統(tǒng)往往采用的是C/S模式,它把操作系統(tǒng)分為微內(nèi)核和多個(gè)服務(wù)器。微內(nèi)核主要用于(1)實(shí)現(xiàn)與硬件緊密相關(guān)的處理,(2)實(shí)現(xiàn)一些較基本的功能,(3)負(fù)責(zé)客戶和服務(wù)器之間的通信。
內(nèi)核的功能
由于微內(nèi)核結(jié)構(gòu)的存在,那么程序就運(yùn)行在兩種不同的地方,內(nèi)核態(tài)和用戶態(tài),內(nèi)核態(tài)與用戶態(tài)是操作系統(tǒng)的兩種運(yùn)行級(jí)別,跟intel cpu沒(méi)有必然的聯(lián)系。
特權(quán)級(jí)
對(duì)于任何一個(gè)操作系統(tǒng)來(lái)說(shuō),創(chuàng)建一個(gè)新的進(jìn)程都屬于核心功能,因?yàn)樗龊芏嗟讓蛹?xì)致的工作,消耗系統(tǒng)的物理資源,比如分配物理內(nèi)存,從父進(jìn)程拷貝相關(guān)信息,拷貝設(shè)置頁(yè)目錄頁(yè)表等,這些顯然不能隨便讓哪個(gè)程序就能去做,于是就自然引起了特權(quán)級(jí)別的概念,顯然,最關(guān)鍵性的權(quán)力必須由高特權(quán)級(jí)別的程序來(lái)執(zhí)行,這樣才能做到幾種管理,減少有限資源的訪問(wèn)和使用沖突。特權(quán)級(jí)別顯然是非常有效的管理和控制程序的執(zhí)行手段,因此在硬件對(duì)特權(quán)級(jí)別做了很多支持,就Intel的x86架構(gòu)的CPU來(lái)說(shuō),一共由0~3四個(gè)特權(quán)級(jí),0為最高,3為最低,硬件上在執(zhí)行每條執(zhí)行的時(shí)候都會(huì)對(duì)指令所具有的特權(quán)級(jí)做相應(yīng)的檢查,相關(guān)概念有CPL,DPL和RPL,這里不在多闡述,硬件已經(jīng)提供了一套特權(quán)級(jí)使用的相關(guān)機(jī)制,軟件自然就是好好利用這個(gè)問(wèn)題,這屬于操作系統(tǒng)要做的事情,對(duì)于Unix/Linux來(lái)說(shuō),只使用了0級(jí)特權(quán)和3級(jí)特權(quán)。也就是說(shuō)在Unix和Linux中,一條工作在0級(jí)特權(quán)的指令具有CPU能提供的最高權(quán)力,而一條工作在3級(jí)特權(quán)的指令具有CPU提供的最低或者說(shuō)最基本的權(quán)力。
內(nèi)核態(tài)和用戶態(tài)
根據(jù)上面說(shuō)的特權(quán)級(jí),來(lái)理解用戶態(tài)和內(nèi)核態(tài)就比較好理解了,當(dāng)程序運(yùn)行在3級(jí)特權(quán)的時(shí)候就可以稱之為運(yùn)行在用戶態(tài),因?yàn)檫@是最低特權(quán)級(jí),是普通的用戶進(jìn)行運(yùn)行的特權(quán)級(jí),大部分用戶之間面對(duì)的程序都是運(yùn)行在用戶態(tài);反之,當(dāng)程序運(yùn)行在0級(jí)特權(quán)級(jí)上時(shí),就可以稱之為是運(yùn)行在內(nèi)核態(tài)。雖然用戶態(tài)下和內(nèi)核態(tài)下工作的程序有很多差距,但是更重要的差別就在于特權(quán)級(jí)的不同,即權(quán)力的不同。運(yùn)行在用戶態(tài)下的程序不能直接訪問(wèn)操作系統(tǒng)內(nèi)核數(shù)據(jù)結(jié)構(gòu)和程序。當(dāng)我們?cè)谙到y(tǒng)中執(zhí)行一個(gè)程序時(shí),大部分時(shí)間是運(yùn)行在用戶態(tài)下的,在其需要操作系統(tǒng)幫助完成某些它沒(méi)有權(quán)力和能力完成的工作時(shí)就會(huì)切換到內(nèi)核態(tài)。
內(nèi)核態(tài):當(dāng)一個(gè)任務(wù)(進(jìn)程)執(zhí)行系統(tǒng)調(diào)用而陷入內(nèi)核代碼中執(zhí)行時(shí),我們就稱進(jìn)程處于內(nèi)核運(yùn)行態(tài)(或簡(jiǎn)稱為內(nèi)核態(tài))。其他的屬于用戶態(tài)。用戶程序運(yùn)行在用戶態(tài),操作系統(tǒng)運(yùn)行在內(nèi)核態(tài).(操作系統(tǒng)內(nèi)核運(yùn)行在內(nèi)核態(tài),而服務(wù)器運(yùn)行在用戶態(tài))。用戶態(tài)不能干擾內(nèi)核態(tài).所以CPU指令就有兩種,特權(quán)指令和非特權(quán)指令.不同的狀態(tài)對(duì)應(yīng)不同的指令。特權(quán)指令:只能由操作系統(tǒng)內(nèi)核部分使用,不允許用戶直接使用的指令。如,I/O指令、置終端屏蔽指令、清內(nèi)存、建存儲(chǔ)保護(hù)、設(shè)置時(shí)鐘指令(這幾種記好,屬于內(nèi)核態(tài))。?非特權(quán)指令:所有程序均可直接使用。?
所以:
系統(tǒng)態(tài)(核心態(tài)、特態(tài)、管態(tài)):執(zhí)行全部指令。?
????用戶態(tài)(常態(tài)、目態(tài)):執(zhí)行非特權(quán)指令。
?用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換
用戶態(tài)切換到內(nèi)核態(tài)的3種方式
- 系統(tǒng)調(diào)用
- 系統(tǒng)調(diào)用這是用戶態(tài)進(jìn)程主動(dòng)要求切換到內(nèi)核態(tài)的一種方式,用戶態(tài)進(jìn)程通過(guò)系統(tǒng)調(diào)用申請(qǐng)使用操作系統(tǒng)提供的服務(wù)程序完成工作,比如執(zhí)行了一個(gè)創(chuàng)建新進(jìn)程的系統(tǒng)調(diào)用。而系統(tǒng)調(diào)用的機(jī)制其核心還是使用了操作系統(tǒng)為用戶特別開(kāi)放的一個(gè)中斷來(lái)實(shí)現(xiàn),例如Linux的int?80h中斷。
- 異常
- 當(dāng)CPU在執(zhí)行運(yùn)行在用戶態(tài)下的程序時(shí),發(fā)生了某些事先不可知的異常,這時(shí)會(huì)觸發(fā)由當(dāng)前運(yùn)行進(jìn)程切換到處理此異常的內(nèi)核相關(guān)程序中,也就轉(zhuǎn)到了內(nèi)核態(tài),比如缺頁(yè)異常。
- 外圍設(shè)備的中斷
- 當(dāng)外圍設(shè)備完成用戶請(qǐng)求的操作后,會(huì)向CPU發(fā)出相應(yīng)的中斷信號(hào),這時(shí)CPU會(huì)暫停執(zhí)行下一條即將要執(zhí)行的指令轉(zhuǎn)而去執(zhí)行與中斷信號(hào)對(duì)應(yīng)的處理程序,如果先前執(zhí)行的指令是用戶態(tài)下的程序,那么這個(gè)轉(zhuǎn)換的過(guò)程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換。比如硬盤讀寫操作完成,系統(tǒng)會(huì)切換到硬盤讀寫的中斷處理程序中執(zhí)行后續(xù)操作等。
這3種方式是系統(tǒng)在運(yùn)行時(shí)由用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)的最主要方式,其中系統(tǒng)調(diào)用可以認(rèn)為是用戶進(jìn)程主動(dòng)發(fā)起的,異常和外圍設(shè)備中斷則是被動(dòng)的。
具體的切換操作
從觸發(fā)方式上看,可以認(rèn)為存在前述3種不同的類型,但是從最終實(shí)際完成由用戶態(tài)到內(nèi)核態(tài)的切換操作上來(lái)說(shuō),涉及的關(guān)鍵步驟是完全一致的,沒(méi)有任何區(qū)別,都相當(dāng)于執(zhí)行了一個(gè)中斷響應(yīng)的過(guò)程,因?yàn)橄到y(tǒng)調(diào)用實(shí)際上最終是中斷機(jī)制實(shí)現(xiàn)的,而異常和中斷的處理機(jī)制基本上也是一致的,關(guān)于它們的具體區(qū)別這里不再贅述。關(guān)于中斷處理機(jī)制的細(xì)節(jié)和步驟這里也不做過(guò)多分析,涉及到由用戶態(tài)切換到內(nèi)核態(tài)的步驟主要包括:
- 從當(dāng)前進(jìn)程的描述符中提取其內(nèi)核棧的ss0及esp0信息。
- 使用ss0和esp0指向的內(nèi)核棧將當(dāng)前進(jìn)程的cs,eip,eflags,ss,esp信息保存起來(lái),這個(gè)過(guò)程也完成了由用戶棧到內(nèi)核棧的切換過(guò)程,同時(shí)保存了被暫停執(zhí)行的程序的下一條指令。
- 將先前由中斷向量檢索得到的中斷處理程序的cs,eip信息裝入相應(yīng)的寄存器,開(kāi)始執(zhí)行中斷處理程序,這時(shí)就轉(zhuǎn)到了內(nèi)核態(tài)的程序執(zhí)行了。
常見(jiàn)的內(nèi)核態(tài)常見(jiàn)總結(jié)
前文已經(jīng)提到,內(nèi)核的功能:
(1)進(jìn)程(線程)管理 (進(jìn)程或者線程的調(diào)度)
(2)低級(jí)存儲(chǔ)器管理 (用戶程序邏輯空間到內(nèi)存空間的物理地址的變換)
(3)中斷和陷入管理 (中斷和陷入)
具體的:
(1)?I/O指令、置終端屏蔽指令、清內(nèi)存、建存儲(chǔ)保護(hù)、設(shè)置時(shí)鐘指令。?
(2)?中斷、異常、陷入,比如缺頁(yè)中斷等
(3)進(jìn)程(線程)管理
(4)系統(tǒng)調(diào)用,比如調(diào)用了設(shè)備驅(qū)動(dòng)程序
(5)用戶內(nèi)存地址的轉(zhuǎn)換(邏輯---> 物理映射)
并行和并發(fā)
?關(guān)于并行與并發(fā)說(shuō)有很多,這里列舉一些常見(jiàn)的說(shuō)法:
- 解釋一:并行是指兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生;而并發(fā)是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔發(fā)生。
- 解釋二:并行是在不同實(shí)體上的多個(gè)事件,并發(fā)是在同一實(shí)體上的多個(gè)事件。
- 解釋三:在一臺(tái)處理器上“同時(shí)”處理多個(gè)任務(wù),在多臺(tái)處理器上同時(shí)處理多個(gè)任務(wù)。如hadoop分布式集群
?簡(jiǎn)單理解就是:
并發(fā)是指一個(gè)處理器同時(shí)處理多個(gè)任務(wù)。
并行是指多個(gè)處理器或者是多核的處理器同時(shí)處理多個(gè)不同的任務(wù)。
并發(fā)是邏輯上的同時(shí)發(fā)生(simultaneous),而并行是物理上的同時(shí)發(fā)生。
來(lái)個(gè)比喻:并發(fā)是一個(gè)人同時(shí)吃三個(gè)饅頭,而并行是三個(gè)人同時(shí)吃三個(gè)饅頭。
同步與異步
同步和異步通常用來(lái)形容一次方法調(diào)用。
- 同步方法調(diào)用一旦開(kāi)始,調(diào)用者必須等到方法調(diào)用返回后,才能繼續(xù)后續(xù)的行為。
- 異步方法調(diào)用更像一個(gè)消息傳遞,一旦開(kāi)始,方法調(diào)用就會(huì)立即返回,調(diào)用者就可以繼續(xù)后續(xù)的操作。而,異步方法通常會(huì)在另外一個(gè)線程中,“真實(shí)”地執(zhí)行著。整個(gè)過(guò)程,不會(huì)阻礙調(diào)用者的工作。
?
轉(zhuǎn)載于:https://www.cnblogs.com/kuxingseng95/p/9418203.html
總結(jié)
- 上一篇: 石头自清洁扫拖机器人G10 Plus评测
- 下一篇: 前后端如何通信