Linux编程手册读书笔记第二章(20140330)
? ? (1)進程調(diào)度:Linux屬于搶占式多任務(wù)系統(tǒng),多個進程(即運行中的程序)可同時駐留于內(nèi)存,都能獲得對CPU的使用權(quán)
? ? (2)內(nèi)存管理:以高效、公平地方式在進程之間共享這一資源,Linux采用了虛擬內(nèi)存管理機制。
?? ? ? ? ? ? ? ? ? ? ? ? ? 虛擬內(nèi)存管理機制優(yōu)勢:
?? ? ? ? ? ? ? ? ? ? ? ? ? a. 進程與進程之間、進程與內(nèi)核之間彼此隔離;一個進程無法讀取或修改內(nèi)核或掐他進程的內(nèi)存內(nèi)容
?? ? ? ? ? ? ? ? ? ? ? ? ? b. 只需將進程的一部分保持在內(nèi)存中,降低了每個進程對內(nèi)存的需求量,使得可以在內(nèi)存中加載更多的進程。
? ? (3)提供了文件系統(tǒng):內(nèi)核在磁盤上提供有文件系統(tǒng),允許對文件執(zhí)行創(chuàng)建、獲取、更新、刪除等操作
? ? (4)創(chuàng)建和終止進程:內(nèi)核可以將新進程載入內(nèi)存,為其提供運行所需的資源(CPU、RAM以及對文件的訪問)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一旦進程執(zhí)行完畢,內(nèi)核需要確保釋放其占用的資源,以供或許進程使用
? ? (5)對設(shè)備的訪問:計算機外接設(shè)備(鼠標(biāo)、鍵盤、磁盤等),可實現(xiàn)計算機與外部世界的通信。
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 內(nèi)核為進程提供了訪問設(shè)備的標(biāo)準(zhǔn)接口,同時還仲裁多個進程對同一個設(shè)備的訪問。
? ? (6)聯(lián)網(wǎng):內(nèi)核以用戶進程的名義收發(fā)網(wǎng)絡(luò)消息(數(shù)據(jù)包),同時將該數(shù)據(jù)包路由至目標(biāo)系統(tǒng)。
? ? (7)提供系統(tǒng)調(diào)用API:進程可以利用系統(tǒng)調(diào)用API,請求內(nèi)核去執(zhí)行各種任務(wù)。
? ? ? (1)CPU一般在這兩種不同狀態(tài)下運行,執(zhí)行硬件指令可使CPU在兩種狀態(tài)來回切換
? ? ? (2)虛擬內(nèi)存區(qū)域劃分為:用戶空間部分、內(nèi)核空間部分
? ? ? (3)用戶態(tài)下運行時,CPU只能訪問被標(biāo)記為用戶空間的內(nèi)存,試圖訪問內(nèi)核空間的內(nèi)存,將會引發(fā)硬件錯誤
? ? ? (4)核心態(tài)下運行時,CPU既能訪問用戶空間的內(nèi)存,又能訪問內(nèi)核空間的內(nèi)存。
? ? ? (5)CPU在核心態(tài)下運行時,可以執(zhí)行特殊操作。如宕機(halt)、訪問內(nèi)存管理硬件、設(shè)備I/O操作的初始化
? ? (1)登陸shell:用戶剛登陸系統(tǒng)時,由系統(tǒng)創(chuàng)建,用以運行shell的進程。
? ? (2)對于UNIX系統(tǒng)而言,shell只是一個用戶進程。
? ? (3)登陸同一臺計算機的不同用戶同時可以使用不同的shell(就單個用戶來說,情況也一樣)
? ? (4)shell設(shè)計兩個目的:a. 人機交互; b. 解釋shell腳本(包含shell命令的文本文件)
? ? (5)shell內(nèi)置有許多通常與編程語言相關(guān)的功能:包括變量、循環(huán)、條件語句、I/O命令、函數(shù)等
? ? (6)幾種重要的shell:
? ? ? ? ? ? a. Bourne shell(sh):歷史最為悠久,曾是UNIX第七版標(biāo)配的shell,包含許多常見特性:I/O重定向、管道、文件名生成(通配符)、
?? ? ? ? ? ? ? 變量、環(huán)境變量處理、命令替換、后臺命令執(zhí)行、函數(shù)等。
? ? ? ? ? ? b. C shell(csh):曾經(jīng)時BSD系統(tǒng)的標(biāo)配,但與Bourne shell并不兼容,為了保證在UNIX系統(tǒng)的移植性,人們更傾向使用Bourne shell。
? ? ? ? ? ? c. Korn shell(ksh):AT&T貝爾實驗室編寫,是Bourne shell的繼任者,同時吸收了C shell的很多交互特性
? ? ? ? ? ? d. Bourne again shell(bash):GNU項目對于Bourne shell的重新實現(xiàn),同時提供了與Korn shell和C shell類似的交互特性。
?? ? ? ? ? ? ? 在Linux上Bourne shell正是由Bourne again shell仿真提供的
? ? (1)文本:程序的指令
? ? (2)數(shù)據(jù):程序使用的靜態(tài)變量
? ? (3)堆:程序可以從該區(qū)域動態(tài)分配額外內(nèi)存
? ? (4)棧:隨函數(shù)調(diào)用、返回而增減的一片內(nèi)存,用于為局部變量和函數(shù)調(diào)用鏈接信息分配存儲空間。
19.子進程從父進程處繼承數(shù)據(jù)段、棧段、堆段的副本后,可以修改這些內(nèi)容,不影響父進程的“原版”內(nèi)容。
? ? (1)信號(signal),用來表示事件的發(fā)生
? ? (2)管道(亦即shell用戶所熟悉的“|”操作符)和FIFO,用于在進程間傳遞數(shù)據(jù)
? ? (3)套接字,供同一臺主機或是聯(lián)網(wǎng)的不同主機上所運行的進程之間傳遞數(shù)據(jù)。
? ? (4)文件鎖定,為防止其他進程讀取或更新文件內(nèi)容,允許某進程對文件的部分區(qū)域加以鎖定
? ? (5)消息隊列:用于在進程間交換消息
? ? (6)信號量(semaphore):用來同步進程動作
? ? (7)共享內(nèi)存:允許兩個及兩個以上進程共享一塊內(nèi)存。當(dāng)某進程改變了共享內(nèi)存的內(nèi)容時,其他所有進程會立即了解到這一變化。
26.內(nèi)核、其他進程(只要有相應(yīng)的權(quán)限)或進程自身均可向進程發(fā)送信號。
? ? (1)用戶鍵入中斷字符(通常為Ctrl+C)
? ? (2)進程的子進程之一已經(jīng)終止
? ? (3)由進程設(shè)定的定時器(告警時鐘)已經(jīng)到期。
? ? (4)進程嘗試訪問無效的內(nèi)存地址。
28.在shell中,可使用kill命令向進程發(fā)送信號;在程序內(nèi)部,系統(tǒng)調(diào)用kill()可提供相同的功能。
總結(jié)
以上是生活随笔為你收集整理的Linux编程手册读书笔记第二章(20140330)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英雄联盟手游猴子怎么连招
- 下一篇: Linux编程手册读书笔记第三章(201