IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_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號

回到頂部

主站蜘蛛池模板: 郑州井盖雨水篦子厂家-建联建材| 环链电动葫芦_钢丝绳电动葫芦_电动葫芦厂家_上海沪工起重机械有限公司 | 咪咕体育直播,咪咕直播,CCTV5直播,体育直播,高清直播,腾讯体育直播,篮球直播,足球直播 | 全自动高速点胶机,锡膏喷印机系列,点胶阀核心配件厂家-博宁 | 湖南实验台-防静电工作台-实验设备厂家-长沙实验室设备有限公司-湖南贝塔实验室设备有限公司 | 模压化粪池_三格式化粪池_玻璃钢化粪池厂家 | 南京数控折弯机_安徽数控剪板机_数控开槽机-合肥小型液压折弯机系统批发厂家 | 潍坊网络推广,临沂360推广,东营360推广,枣庄360推广,潍坊网站建设,潍坊网络公司,潍坊360搜索,潍坊APP开发,潍坊360推广,潍坊360代理,潍坊点睛网络科技有限公司 | 扬州华工电气有限公司|环氧树脂管|金刚石绝缘板|U型绝缘槽|电解槽绝缘材料 | 万通汽车学校,汽车学校,汽修学校,汽修培训学校,汽车美容学校,汽车维修学校,学汽修-武汉万通汽车学校官方网站 | 无源电子锁_五防锁_机柜锁_物联网锁_智能锁控管理-Vanma | 苏州新闻网_苏州最权威资讯 | 青岛相控阵检测_无损探伤检测机构_相控阵超声检测公司-青岛发现检验技术咨询 | 厦门,泉州自助餐上门|生日自助餐|婚礼自助餐|公司聚会自助餐|户外烧烤|冷餐|茶歇外卖配送-福建非选餐饮公司 | 西安网站建设,西安网站设计制作,西安短视频拍摄_短视频运营就选动力无限网络推广公司 | 江西蔬菜配送,南昌蔬菜配送,南昌食堂承包,江西饭堂承包-江西菜篮子农产品发展有限公司 | 水环式真空泵-旋片式真空泵-上海飞鲁泵业科技有限公司 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 深圳心理咨询-专业心理咨询服务平台「专家免费在线」-深圳从心开始心理O2O | 烟囱防腐_维修_刷航标_美化_加固_刷色环 | 锦州龙威机械有限公司官网 ,锦州医药包装机,包装机,锦州包装机械,小袋颗粒装盒生产线,颗粒装盒生产线,软双铝装盒线,伺服颗粒 | 暨南大学穗华口腔医院【官网】| 液压万能试验机-液压式万能试验机-万能试验机厂家-济南鸿君试验机 | 芜湖净水设备-纯水设备-无负压供水设备-不锈钢水箱-芜湖市百川给水设备有限责任公司 | 热水工程|太阳能热水工程|空气能热水工程|太阳能集热工程 | 空气消毒机厂家-医用空气消毒机-医用空气净化器-山东佳境医疗 | 喷涂机器人|自动喷涂生产线|自动喷涂设备|自动化生产线-深圳市荣德机器人科技有限公司 | 无线对讲系统-海能达对讲机-广州中达慧通科技有限公司 | 塑料振动筛-防腐蚀振动筛-聚丙烯振动筛-塑料振动筛厂家河南迈能机械设备有限公司 | 山东金起起重机械有限公司[官网]-金桥银路悬臂吊,金起龙门吊,山东金起起重行吊,单梁起重机 | 亚克力游泳池_透明/空中/无边泳池_别墅亚克力泳池设计生产厂家_瑞地格乐-深圳他拍档 | 重庆中医针灸推拿培训_产后康复理疗师培训_重庆市六合职业培训学校 | 智齿科技-智齿客服 | 在线客服_呼叫中心_客户联络中心方案 | 水晶粉丝机_粉丝机_粉皮机-开封市晟丰机械设备有限公司 | 微型电磁阀_隔膜泵_活塞泵_微型水泵_微型真空泵_微型气泵【东莞市宗旨电子科技有限公司】 | 陕西教师资格网-陕西教师资格考试网 | 真空电镀机_镀膜机厂家_离子镀膜机_磁控溅射镀膜设备_镀钛设备-江苏驰诚科技发展有限公司 | 西安西玛电机销售,西安西玛电机有限公司(原泰富西玛西安电机厂) 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 西安网站建设,西安网站设计制作,西安短视频拍摄_短视频运营就选动力无限网络推广公司 | 起名字典|宝宝新生儿男孩女孩起名免费网-诗经周易生辰八字取名字大全 | 日本国际高中_上海日本国际高中学校排名_日本国际高中留学课程_上海日语国际高中学校学费-上海工程技术大学国际多语种特色高中课程【官网】 | 三七/灵芝超微粉碎机,小型超细粉碎机价格-北京燕山正德机械设备有限公司 |