第零周做業html
簡要內容:git
一、瞭解課程上課方式,作好心理預期web
二、閱讀老師給出的博客,並回答相關問題編程
三、快速翻閱一下課本,對每章內容提出一個問題vim
四、安裝虛擬機,並解決安裝過程當中出現的問題數組
二維碼:
緩存
第一週做業安全
簡要內容:實驗樓實驗一服務器
一、瞭解Linux操做系統網絡
二、核心的Linux命令:find/locate/cheat/grep/which/whereis,熟練應用「搜索」進行觸類旁通的學習
三、Linux中用戶管理命令/系統相關命令/文件目錄相關命令/打包壓縮相關命令/比較合併相關命令/網絡相關命令等
二維碼:
簡要內容:實驗樓vim編輯器、GDB簡明教程、Linux系統編程;課本第一章《計算機系統漫遊》、第七章《連接》
一、Linux系統下的開發環境
二、vi的基本操做
三、gcc編譯器的基本原理、gcc編譯器的經常使用選項
五、gdb調試技術
六、makefile基本原理及語法規範
七、靜態庫和動態庫的生成與調用方法
八、C程序中模塊的概念,模塊分解的「高內聚,低耦合」的原則
九、理解信息的概念、用od 命令 od -tc -tx1 hello.c
查看源文件、 馮式結構、 CPU執行指令的操做(加載、存儲、操做、跳轉)、理解存儲系統的核心思想:緩存、操做系統核心抽象(文件、虛存、進程、虛擬機)
十、連接器的兩個任務、目標文件的三種形式、目標文件格式、 ELF文件格式、readelf命令、全局符號、處理目標文件
二維碼:
簡要內容:課本第二章《信息的表示和處理》
一、三種數字、進制轉換、 gcc -m32
生成32位的代碼、字節順序、邏輯運算和位運算、掩碼、0擴展和符號擴展、整數運算溢出、IEEE浮點標準、浮點數運算的不精確性與舍入、 整數與浮點數轉換規則
二、作重點習題:2.四、2.六、2.八、2.十一、2.1三、2.1四、2.1八、2.1九、2.2一、2.2三、2.2四、2.2五、2.2七、2.2九、2.3三、2.3四、2.3九、2.40、2.4二、2.4三、2.4四、2.4五、2.4七、2.50、2.5二、2.54
二維碼:
簡要內容:課本第三章《程序的機器級表示》
一、DOS時代的平坦模式、8086的分段模式、 IA32的帶保護模式的平坦模式、ISA、使用gcc -S xxx.c -o xxx.s
得到彙編代碼、用objdump -d xxx
反彙編、不一樣數據的彙編代碼後綴
二、查看二進制文件能夠用od 命令查看,也能夠用gdb的x命令;more或less命令結合管道查看,使用輸出重定向來查看
三、Linux和Windows的彙編格式區別:ATT格式和Intel格式
四、寄存器、條件碼寄存器
五、尋址方式、操做數的三種類型、有效地址的計算方式
六、彙編指令: MOV、push、pop、jmp、leal、CMP、SUB、SET、call、ret,目的操做數的類型,算術和邏輯運算,移位操做移位量,跳轉語句
七、棧幀結構,關於棧幀的gdb命令:bt/frame/up/down
八、作重點習題:3.一、3.三、3.五、3.六、3.九、3.1四、3.1五、3.1六、3.2二、3.2三、3.2七、3.2九、3.30、3.3三、3.34
二維碼:
簡要內容:課本第四章《處理器體系結構》
一、ISA抽象、Y86處理器、流水線和實現方式
二、作重點習題:4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24
二維碼:
簡要內容:課本第六章《存儲器層次結構》
一、三種常見存儲技術、磁盤、總線、訪問時間、讀寫事務、邏輯磁盤塊
二、局部性原理、數據引用局部性、取指令局部性
三、存儲層次結構、緩存思想
四、高速緩存結構、映射、命中、緩存管理
五、作重點習題:6.2 6.3 6.4 6.8 6.9 6.10 6.11 6.12 6.13
二維碼:
簡要內容:複習
一、複習Linux經常使用命令,特別是man -k
, cheat
, grep -nr xxx /usr/include
二、複習vi, gcc, gdb,make的使用
三、複習教材1-7章、總結每週的考題
二維碼:
簡要內容:課本第10章《系統級I/O》
一、每一個系統調用的參數、返回值,查幫助文檔
二、掌握兩個重要命令:man -k key1 | grep key2| grep 2
根據關鍵字檢索系統調用;grep -nr XXX /usr/include
查找宏定義,類型定義
三、Unix I/O、打開和關閉文件、用RIO包健壯地讀寫、讀取文件元數據、共享文件、I/0重定向、標準I/O和I/O函數
四、作重點習題:10.一、10.二、10.三、10.四、10.5
二維碼:
簡要內容:視頻,課本附錄A,代碼理解和調試
一、三種風格的錯誤處理
二、代碼:cp1.c、echostate.c、fileinfo.c、filesize.c、ls1.c、ls2.c、setecho.c、spwd.c、testioctl.c、who1.c、who2.c
二維碼:
簡要內容:課本第八章《異常控制流》,代碼理解和調試
一、代碼:argv(argv.h、freemakeargv.c、makeargv.c、argtest.c),env(environ.c、environvar.c),fifo(consumer.c、producer.c、testmf.c),pipe(listargs.c、pipe.c、pipedemo.c、pipedemo2.c、stdinredir1.c、stdinredir2.c、testtty.c、whotofile.c),signal(sigdemo1.c、sigdemo2.c、sigdemo3.c、sigactdeom.c、sigactdeom2.c),exec(exec1.c、exec2.c、exec3.c),forkdemo(forkdemo1.c、forkdemo2.c、forkdemo3.c、forkdemo4.c),forkgdb.c,psh(psh1.c、psh2.c),testbuf(testbuf1.c、testbuf2.c、testbuf3.c),testpid、testpp、testsystem,waitdemo(waitdemo1.c、waitdemo2.c)
二、異常及其種類、異常處理
三、進程和併發、進程建立和控制的系統調用及函數使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv
四、信號機制:kill,alarm,signal,sigaction
五、管道和I/O重定向:pipe, dup, dup2
二維碼:
簡要內容:視頻、複習
一、複習九、十、11周代碼
二、數組指針、指針數組、函數指針、指針函數的區別
三、信號:查看、生命週期、產生、處理
二維碼:
簡要內容:課本第十一章《網絡編程》、第十二章《併發編程》,代碼理解和調試
一、代碼:hello_multi.c、hello_multi1.c、hello_single.c、incprint.c、twordcount1.c、twordcount2.c、twordcount3.c、twordcount4.c、condvar.c、count.c、countwithmutex.c、cp_t.c、createthread.c、semphore.c、share.c、threadexit.c
二、客戶端-服務器編程模型、網絡、套接字、Web服務器
三、基於進程的併發編程、基於 I/O 多路複用的併發編程、基於線程的併發編程、多線程程序中的共享變量、用信號量同步線程、使用線程提升並行性、其餘併發問題
二維碼:
簡要內容:課本第九章《虛擬存儲器》
虛擬存儲器的概念和做用、地址翻譯、存儲器映射、動態存儲器分配的方法、垃圾收集、C語言中與存儲器有關的錯誤
二維碼:
簡要內容:
熟悉Linux開發環境,學會Linux開發環境的配置和使用,使用Linux的arm編譯,使用基於NFS方式的下載調試,瞭解嵌入式開發的基本過程。
二維碼:
簡要內容:
學習、讀懂02_pthread、03_tty中的代碼,配置實驗環境完成實驗指導書中的實驗二、3。
二維碼:
簡要內容:
根據實驗指導書進行實時軟件的安裝(ADS、GIVEIO驅動、JTAG驅動),配置實驗環境並對軟件進行測試,運行測試程序。
二維碼:
簡要內容:
掌握實時系統應用和驅動程序的編寫,在模塊化方式下進行驅動開發調試。
二維碼:
簡要內容:
在arm開發板上實現一個簡單web服務器的過程,在arm開發板上進行socket網絡編程。
二維碼:
二維碼
截圖 git log --pretty=format:"%h - %an, %ar : %s" 的結果
代碼量彙總
代碼驅動的學習作到沒有?
作到了。本學期剛開始的時候只是簡單地上傳了代碼,沒有分目錄,描述也很簡單。後來,看了老師發的《代碼驅動的學習》博客後,我認識到了代碼管理的重要性,恰逢此時,由於我以前不規範的上傳代碼致使個人項目工程出了問題,因而我新建了一個項目從新上傳代碼,按照博客上的要求,目錄清晰、一個一個代碼的添加並註釋。
實踐上有什麼經驗教訓
開學初創建的工程因爲上傳後在本地、遠程都更改了不少,因此在第5周就發現怎麼上傳都不能成功,最後一怒之下廢棄了原項目,從新新建了一個項目,從新上傳了以前的代碼,以後一直按照要求一步一步的添加、上傳再也沒有出現過問題。
第一章
什麼是計算機系統?它包括什麼?研究它有什麼意義?
答:計算機系統由計算機硬件和軟件兩部分組成。硬件包括中央處理機、存儲器和外部設備等;軟件是計算機的運行程序和相應的文檔。計算機系統具備接收和存儲信息、按程序快速計算和判斷並輸出處理結果等功能。
第二章
計算機中的數據和日常咱們生活中的數據有什麼異同?
答:在計算機系統中,各類字母、數字符號的組合、語音、圖形、圖像等統稱爲數據,數據通過加工後就成爲信息。
第三章
爲何要學習彙編?
答:用高級程序語言編程時,機器屏蔽了程序的細節,抽象級別高,而彙編代碼能夠很好的規避這一點,幫助咱們更好的分析代碼中隱藏的低效率。
第四章
ISA是什麼?
答:ISA即指指令集架構(Instruction Set Architecture)是與程序設計有關的計算機架構的一部分,包括本地數據類型、指令、寄存器、地址模式、內存架構、中斷和意外處理和外部 I/O 。一個 ISA 包括一系列 opcodes(機器語言)的一個規格,本地命令由一個特定的 CPU 設計來實現。
第五章
如何優化程序性能?
答:第一,消除沒必要要的內容,包括函數調用、條件測試和存儲器引用。第二,利用處理器提供的指令級並行能力,同時執行多條指令。
第六章
存儲系統層次結構分爲何?
答:高速緩衝存儲器、主存儲器、輔助存儲器。
第七章
連接是如何進行的?
答:將各類代碼和數據部分收集起來並組合成爲一個單一文件,由連接器自動執行。
第八章
常見異常怎麼解決?
答:
1.使用標準C庫提供了abort()和exit()兩個函數,它們能夠強行終止程序的運行,其聲明處於<stdlib.h>頭文件中。 2.使用assert(斷言)宏調用,位於頭文件<assert.h>中,當程序出錯時,就會引起一個abort()。 3.使用errno全局變量,由C運行時庫函數提供,位於頭文件<errno.h>中。 4.使用goto語句,當出錯時跳轉。 5.使用setjmp,longjmp進行異常處理。
第九章
虛擬存儲器如何工做?它有什麼特性?
答:虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認爲它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它一般是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在須要時進行數據交換。
第十章
Unix I/O是什麼?
答:Unix下共有五種I/O模型
a. 阻塞I/O b. 非阻塞I/O c. I/O複用(select和poll) d. 信號驅動I/O(SIGIO) e. 異步I/O(Posix.1的aio_系列函數)
第十一章
網絡編程步驟?
答:客戶端:
一、經過socket函數獲取一個socket文件描述符。程序經過這個文件描述符與內核的tcp/ip架構通信聯繫。 二、經過該描述符請求與服務器的鏈接(connect函數),此時須要事先知道服務器的ip和服務器上的應用程序的端口 三、當connect函數成功返回,則表示鏈接達成,則可經過該文件描述符或者recv,send該文件描述符,便可實現與某服務器端的通訊
服務器端:
一、經過socket函數獲取一個socket文件描述符。程序經過這個文件描述符與內核的tcp/ip架構通信聯繫。 二、綁定端口(bind函數),端口人爲設置,本機IP自動獲取便可(端口和IP設置經過sockaddr_in結構體實現)。 三、監聽socket函數返回文件描述符(listen函數) 四、當listen函數返回時,表示有請求,則使用accept獲取請求,accept函數產生一個新的文件描述符,用於和該請求通訊。 五、讀寫該文件描述符或者recv,send該文件描述符,便可實現與某客戶端的通訊 六、服務器端還能夠繼續監聽socket文件描述符,接受其餘端口的請求
第十二章
併發編程是什麼?
答:併發編程是指在一臺處理器上「同時」處理多個任務。併發是在同一實體上的多個事件。多個事件在同一時間間隔發生。
優秀做業
總結
無。
項目
二維碼:
教程
無。
競賽
無。
扇貝背單詞(對四六級有沒有影響?)
我想應該是有幫助的吧,畢竟四級過了,影響總在不知不覺中產生並起做用,打卡已經成爲我天天的習慣了。
無扣分項目。
沒有進入過,因此不太瞭解,不過能夠看到老師爲了避免讓部分同窗落下進度作出的努力。
本身的收穫(投入,效率,效果等)
在這學期的學習中,我清晰的感覺到了效率、投入的重要性。剛開始,多是因爲剛過完假期,我一直不太能進入狀態,效率很低,收穫也寥寥無幾,感受老師的要求太多了,而本身卻徹底以爲是在浪費時間。後來,我逐漸進入了狀態,學習效率大大提升,也更加能體會到老師的每一項要求的意義所在,因而,讀書、理解、作練習題,讀代碼、理解、編譯運行,這一個體系下來,以爲本身對於這門課的知識獲得了掌握,而使用的時間也沒有比以前更長。因此,不得不說,有付出纔會有收穫,效率高才能在有限的時間內收穫更多。
本身須要改進的地方
爭取進入狀態更快,我進入狀態慢多是自身的問題,因此,我以爲我應該在假期的末尾就開始逐漸開始讀書,這樣能夠早日進入狀態。
若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
若是從新學習這門課,怎麼作才能夠學的更好
我以爲個人最大問題就是進入狀態太慢,我最開始的幾周學習效率過低了,每週的博客都要作好久好久,收穫卻不大。若是從新學習的話,我應該想辦法讓本身儘快進入這種學習模式,儘可能從假期進入到學習中去,提升學習效率。
你平均每週投入到本課程多長時間?
25小時左右,平時課下有時間就看看書、畫下來重點,週末把它們總結成一篇博客,並進行實踐操做。
每週的學習效率有提升嗎?
相比於剛開學有了很大提升。
學習效果本身滿意嗎?
剛開學的幾周很不滿意,以爲本身效率過低,學了很長時間卻收穫很小。後來逐漸進入了學習狀態,學習效率提升了,在加上有以前知識作基礎,學習效果相對來講較爲滿意。
課程結束後會繼續一週至少一篇博客嗎?(若是能作到,畢業時我把你的博客給你集結成一本書)
我很但願本身能保持這個習慣,也會努力去作到。
你以爲這門課老師應該繼續作哪一件事情?
每週寫博客,扇貝打卡,多理解、運行代碼,期末、期中總結。
你以爲這門課老師應該中止作哪一件事情?
感受全部項目都有其存在的價值和意義,沒有什麼應該中止的。
你以爲這門課老師應該開始作什麼新的事情?
實驗閉卷考試,我感受實驗更多的是在培養一種能力,應該化爲本身的知識儲備,不用查找就能運用,開卷更適用於考課本上的概念這類知識性的死記硬背的東西。