導航:首頁 > 編程語言 > unix環境高級編程學習方法

unix環境高級編程學習方法

發布時間:2022-05-12 01:50:48

『壹』 《UNIX環境高級編程》這本書怎麼看怎麼學習

W.Richard Stevens 先生所著之書比較適合有經驗的人進一步深入學習

W.Richard Stevens 先生所著的UNIX 環境高級編程、UNIX網路編程、TCP/IP詳解是難得的入門好書,但這里的入門指得是研究生級別的入門。Stevens 先生所著之書多半是為了給研究生上課時用做教材,因此 Stevens 先生假設閱讀這些書的人至少已經接受過了系統的計算機技術本科教育,已經擁有了比較系統的計算機相關基礎理論知識。在書中 Stevens 先生假設讀者擁有了最基礎的操作系統理論,網路技術理論,以及UNIX理論和實踐經驗,並擁有數種業界常用的UNIX系統作為學習環境(在國外的大學里很容易獲得),這樣才能體會書中所述的細節。因此這些書剛接觸時看似通俗易懂,但在閱讀細節上卻對讀者要求甚高,如果沒有足夠的專業理論和系統實踐是很難真正讀進去的。

所以,對於沒有接受過系統的計算機專業教育的愛好者,或者主要以 linux 系統維護,或以linux 桌面應用為主的普通用戶,Stevens 先生的書並不是很合適的閱讀對象。

因此,就我個人的看法,掌握任何一種知識都是需要投入的。我們需要花費金錢去得知識來源(花錢買書,花錢上網,花錢培訓),需要花費寶貴的時間去閱讀(人生匆匆幾十年,沒多少時間可以給我們去浪費),需要花費精力去理解書中的內容(基礎知識越扎實,理解所學內容越快,但累積基礎同樣需要大量時間和精力),需要找到合適的環境(光看不實踐心裡是不會有底的)去驗證自己掌握的東西。因此,如果在決定投入之前,先要摸清楚自己到底想要達到什麼樣的目標,這個目標是否切合自己的實際(相信一個在流水線上辛苦勞作的普通工人,即使學會了計算機編程也是沒有用武之地的,除非他有機會離開流水線)。自己是否有足夠的資源承載自己的理想(如對於溫飽問題尚未解決之人,要他花上千上萬的錢去學MBA顯然是不現實的)。

同時,任何一本書都會對讀者提出一個基本的知識架構和程度上的要求,比方說即使是文學博士,讓他去讀高能物理學方面的書也會要他的命的。因此在選擇所讀之書前,先要對自己的實際能力做一次詳細的評估,看自己目前到了哪種階段,是否有能力去掌握自己想要掌握的東西。千萬不要因為好高騖遠而勉力為之。選擇適合自己當前水平的書去閱讀並理解,遠好過拿著大師所著的神作乾瞪眼。

如果主要希望掌握UNIX下的編程技術,尤其是網路編程技術的話,可以有兩條路走:

1、以實際需要完善知識架構:為自己做一個項目,比方說自己寫個簡單的 Web 伺服器,因為現在 Web 應用非常豐富,既有成熟的客戶端如瀏覽器可以配合,又有足夠全的文檔如 RFC文檔可供參考,再加上最基本的 socket 編程經驗,就可以開始做自己的 Web 伺服器。一步一步的為 Web 伺服器添加流行的功能,如支持後台 FastCGI 介面,支持 WebDAV,支持流媒體等。在這個過程中不斷地學習和掌握相關的理論知識,有時在發覺設計上的不足時甚至需要推翻全盤重新架構。當最終一個完全符合自己心意且足夠實用的 Web 伺服器做成時,就擁有了可以由自己支配和修改的伺服器,同時也掌握了相關的專業理論。這種方式比較適合有一定專業基礎的人使用。優點是直觀,方向明確所以學習效率高。缺點是需求驅動,形成知識架構不容易完整。

2、系統掌握計算機專業理論:最好的書就是大學里的理論教科書,這些書不會去講解過於具體的計算機應用,而是從概念開始講起,力圖使學習者獲得一個完整的知識體系。只要以後碰到的工作和這個知識體系相關,自然就能很快學會。這種方式比較適合沒有基礎,或者希望深入學習的人使用,優點是知識架構會逐漸趨於完整,理論功底扎實,後勁足。缺點是花費時間長,方向不明確所以學習效率低,初期會因缺少實踐而進展緩慢。

『貳』 Linux/UNIX系統編程手冊 UNIX環境高級編程 這兩本書如何選擇

你可以認為前者是unix/linux 系統相關的學習,比如api什麼的,還有一些理論,概念. 而後者只是學C這門語言,學的是語法,再多就是數據結構. 後者是前者的基礎.

『叄』 UNIX環境高級編程

ubuntu是可以的。編譯環境的話裝好ubuntu之後就自帶了,你可以打開終端輸入gcc -v就知道你的編譯器版本了。還有你可能需要裝其他的庫文件。
那本書的話建議你在沒有了解linux系統的時候,最好從基礎開始學起,不管怎麼說,裡面需要熟悉很多linux的命令,盡管他的名字是《 UNIX環境高級編程》,但是他在序言裡面說了,第二版的書涉及linux。
你最好還是去了解一下系統的命令怎麼用,然後再去學習。

『肆』 unix環境高級編程 可以用linux學嗎

UNIX環境高級編程》這本書對於初學者來說還太難。建議從基礎開始學習。 linux: Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和中國絡協議。它支持32位和64位硬體。Linux繼承了Unix以中國絡為核心的設計思想,是一個性能穩定的多用戶中國絡操作系統。 Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。 嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和資料庫的操作系統

『伍』 怎麼學<<UNIX環境高級編程>>這本書,學習方法,思路

如果C語言不過關的話建議,建議先讀《C缺陷與陷阱》 《C專家編程》

APUE是你那本書的簡稱, 方法就是以章為節點 先通讀一遍,有個概念,然後去linux下練習學到的函數。從文件i/0 到進程 線程 進程通信 線程同步 SOCKET。。等。。

如果學了1個月還沒感覺入門的話,建議更換教材,《linux 程序設計》更適合入門選手。

奉勸一句,嵌入式linux 對硬體基礎和C的要求很高,學也不是一天兩天的功夫,建議先工作兩年打下基礎後再研究!

『陸』 請問怎麼學UNIX C

一、概述

標准 UNIX 操作系統是一個互動式的分時系統,提供了一個支持程序開發全過程的基礎和環境,可以支持40個終端用戶。UNIX系統是由美國電報電話公司(AT&T)下屬的Bell實驗室的兩名程序員K.湯普遜(Ken Thompson)和D.里奇(Dennis Ritchie)於1969~1970年研製出來的。UNIX問世以來十分流行,它運行在從高檔微機到大型機各種具有不同處理能力的機器上。目前,UNIX除了可在PDP-11 、DEC公司的VAX-11系統的各種機型上運行之外,還可以在IBM的370、3300系列機和Amdahi公司、Data General公司、Hp公司的系列機上。近年來,幾乎所有的16位機、32位微型計算機都競相移植UNIX。這種情況在操作系統發展的歷史上是極為罕見的。隨著UNIX的普及,書寫系統的C語言也成為引人注目的語言,得到廣泛使用。

UNIX系統獲得了巨大的成功,這有著內在的原因和客觀的因素。客觀條件之一是,UNIX問世之前己有許多操作系統研製成功,其中有成功的經驗,也有失敗的教訓,而UNIX的設計者正是經過認真考慮,作了適當的取捨,使UNIX站在前人肩頭上獲得成功(MULTICS用了200人年未達到原定目標,UNIX只用了2個人年);其二是,由於當時人們需要一個使用方便、能提供良好開發環境、大小適中的系統,UNIX恰是生逄其時;其三是,UNIX是在PDP-11系列機上開發出來的,這種機器在世界上己得到廣泛應用,這為UNIX廣泛配置創造了條件。當然,UNIX成功的關鍵是在於自身的性能和特點。

UNIX的主要特點是:短小精悍、簡易有效、並具有易理解、易擴充、易移植性。

UNIX的核心程序由約10000行C語言代碼和1000行匯編語言代碼構成,被分成能獨立編譯和匯編的44個文件,每個文件又分若干過程。這些文件可分以下三類:

⑴匯編語言文件:系統只有2個文件用匯編語言編程,包含33個匯編子程序,與機器硬體直接相關的部分,如中斷處理、系統啟動等,為了提高效率,有些頻繁使用的基本過程,也用匯編語言編寫。

⑵C語言文件:共有28個,其中包括進程管理的主要過程,它們又可分成190個子程序 。文件可以獨立編譯,經裝配程序連接裝配後就可執行。

⑶C語言全局變數文件:共14個,其中含有結構的重要說明。這類文件不能獨立編譯,而必須和某個C語言文件一起編譯。

二、UNIX操作系統的主要特點

1.精巧的核心與豐富的實用層

UNIX系統在結構上分成內核層和實用層。核心層小巧,而實用層豐富。核心層包括進程管理、存儲管理、設備管理、文件系統幾個部分。UNIX核心層設計得非常精幹簡潔,其主要演算法經過反復推敲,對其中包含的數據結構和程序進行了精心設計。因此,核心層只需佔用很小的存儲空間,並能常駐內存,以保證系統以較高的效率工作。

實用層是那些能從核心層分離出來的部分,它們以核外程序形式出現並在用戶環境下運行 。這些核 外程序包含有豐富的語言處理程序。UNIX支持十幾種常用程序設計語言的編譯和解釋程序,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68等語言及其編譯程序。還包括其他操作系統常見的實用程序,如編輯程序、調試程序、有關系統狀態監控和文件管理的實用程序等。UNIX還有一組強有力的軟體工具,用戶能比較容易地使用它們來開發新的軟體。這些軟體工具包括:用於處理正文文件的實用程序troff,源代碼控製程序SCC
S(Source Code Control System),命令語言的詞法分析程序和語法分析程序的生成程序LEX(Generator of Lexical Analyzers)和YACC(Ye
t Another Compiler Compiler)等。另外,UNIX的命令解釋程序Shel
l也屬於核外程序 。正是這些核外程序給用戶提供了相當完備的程序設計環境。

UNIX的核心層向核外程序提供充分而強有力的支持。核外程序則以內核為基礎,最終都使用由核心層提供的低層服務,它們逐漸都成了「UNIX系統」的一部分。核心層和實用層兩者結合起來作為一個整體,向用戶提供各種良好的服務。

2.使用靈活的命令程序設計語言Shell

Shell首先是一種命令語言。UNIX 的200多條命令對應著200個實用程序。Shell 也是一種程序設計語言。它具有許多高級語言所擁有的控制流能力,如if、for、while、until、case語句,以及對字元串變數的賦值、替換、傳替參數、命令替換等能力。用戶可以利用這些功能用Shell語言寫出「Shell」程序存入文件。以後用戶只要打入相應的文件名就能執行它。這種方法易於系統的擴充。

3.層次式文件系統

UNIX系統採用樹型目錄結構來組織各種文件及文件目錄。這樣的組織方式有利於輔助存儲器空間分配及快速查找文件,也可以為不同用戶的文件提供文件共享和存取控制的能力,且保證用戶之間安全有效的合作。

4.文件和設備統一看待

UNIX系統中的文件是無結構的位元組序列。在預設情況下,文件都是順序存取的,但用戶如果需要的話,也可為文件建立自己需要的結構,用戶也可以通過改變讀/寫指針對文件進行隨機存取。

UNIX將外圍設備與文件一樣看待,外圍設備如同磁碟上的普通文件一樣被訪問、共享和保護。用戶不必區分文件和設備,也不需要知道設備的物理特性就能訪問它。例如系統中行式列印機對應的文件名是/dev/lp 。用戶只要用文件的操作(write)就能把它的數據從列印機上輸出。這樣在用戶面前,文件的概念簡單了,使用也方便了。

5.良好的移植性

UNIX的所有實用程序和核心的90%代碼是用C語言寫成的,這使得UNIX成為一個可移植的操作系統。操作系統的可移植性帶來了應用程序的可移植性,因而用戶的應用程序即可用於小型機,又可用於其他的微型機或大型機。從而大大提高了用戶的工作效率。

雖然UNIX系統取得了巨大的成功,但它也不是沒有缺點的。概括起來,對UNIX的批評有如下幾點:

1.UNIX系統的版本太多,造成應用程序的可移植性不能完全實現

UNIX是用C語言寫成的,因而容易修改和移植。UNIX也鼓勵用戶用UNIX的工具開發適合自己需要的環境,這樣造成了UNIX版本太多而不統一。為了解決這一問題,目前 AT&T己與四家重要的微機廠家(Inte
r,Motorola ,Zilog和National Semiconctor)合作制訂統一的UNIX
system V版本,這將會給UNIX的標准化以重大影響。

2.UNIX系統缺少諸如實時控制、分布式處理、網路處理能力

這一缺點也在不斷改進中,以UNIX為基礎的分布式系統和具有實時處理能力的系統己在研製中,有的已研製成功。

3.UNIX系統的核心是無序模塊結構

UNIX系統的核心有90%是用C語言寫成的,但其結構不是層次的,故顯得十分復雜,不易修改和擴充。

UNIX系統的這些缺點比起它的成就而言是十分次要的,它的成功是輝煌的。

三、UNIX系統結構

UNIX操作系統採用以全局變數為中心的模塊結構,因而系統結構較為復雜,這主要表現在:模塊間的循環調用和文件之間的全局變數問題。

從結構上看,UNIX可以分為核心層和外殼層,核心層又分成與硬體介面的設備驅動、物理存儲塊管理的最低層及實現存儲管理、文件管理、設備管理、進程管理等功能的低層。核心的外層是系統調用,它是UNIX核心的對外介面。最外層的Shell是用戶與UNIX系統的介面,其他的各種實用程序和用戶程序也在這一層運行。

系統結構如圖8.1所示。

1.Shell

UNIX提供的用戶介面是一種被稱為Shell的命令語言,這種命令語言的解釋程序也稱為Shell 。在系統初始啟動時為每個用戶建立一個Shell進程,每個Shell進程等待用戶輸入命令。命令的最簡單形式是一個命令行,由命令名和若干參數組成,中間用空格隔開。Shell解釋執行命令時,先區分命令名和參數,然後根據命令名找出對應的文件,把文件讀入內存,並按給出的參數解釋執行。

命令的執行是通過 fork 系統調用來完成的,Shell進程調用for
k後,fork創建一個Shell進程的子進程且讓Shell進程等待。子進程解釋執行命令,命令執行結束時子進程調用exit系統調用完成終止子進程和釋放父進程的工作。Shell進程被釋放後,給出允許用戶輸入下一個命令行的提示,命令的基本執行過程如圖8.2。

UNIX的交互系統要求用戶必須等待前一行命令執行結束,在終端上出現提示符後才能輸入下一個命令行。由於有些命令的執行時間較長,因此為了減少用戶等待時間,在UNIX系統中允許用戶使用Shell命令語言編寫程序來表示一組命令的執行順序,用命令語言編寫成的程序稱Shell程序。Shell程序存放在文件上,需要時由命令解釋程序去執行Shell程序中的各個命令。

2.系統調用

系統調用是用戶程序請求操作系統為其服務的惟一形式,在UNIX中把系統調用稱為程序員介面。UNIX規定用戶程序用捕俘(trap)指令請求系統服務,UNIX核心中的中斷捕俘程序根據trap的類型轉向相應的處理程序。Trap指令形式如下:

UNIX第6版共有41條系統調用,可以分成以下三類:

①與進程管理有關的系統調用,如建立子進程、等待子進程、睡眠、發信號、修改數據段大小等。

②與文件管理有關的系統調用,如建立文件、連接文件、打開文件、關閉文件 、讀文件 、寫文件以及修改當前目錄、修改文件屬性等。

③其他系統調用,如取當前用戶號 、取日歷時間 、讀取進程運行時間、改變優先數等。

在系統調用中,參數的傳遞有兩種方式。第一種方式:在程序中通過trap指令後繼單元傳送。這一方式又分為直接方式和間接方式。在直接方式中,允許在trap指令的後繼單元中最多可放5個參數;在間接方式中,trap指令的後繼單元放的是一個參數區指針,在這個參數區可以存放更多的參數。第二種方式是通過寄存器R0,R1傳遞參數的。

UNIX的系統程序員界面這包括了大量的庫子程序和標題文件。標題文件定義了在系統調用中使用的復雜數據結構;庫子程序和庫函數為系統調用提供了附加的程序支持。

3.存儲管理

UNIX系統最初是在 PDP-11 上開發的,PDP-11是段式結構的存儲器,在PDP-11中把段稱作頁,每一頁可包含若干塊,每塊64個位元組,主存以塊為單位進行分配。

存儲分配採用優先適應演算法,存儲空間使用空閑區表來管理。每表佔50項,每項2個單元,一個指向相應空閑區起始塊號,另一個指出空閑區大小。表內各項次序按空閑區地址從低到高排列,若有兩個相鄰空閑區則合並成一個。表項內容為0,表示表尾。

由於PDP-11不支持虛擬存儲器,所以UNIX中內存用戶區和磁碟對換區的分配和釋放由存儲管理模塊管理。在對換程序的管理下內存用戶區和磁碟對換區連成一體,起著虛擬存儲器的作用。對換進程掃描PCB表,發現輔存有就緒進程時,查內存是否有空閑區,若有空閑區則直接調入;否則要把內存中某些進程換出,若內存沒有可換出進程,則對換進程處於等待狀態,直到某些事件發生,喚醒後再度工作。輔存有多個就緒進程時,按先進先出換進內存;內存有多個進程可換出時,則選可換進程中優先數低的進程換出。

當進程要增加頁長時,可通過申請新頁、釋放舊頁來實現。若內存無足夠空間,則在輔存申請新頁,同時將進程整個換到輔存。

『柒』 聽說《UNIX環境高級編程》很難,而且需要c語言學得很好才容易看懂,請問需要先學哪些基礎才看這本書

如果學過了C,看《Linux程序設計》應該是沒有問題的,只是這本書並不只是講C語言的知識,它講了許多關於Linux系統的知識,如果你以前從沒有使用過命令行,從沒有使用過Linux,應該是有些費勁的,不過說實在的這本書確實很棒。

另外不管別人怎麼說,自己讀了才是硬道理,你就下一個電子版的試讀一下,看看「自己」的感覺如何再做定奪。

『捌』 想學計算機編程但是不知道學什麼

1.首先剛入門的話,你要先明確目標選擇一門編程語言入門。個人建議選擇java或者C。在學習編程語言的時候,計算機有關的知識你也是需要涉及的,也要多多去了解一下,看一些書籍,在網上下載視頻邊看邊學效果會好一些。在你理論知識的基礎上學習起來會相對容易一些。當你熟悉掌握一門語言後,這個時候就可以有學習的目標了。自己對哪方面感興趣喜歡哪種語言就學哪門。

2.我這邊來簡單介紹一下java的學習內容吧。

①JAVA編程基礎(基礎語法、面向對象、和諧特性等)

②WEB應用開發(靜態網頁製作、Oracle資料庫、Java Web開發技術、Linux技術、網站性能與安全、軟體工程開發流程、Java Web和諧等)

③企業級框架開發(數據結構與演算法、SSH框架、JavaEE和諧等)

④項目實訓

3.如果你真的想學好編程語言,C語言也是蠻重要的。但是新手學C語言通常會出現一個問題,就是除了寫個排序演算法,似乎根本想不出來C語言有什麼用。這是因為我們的教科書講C語言的時候,只講這些基本演算法,甚至連讀寫文件都不去講,更不用說圖形界面處理了和網路操作了,沒有這些知識,想寫一個真正的應用那是不可能的。不過,書上沒有不等於學不了,文件操作和網路操作的講解網路上有著大把的講解,只要你找幾篇文章看看,具備了這些基礎知識,寫一個自己的WEB伺服器並不難。在逐步增加功能完善功能的同時,你的C語言基本上就可以達到相當牛人的水平了。

4.互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,建議實地考察對比一下。

祝你學有所成,望採納。

『玖』 unix高級環境編程 應該怎麼使用

Stevens著有三大本:UNIX環境高級編程、TCP/IP詳解、UNIX網路編程。
我是抱著學習網路編程進而閱讀web framework源碼來學習它們的。
另外也是想提升一下自己的編程素養,為以後看kernel源碼什麼的做鋪墊。

首先我是買了這本書,另外兩套暫時沒買。
開始也是各種不解,我就是想內核究竟幹些啥事,如何通過system_call與之通信?

其實讀這些書需要一些基礎的。
操作系統原理、gcc、shell等等。

其實我也沒全看完,建議先把環境裝好(編譯apue.h),然後一個一個運行書中示例。當然不是盲目的學,要知道自己差那一塊就補那塊。

『拾』 我剛剛開始按《UNIX環境高級編程》來學習LINUX編程,上面有很多庫函數,記不住怎麼用怎麼辦

不可能完全記得每個函數的所有用法的,有的函數參數多,使用方法復雜。

常用的記得就可以了,不常用的查手冊。

這東西就這樣,即使你今天全部記下來了,過一階段不用,又忘了。

閱讀全文

與unix環境高級編程學習方法相關的資料

熱點內容
手機號碼如何加密 瀏覽:424
沈陽程序員培訓學校 瀏覽:538
一般伺服器如何配置 瀏覽:895
圖片怎樣加密發郵件 瀏覽:619
萬虹電腦文件夾密碼忘記了怎麼辦 瀏覽:631
rc108單片機 瀏覽:867
戰雷如何改變伺服器 瀏覽:674
mactelnet命令 瀏覽:51
壓縮袋壓縮了拿出來 瀏覽:401
安卓手機相機怎麼設置許可權 瀏覽:121
美女程序員轉行做主播 瀏覽:671
辦理解壓房產 瀏覽:575
道路工程概論pdf 瀏覽:388
超棒數學速演算法大全 瀏覽:937
小米易語言登錄源碼 瀏覽:31
磚牆內加密鋼筋 瀏覽:992
鄉關何處pdf 瀏覽:84
小豬領贊小程序源碼 瀏覽:336
python曲線如何原路返回 瀏覽:431
pdf快速看圖破解版 瀏覽:295