色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux和C語言的學習方法你真的知道嗎?

Linux和C語言的學習方法你真的知道嗎? 時間:2022-05-26      來源:華清遠見

自開班以來已經近兩個月了,不能說所教知識都掌握得非常好,但至少還是能跟著老師步伐、理解關鍵知識點、正確完成作業的。現在還沒真正開始進入硬件方面的學習,但我相信對基本理論知識及編程開發的牢固掌握是后續深入學習的前提。因此,趁著現在正處與學習進度的轉折點,有必要對先前的知識作一下概括性總結。

★Linux的使用

開班的第一天,老師就給我們講了為什么要先學c、學linux:因為嵌入式的根本就是軟件驅動硬件,而C語言是最接近硬件的語言、有指針的概念、可以直接操作硬件,另外,功能復雜的硬件是含有操作系統的,這就需要我們選擇使用廣泛而開源的linux來學習。

◇Shell 命令

shell是一個命令行解釋器,命令行格式為:命令名稱、選項、參數,常用的命令有:cd進入目錄;ls顯示目錄下的文件;touch、mkdir創建文件、文件夾;mv、cp、rm移動、復制、刪除文件和文件夾;zip、gzip、tar壓縮和解壓文件;ln創建軟硬鏈接文件。   

◇文件管理、用戶管理

Linux是一個多用戶系統,它可以用adduser來創建多個用戶,并用su來進行不同用戶及用戶與管理員之間的切換;另外,與目錄結構屬于分區的windows不同,在Linux的文件系統中,分區屬于目錄結構。

◇軟件管理

ubuntu上的軟件包管理工具apt可以通過網絡很方便地完成軟件包的獲取、安裝、卸載、查詢等操作。比如,當我們在使用putty前需要安裝SSH的時候,就可以通過命令:sudo apt-get update、sudo apt-get install SSH 來安裝。

◇VI 編輯器,GCC 編譯器 

Vi是Linux系統中常用的一個文本編輯器,通過vi加上文件名可以對文件創建或編輯。三種模式中:命令模式是我們進入編輯器的第一模式,可以對文本進行剪切復制替換刪除操作;輸入模式可以是對文件進行常規編輯;底行模式可以保存文本并退出。vi編輯好的c文件需要被編譯二進制文件才可以被機器識別運行,而GCC 編譯器就承載著這樣的功能,它通過預處理、編譯、匯編、鏈接四個步驟完成該操作。

★C語言編程

C語言學習的開始就是掌握基本的語法規則,主要包括各種基本類型常量變量、運算符、控制流、函數的使用。這部分總的來說沒有什么難度,但有一些容易忽略的細節需要留意,如同為單目運算的*解引用和++操作同時使用時哪個優先運算;數組被定義后其空間大小和首地址不允許改變;要用strcmp()判斷字符串相等而不能直接用==;指針定義后但沒初始化會變成野指針,后續使用可能發生段錯誤;使用較大的數據時應在堆中開辟空間存放以防棧溢出。

☆數據結構

數據結構就是對數據進行人為的格式化規范化儲存,使得數據能夠快捷地增刪查改,不同的數據結構有不同的優缺點及主要用途,如順序表查找快增刪慢而鏈表查找滿增刪快。鑒于內核鏈表的重要性及以后使用的廣泛性,在此只做內核鏈表的總結。內核鏈表和雙向循環鏈表類似,與之不同的是,內核鏈表將數據和鏈表剝離開,并提供了很多的宏和封裝函數。其中非常重要的是list_for_each()、list_entry(),它們分別實現了對小結構體(循環鏈表)的遍歷操作、通過小結構體的地址反推找到大結構體的地址,從而通過大結構體得到其下的數據域。另外還有list_add()、list_del_init()封裝實現了對大結構體節點的插入、孤立刪除,不然自己搭建雙向循環鏈表的話,就需在頭插node節點時要寫上經典的四句指針域重連接指令:①node->next = head->next;②head->next->pre = node;③node->pre = head;④head->next = node;

☆文件IO

這里的iO指的是內存和磁盤間的文件交互,由于linux“一切皆文件的”的特性,其7種類型的文件都是可以被輸入輸出的。其間我們重點學習了文件IO和標準IO,他們的主要區別就是前者直接調用系統函數沒有緩沖區,而后者調用的是封裝好的庫函數有緩沖區。一般來說,文件IO是專門給文件使用的,而標準IO是專門給設備使用的。文件、標準io的打開和關閉所用的函數是相似的,只是一個有f一個沒f;但他們的讀寫函數差別就比較大了,文件io用的是read()、write(),而標準IO根據輸入輸出是否格式化分為printf、put、scanf、get,具體還會根據一字一行一塊地讀寫及讀寫目標地的不同而有所不同。另外還了解了下利用time()、ctime()來獲取標準時間并轉化為可閱讀化時間的時間編程,以及通過lstat()、opendir()、readdir()來查看目錄下的文件屬性。最后介紹了動靜態庫的概念及制作,前者在文件運行時才加載到可執行文件中,而后者在編譯時即完成,至于二者制作步驟的話比較復雜,需要用到的時候再對照著筆記制作好了。

☆進程線程

這部分我想是重中之重,畢竟進程線程出現的一大動機就跟人類的無限欲望相關聯:想要在越短的時間做越多的事情。進程就是執行中的程序,但與只包含指令和數據的程序不同,進程有屬于自己的地址空間,里面不僅含有指令段數據段,還有動態的堆棧段,因此多個進程可以實現了同一時間做多個任務。進程通過fork()函數創建,對應的PCB由內核創建并保存在內核空間。盡管多核芯片的出現可以讓多個進程真的在同時執行任務,但不是所有進程都同時處于運行狀態的,更多的進程是在極小的時間片段下輪流替換著來工作,至于替換的順序是由cpu調度機制決定的,我們無法確定,這也是為什么進程擁有異步特性的原因。未在運行狀態的進程往往處于隊列就緒等待狀態或休眠狀態,其它具體的狀態可以通過命令ps -aux查看。此外,運行中的進程還分為前臺運行和后臺運行,如果進程是后臺運行的話,就不能對它進行前臺操作,如不能對它ctrl + c暫停,這時候可以通過fg指令把它轉變為前臺運行或直接用kill指令終止進程。被創建后的進程是有生命周期的,它不但可以exit()自行終止進程,還可以用exec函數族中途改為執行新的進程,殊途同歸,進程最后都是要終止的,終止后的進程的PCB需要被其父進程wait()回收,中間有差錯的話就可能導致孤兒進程或僵尸進程的出現。

當需要進程不受干擾地一直在后臺運行、周期性地等待或者執行某一個任務的時候,可以將它設置為守護進程。守護進程不與任何終端關聯,即使終端關閉了也還是會照常運行,老師教的7步創建法得記熟。值得注意的是,因為守護進程無法往標準輸出打印,中間出錯了也沒人知道,所以得找個地方儲存它的運行情況,因此系統日志應運而生。系統日志可以通過命令cat /var/log/syslog查看。

進程可以通過無名管道、有名管道、信號、共享內存、消息隊列、信號量來進行進程間通信,這些通信方式都是在內核中得以實現的。具體的函數及使用筆記上都有詳細記錄,就不再贅述了。值得留意的是無名有名管道、消息隊列中的同一數據是讀了一次就沒有了的,而共享內存中的同一數據可以被多次讀取。

進程和線程都是為了實現計算機的并發功能,但是進程的創建消亡,及進程間的切換都很耗費資源,每次切換進程都要進程上下文切換。線程的優勢是多個線程共享指令和全局變量,這就減少了資源管理的消耗,從而更專注于任務的執行。但有優點就有缺點,資源的共享可能會致使多個線程同時對臨界資源進行操作,從而導致運算結果的不準確。為了解決這一問題,出現了線程的互斥與同步。線程互斥利用mutex鎖在臨界區的前后分別pthread_mutex_lock()上鎖和pthread_mutex_destroy()解鎖,實現同一時間只允許一個線程操作臨界資源。線程的同步用的是信號量,相當于加上了數量的線程的互斥,通過合理地使用p+1、v-1操作使得多個線程按一定次序運行。

以上即為近兩個月來重要知識的概括性總結。

上一篇:淺談程序員的開端——C語言

下一篇:嵌入式學習——掌握基礎技術很重要

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 欧美日韩不卡在线观看 | 妺妺窝人体色WWW在线一 | 成熟丰满熟妇高潮XXXXX | 性欧美牲交xxxxx视频 | 日本少妇又色又爽又高潮 | 中文资源在线观看 | 中文字幕无码日韩欧免费软件 | 色悠久久久久综合网香蕉 | 成人片黄网站色大片免费观看CN | 国产AV一区二区三区日韩 | 无码欧美激情性做爰免费 | xxxx18野外xxxxfreexxxx日本 | 国产一区 日韩 | 特黄AAAAAAA片免费视频 | 免费日本黄色片 | 美女裸身裸乳无遮挡网站 | 午夜精品久久久久9999 | 国产最新无码AⅤ在线播放 亚州视频一区二区三区 | 色欲天天天综合网 | 国久久 | 成人亚洲欧美成αⅴ人在线观看 | 成人性生生活性生交免费 | 欧美黑人牲交videossexeso | JAPANESE人妻无码人妻 | 风韵丰满熟妇啪啪区老老熟女百度 | 亚洲AV元码天堂一区二区三区 | 欧美做爰又粗又大免费看软件 | 日本视频免费看 | 18禁裸乳无遮挡自慰免费动漫 | 久久久久亚洲av无码专区蜜芽 | 香港日本三级在线播放 | 国产杨幂丝袜AV在线播放 | 国内精品久久久久久久久长长 | 精品午夜福利无人区乱码一区 | 久久天天躁夜夜躁狠狠85台湾 | 麻豆国产精品久久人妻 | 本道天堂成在人线AV无码免费 | 99久久99久久免费精品蜜桃 | 精品第一国产综合精品蜜芽 | 黑人大群体交免费视频 | 一个人看的WWW免费视频中文 |