(一)計算機的基礎認識
1. 馮諾依曼體系:
運算器(ALU Arithmetic Logical Unit):完成算數和邏輯運算。
控制器(CU Control Unit):發出各種控制信息,讓計算機各部件協調工作。
存儲器(Memory):記憶程序和數據的部件
輸入設備(Inputdevice):將程序和數據輸入的部件。
輸入設備(Outputdevice):將數據和其他信息輸出
上圖表明,計算機內部5大部件共有兩類信息流動,數據類(原始數據,中間結果,程序指令等);控制類用單線表示,兩類都是用二進制0或1組成。數據輸入到存儲器要經過運算器,輸出時有運算器輸出到輸出設備,前提是有控制器發送控制信號完成的。計算機工作時將存放在存儲器上的程序逐條輸出到控制器,控制器執行指令發送到控制信號到其他4個部件。
2.計算機的總線結構:
數據總線(DB):CPU與存儲器,I/O接口設備之間傳送數據信息(各種指令數據信息)的總線,雙向傳輸。
地址總線(AB):CPU向存儲器,I/O接口設備發出的地址信息,尋址能力CPU特有,因此單向傳輸。
控制總線(CB):CPU到存儲器,I/O接口設備的控制信號,有存儲器,I/O設備的應答,請求信號。
控制信號包括:時序信號,狀態信號,命令信號(讀寫,繁忙,中斷)等。
3.處理器架構(CPU所采用的指令系統)
CISC的英文全稱為“Complex Instruction Set Computer”,即“復雜指令系統計算機”程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。主要有Intel,Amd系列
RISC的英文全稱為“Reduced Instruction Set Computing”,中文即“精簡指令集”,它的指令系統相對簡單,它只要求硬件執行很有限且最常用的那部分執令,大部分復雜的操作則使用成熟的編譯技術,由簡單指令合成。目前在中高檔服務器中普遍采用這一指令系統的CPU,特別是高檔服務器全都采用RISC指令系統的CPU。在中高檔服務器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。
(二)操作系統的基礎認識
1. linux操作系統
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。
用戶進程:運行在linux系統內核(sh csh tcsh ksh bash zsh 等)之上,一個龐大軟件集合。
系統調用:內核的出口,用戶程序通過系統調用使用內核提供的功能或者更高級一點C庫調用。
內核子系統:硬件驅動,進程管理,內存管理,網絡管理,安全管理等
硬件:計算機硬件。
程序的運行模式:
用戶空間:用戶空間中的代碼指令運行在較低的特權級別ring3上,只能看到允許它們使用的部分系統資源, 并且不能使用某些特定的系統功能,也不能直接訪問內核空間和硬件設備,以及其他一些具體的使用限制
內核空間:Linux系統對自身進行了劃分,一部分核心軟件獨立于普通應用程序,指令運行在較高的特權級別 上CPU ring0,它們駐留在被保護的內存空間上,擁有訪問硬件設備的所有權限,Linux將此稱為內核空間
運行程序格式ABI:
Windows: EXE, dll(dynamic link library)
Linux: ELF, so(shared object)
POSIX規范:Portable Operating System 只是規范了操作系統為應用級程序開發的API,沒有規范程序的ABI,因此 Windows和Unix,Linux的應用程序編譯成二進制后是不兼容的。
C程序運行過程:
加深linux源碼安裝過程的認識
預處理階段(cpp):根據義字符#開頭的命令,修改原始C程序,例如#include <stdio.h>,就是告訴于處理器讀取系統頭文件stdio.h,插入到程序文本,形成另一個C程序,通常是以.i結尾的擴展名。
編譯階段:編譯器(ccl)將hello.i文件翻譯成.s文件,它包含了一個匯編語言程序,加入了匯編代碼。
匯編階段:編譯器(as)將.s文件翻譯成機器語言指令,形成機器可讀的二進制數據。
鏈接階段:假如hello程序條用了printf函數,C庫,由編譯器提供,而printf函數存在一個名為printf.o的單獨的預編譯目標文件中,這個文件必須以某種方式并入到hello.o程序中,連接器(ld)負責這種并入,結果得到hello文件,他是一個可執行目標文件,加載到存儲器上,系統負責執行。
2. linux操作系統不同發行版的區別和聯系
其中Gentoo,Archlinux,LFS可定制性很強,充分發揮硬件性能,但配置比較復雜,有時間單獨研究安裝使用下再總結了。
3.linux的哲學思想
一切皆文件:對所有文件(目錄、字符設備、塊設備、 套接字、打印機等)操作,讀寫都可用 fopen()/fclose()/fwrite()/fread()等函數進行處理(VFS)。屏蔽了硬件的區別,所有設備都抽象成文件,提供統一的 口給用戶。
由眾多單一目的小程序組成:一個程序只實現一個功能,組合小程序完成復雜任務。
盡量避免跟用戶交互:使用腳本編程,以自動完成某些功能。
使用純文本文件保存配置信息:一款使用的文本編程器即能完成系統配置和軟件配置工作。
(三)linux操作系統的FHS和基礎命令
1.Filesystem Hierarchy Standard(文件系統目錄標準)
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放于此目錄;
/bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序;
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序;
/lib:基本共享庫文件,以及內核模塊文件(/lib/modules);
/lib64:專用于x86_64系統上的輔助共享庫文件存放位置;
/etc:配置文件目錄(純文本文件);
/home/USERNAME:普通用戶家目錄;
/root:管理員的家目錄;
/media:便攜式移動設備掛載點;
/mnt:臨時文件系統掛載點;
/dev:設備文件及特殊文件存儲位置;
b: block device,隨機訪問
c: character device,線性訪問
/opt:第三方應用程序的安裝位置;
/srv:系統上運行的服務用到的數據;
/tmp:臨時文件存儲位置;
/usr: universal shared, read-only data;
bin: 保證系統擁有完整功能而提供的應用程序;
sbin:
lib:
lib64:
include: C程序的頭文件(header files);
share:結構化獨立的數據,例如doc, man等;
local:第三方應用程序的安裝位置;
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 應用程序緩存數據目錄;
lib: 應用程序狀態信息數據;
local:專用于為/usr/local下的應用程序存儲可變數據;
lock: 鎖文件
log: 日志目錄及文件;
opt: 專用于為/opt下的應用程序存儲可變數據;
run: 運行中的進程相關的數據;通常用于存儲進程的pid文件;
spool: 應用程序數據池;
tmp: 保存系統兩次重啟之間產生的臨時數據;
/proc: 用于輸出內核與進程信息相關的虛擬文件系統;
/sys:用于輸出當前系統上硬件設備相關信息的虛擬文件系統;
/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置;
2.基礎命令
格式 : Command 選項 參數
選項:長選項– 短選項- 參數:要處理的文件,有的命令可以有多個參數
命令幫助:
man COMMAND
手冊頁:/usr/share/man
man1 … man8
man1: 用戶命令
man2: 系統調用
man3: C庫調用
man4: 設備文件及特殊文件
man5: 配置文件格式
man6: 游戲
man7: 雜項
man8: 管理類的命令
注意:有些關鍵在不止一個章節中存在幫助手冊;
要查看指定章節中的手冊:man # COMMAND,1,5,8比較常用。
man命令的操作方法:
Space, ^V, ^f, ^F: 向文件尾翻屏;
b, ^B: 向文件首部翻屏;
d, ^D: 向文件尾部翻半屏;
u, ^U: 向文件首部翻半屏;
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
y or ^Y or ^P or k or ^K:向文件首部翻一行;
q: 退出;
#:跳轉至第#行;
1G: 回到文件首部
G:翻至文件尾部
ifconfig命令:已被廢棄的命令,建議以后使用ip命令
查看所有網卡
查看網卡詳細統計數據
臨時給網卡配ip
禁用啟用網卡
echo命令:
-e 允許轉義符 -n 不允許自動添加換行符換行
轉義符:反斜線 報警 退格鍵 ESC鍵 換頁符 換行符 回車鍵 Tab鍵
pwd 命令:打印出當前工作目錄(絕對路徑)
export命令:查看和臨時更改登錄shell的環境變量
shutdown命令:
-r reboot -h halt -H halt -P poweroff -c清除shutdown相關任務 -k 警告,用戶不能登錄,不關機
date命令:
常用FORMAT
%Y YYYY格式的年份(Year)
%m mm格式的月份(),01-12
%d dd格式的日期(day of month),01-31
%H HH格式的小時數(),00-23
%M MM格式的分鐘數(),00-59
%S SS格式的秒數(),00-59
%F YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d
%T HH-MM-SS格式的時間(Time),同%H:%M:%S
%s 自1970年以來的秒數。C函數time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000
%w 星期幾,0-6,0表示星期天
%u 星期幾,1-7,7表示星期天
注意以上格式是可以任意組合的,還可以包括非格式串,比如 date "+今天是%Y-%d-%m,現在是$H:%M:%S"
格式:date -d STRING
格式:date –date=STRING
格式:date -d STRING +FORMAT
顯示用STRING指定的日期時間(display time described by STRING, not ‘now’)
格式:date -s STRING
格式:date –set=STRING,date [MMDDhhmm[[CC]YY][.ss]]:設置來設置系統時間
更多格式 man date 或 date –help
hwclock命令:
-r 顯示硬件時鐘 -s 同步硬件時鐘到系統時間 -w 同步系統時間到硬件時間
history命令:~/.bash_history 為命令歷史記錄文件,不退出不記錄,只會記錄在緩存中
-a: 追加本次會話新執行的命令歷史列表至歷史文件中;-d: 刪除歷史中指定的命令;-c: 清空命令歷史
!#: 調用歷史中第#條命令;!string:調用歷史中最近一個以string開頭的命令;!!: 上一條命令
tty命令:查看當前登錄終端 物理終端/dev/console 虛擬終端/dev/tty# 模擬終端/dev/ps/#
startx命令:讀取/etc/X11/xorg.conf進入圖形界面終端
原創文章,作者:Snoo,如若轉載,請注明出處:http://www.www58058.com/21782
寫的很好,排版還可以在漂亮一點,加油