當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]點(diǎn)擊上方「嵌入式云IOT技術(shù)圈」,選擇「置頂公眾號」第一時(shí)間查看嵌入式筆記!1.C語言中,修飾符volatile含義是什么?其應(yīng)用場合有哪些?volatile提醒編譯器它后面所定義的變量隨時(shí)都有可能改變,因此編譯后的程序每次需要存儲或讀取這個(gè)變量的時(shí)候,都會直接從變量地址中讀取數(shù)...

嵌入式云IOT技術(shù)圈" data-alias="" data-signature="分享單片機(jī)、嵌入式Linux/Android、物聯(lián)網(wǎng)等相關(guān)產(chǎn)品項(xiàng)目開發(fā)經(jīng)驗(yàn),打造最硬核嵌入式技術(shù)公眾號。" data-from="0">

點(diǎn)擊上方「嵌入式云IOT技術(shù)圈」,選擇「置頂公眾號」第一時(shí)間查看嵌入式筆記!

1. C語言中,修飾符volatile含義是什么?其應(yīng)用場合有哪些?

volatile提醒編譯器它后面所定義的變量隨時(shí)都有可能改變,因此編譯后的程序每次需要存儲或讀取這個(gè)變量的時(shí)候,都會直接從變量地址中讀取數(shù)據(jù)。如果沒有volatile關(guān)鍵字,則編譯器可能優(yōu)化讀取和存儲,可能暫時(shí)使用寄存器中的值,如果這個(gè)變量由別的程序更新了的話,將出現(xiàn)不一致的現(xiàn)象。

2. 請問TCP/IP協(xié)議分為哪幾層?FTP協(xié)議在哪一層?

ISO/OSI的參考模型共有7層,由低層至高層分別為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層

物理層:

在物理媒體上傳輸原始的數(shù)據(jù)比特流。?
數(shù)據(jù)鏈路層:

將數(shù)據(jù)分成一個(gè)個(gè)數(shù)據(jù)幀,以數(shù)據(jù)幀為單位傳輸。有應(yīng)有答,遇錯(cuò)重發(fā)。?
網(wǎng)絡(luò)層:

將數(shù)據(jù)分成一定長度的分組,將分組穿過通信子網(wǎng)。?
傳輸層:

提供不具體網(wǎng)絡(luò)的高效、經(jīng)濟(jì)、透明的端到端數(shù)據(jù)傳輸服務(wù)。?
會話層:

進(jìn)程間的對話也稱為會話,會話層管理不同主機(jī)上各進(jìn)程間的對話。?
表示層:

為應(yīng)用層進(jìn)程提供格式化的表示和轉(zhuǎn)換數(shù)據(jù)服務(wù)。?
應(yīng)用層:

提供應(yīng)用程序訪問OSI環(huán)境的手段。
應(yīng)用層:

TELNET、FTP、TFTP、SMTP、SNMP、HTTP、BOOTP、DHCP、DNS?
表示層:

文本:ASCII,EBCDIC
圖形:TIFF,JPEG,GIF,PICT
聲音:MIDI,MPEG,QUICKTIME
會話層:NFS、SQL、RPC 、X-WINDOWS、ASP(APPTALK會話協(xié)議)、SCP
傳輸層:TCP、UDP、SPX
網(wǎng)絡(luò)層:IP、IPX、ICMP、RIP、OSPF(Open Shortest Path First開放式最短路徑優(yōu)先)?
數(shù)據(jù)鏈路層:SDLC、HDLC、PPP、STP(Spanning Tree Protocol)、幀中繼?
物理層:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45

3. 在網(wǎng)絡(luò)應(yīng)用中,函數(shù)htons,htonl,ntohs,ntohl的作用是什么?

uint32_t?htonl(uint32_t?hostlong);//32位的主機(jī)字節(jié)序轉(zhuǎn)換到網(wǎng)絡(luò)字節(jié)序?
uint16_t?htons(uint16_t?hostshort);//16位的主機(jī)字節(jié)序轉(zhuǎn)換到網(wǎng)絡(luò)字節(jié)序?
uint32_t?ntohl(uint32_t?netlong);//32位的網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換到主機(jī)字節(jié)序?
uint16_t?ntohs(uint16_t?netshort);//16位的網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換到主機(jī)字節(jié)序?
(皆為大小端的改變)

4. C語言中static函數(shù)與普通函數(shù)的區(qū)別是什么?

靜態(tài)函數(shù)

在函數(shù)的返回類型前加上關(guān)鍵字static,函數(shù)就被定義成為靜態(tài)函數(shù)。函數(shù)的定義和聲明默認(rèn)情況下是extern的,但靜態(tài)函數(shù)只是在聲明他的文件當(dāng)中可見,不能被其他文件所用。

定義靜態(tài)函數(shù)的好處:

  • 其他文件中可以定義相同名字的函數(shù),不會發(fā)生沖突
  • 靜態(tài)函數(shù)不能被其他文件所用。
局部靜態(tài)變量

在局部變量之前加上關(guān)鍵字static,局部變量就被定義成為一個(gè)局部靜態(tài)變量。

  • 內(nèi)存中的位置:靜態(tài)存儲區(qū)
  • 初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動(dòng)初始化為0(自動(dòng)對象的值是任意的,除非他被顯示初始化)
  • 作用域:作用域仍為局部作用域,當(dāng)定義它的函數(shù)或者語句塊結(jié)束的時(shí)候,作用域隨之結(jié)束。
全局靜態(tài)變量

在全局變量之前加上關(guān)鍵字static,全局變量就被定義成為一個(gè)全局靜態(tài)變量。

  • 內(nèi)存中的位置:靜態(tài)存儲區(qū)(靜態(tài)存儲區(qū)在整個(gè)程序運(yùn)行期間都存在)
  • 初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動(dòng)初始化為0(自動(dòng)對象的值是任意的,除非他被顯示初始化)
  • 作用域:全局靜態(tài)變量在聲明他的文件之外是不可見的。準(zhǔn)確地講從定義之處開始到文件結(jié)尾。
好處:

定義全局靜態(tài)變量的好處:

  • 不會被其他文件所訪問,修改
  • 其他文件中可以使用相同名字的變量,不會發(fā)生沖突

5. 請實(shí)現(xiàn)內(nèi)存復(fù)制函數(shù)void memcpy(void *dst const void *src,int size)

void?*memcpy(void?*dest,?const?void?*src,?unsigned?int?size)
{

????if(dest==NULL?||?src==NULL)
????{
????????return?dest;
????}
????
????void?*temp?=?dest;

????while(size--)
????{
????????*(char?*)dest?=?*(char?*)src;
????????dest?=?(char?*)dest? ?1;
????????src?=?(char?*)src? ?1;
????}

????return?temp;
}

6、進(jìn)程間通信的方式有

  1. 管道(pipe),流管道(s_pipe)和有名管道(FIFO)
  2. 信號(signal)
  3. 消息隊(duì)列
  4. 共享內(nèi)存
  5. 信號量
  6. 套接字(socket)

7、IPv4把所有的IP地址分為A、B、C、D、E五類。請寫出B類地址和C類地址的范圍和掩碼,D類地址的用途是什么?

A類IP地址范圍:0.0.0.0到127.255.255.255

B類IP地址范圍:128.0.0.0到191.255.255.255

C類IP地址范圍:192.0.0.0到223.255.255.255

D類IP地址范圍:224.0.0.0到239.255.255.255

E類IP地址范圍:224.0.0.0到254.255.255.255

D類地址用于多點(diǎn)播送

E類地址保留,僅作實(shí)驗(yàn)和開發(fā)用

全零(“0.0.0.0”)地址指任意網(wǎng)絡(luò)。

全“1”的IP地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址。

8、請簡述在linux中多進(jìn)程程序和多線程程序的區(qū)別。

9、寫一個(gè)標(biāo)準(zhǔn)的宏MINX,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)?

#define?MIN(A,?B)????((A)>(B)??(B)?:?(A))

10、什么是MMU,MMU的作用

MMU是Memory Management Unit(內(nèi)存管理單元)

1)虛擬內(nèi)存。有了虛擬內(nèi)存,可以在處理器上運(yùn)行比實(shí)際物理內(nèi)存大的應(yīng)用程序。為了使用虛擬內(nèi)存,操作系統(tǒng)通常要設(shè)置一個(gè)交換分區(qū)(通常是硬盤),通過將不活躍的內(nèi)存中的數(shù)據(jù)放入交換分區(qū),操作系統(tǒng)可以騰出其空間來為其它的程序服務(wù)。虛擬內(nèi)存是通過虛擬地址來實(shí)現(xiàn)的。

2)內(nèi)存保護(hù)。根據(jù)需要對特定的內(nèi)存區(qū)塊的訪問進(jìn)行保護(hù),通過這一功能,我們可以將特定的內(nèi)存塊設(shè)置成只讀、只寫或是可同時(shí)讀寫

11、關(guān)鍵字volatile有什么含義,并給出幾個(gè)應(yīng)用場合。

volatile的本意是“易變的” 由于訪問寄存器的速度要快過RAM,所以編譯器一般都會作減少存取外部RAM的優(yōu)化,但有可能會讀臟數(shù)據(jù)。當(dāng)要求使用volatile 聲明的變量的值的時(shí)候,系統(tǒng)總是重新從它所在的內(nèi)存讀取數(shù)據(jù),即使它前面的指令剛剛從該處讀取過數(shù)據(jù)。而且讀取的數(shù)據(jù)立刻被保存。

一般說來,volatile用在如下的幾個(gè)地方:

  • 1、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;
  • 2、多任務(wù)環(huán)境下各任務(wù)間共享的標(biāo)志應(yīng)該加volatile;
  • 3、存儲器映射的硬件寄存器通常也要加volatile說明,因?yàn)槊看螌λ淖x寫都可能由不同意義;

12、“棧 stack”和“堆 heap”有什么區(qū)別,寫兩個(gè)函數(shù)分別在棧上和堆上分配內(nèi)存,在堆上分配內(nèi)存應(yīng)注意哪些問題?

  • 1.申請方式
stack:

由系統(tǒng)自動(dòng)分配。例如,聲明在函數(shù)中一個(gè)局部變量int b; 系統(tǒng)自動(dòng)在棧中為b開辟空間

heap:

需要程序員自己申請,并指明大小,在c中malloc函數(shù)p1 = (char *)malloc(10);

  • 2.申請后系統(tǒng)的響應(yīng)
棧:

只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常提示棧溢出。

堆:

首先應(yīng)該知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請時(shí),

會遍歷該鏈表,尋找第一個(gè)空間大于所申請空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除,并將該結(jié)點(diǎn)的空間分配給程序.

  • 3.申請大小的限制
棧:

棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,是一塊連續(xù)的內(nèi)存的區(qū)域,在WINDOWS下,棧的大小是2M ,如果申請的空間超過棧的剩余空間時(shí),將提示overflow。因此,能從棧獲得的空間較小。(有限內(nèi)存)

堆:

堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。(自己分配)

void?fun(void)
{
????int?a[10];
????int?*p?=?(int?*)malloc(10*sizeof(int));
????if(p?==?NULL)
????{
????????return;
????}
}

13、請指出下面程序的錯(cuò)誤

unsigned?char?i?=?10;?
char?b?=?100;?
char*?p;?

void?f(void)?
{?
????While(–-i>=0)?
????{?
???????*(p )?=?b;?
????}?
}
p沒有分配空間

i是無符號型,自減操作會引發(fā)死循環(huán)

14、TCP/IP通信建立的過程怎樣,端口有什么作用?

端口作用:(連接作用)就是讓運(yùn)輸層的各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進(jìn)程

嵌入式技術(shù)公眾號。" data-from="0">

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉