亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 系統(tǒng)程序員之---x86x64體系探索及編程實踐經(jīng)驗談(獲獎名單已公布2013-1-7) [打印本頁]

作者: send_linux    時間: 2012-11-12 15:52
標(biāo)題: 系統(tǒng)程序員之---x86x64體系探索及編程實踐經(jīng)驗談(獲獎名單已公布2013-1-7)
獲獎名單已公布,詳情請看:http://72891.cn/thread-4062429-1-1.html

在實際工作中你可能很少接觸底層的架構(gòu)知識,除非你是做bios開發(fā),做內(nèi)核開發(fā),做驅(qū)動開發(fā)等。當(dāng)然你要有興趣的話,盡可能多了解一些知識是始終是有益處的。
那么當(dāng)你工作中接觸到一些與x86/x64平臺底層的問題時,往往是遇到不懂的就翻翻Intel或AMD提供的手冊,這樣掌握并不牢固,下次重遇問題時還要翻手冊。。
Intel和AMD官方手冊是權(quán)威文檔,但其中某些描述上會存在著隱晦難懂的地方,甚至可能還會出現(xiàn)描述或者翻譯上的不恰當(dāng),讓人覺得模棱兩可。
現(xiàn)在讓我們一來系統(tǒng)地學(xué)習(xí)x86/x64體系知識,然后需要溫故而知新在學(xué)習(xí)過程中,我們以探索為目的,以實驗為依托。要透徹地對一個知識點進(jìn)行理解,顯然經(jīng)過測試實驗的論證是最好的方法,也只有經(jīng)過全方位的測試才是最為真實可靠的,以達(dá)到驗證真?zhèn)魏腿コ苫蟮膶W(xué)習(xí)目的。

討論話題:
學(xué)會探索,學(xué)會從盲人摸象之中慢慢積累知識,一起學(xué)習(xí)x86/x64知識,談?wù)勀慕?jīng)驗和感受

邀請嘉賓:
圖書作者:ChinaUnix論壇CPU和編譯器版榮譽(yù)版主,mik
ChinaUnix論壇CPU和編譯器版版主, cjaizss

活動時間:2012.11.12-2012.11.30

活動要求:
1、關(guān)注系統(tǒng)程序員所關(guān)注的系統(tǒng)架構(gòu)問題探討
2、言之有物,請勿空談
                 
討論有獎:
活動結(jié)束后,我們會評選出五位積極參與話題討論的網(wǎng)友獎勵mik版主最新力作《x86/x64體系探索及編程》圖書一本,對其他積極參與討論的網(wǎng)友(回帖有參考價值)我們將獎勵積分20分。

活動獎品:

作者: 鄧志
出版社:電子工業(yè)出版社
ISBN:9787121181764
上架時間:2012-9-24
出版日期:2012 年10月
試讀地址:
http://wenku.it168.com/d_000574732.shtml
作者: titer1    時間: 2012-11-12 19:21
原來作者在這里 還有一個大本營
http://www.mouseos.com/
作者: send_linux    時間: 2012-11-12 19:22
titer1 發(fā)表于 2012-11-12 19:21
原來作者在這里 還有一個大本營
http://www.mouseos.com/


是的,CPU版的老版主,呵呵
作者: mik    時間: 2012-11-12 19:26
感謝 CU 支持搞的這次活動
作者: send_linux    時間: 2012-11-12 19:29
mik 發(fā)表于 2012-11-12 19:26
感謝 CU 支持搞的這次活動


歡迎老版主回來看看,嘿嘿
作者: cjaizss    時間: 2012-11-12 19:46
mik 發(fā)表于 2012-11-12 19:26
感謝 CU 支持搞的這次活動

mik兄,好耐未見
作者: gvim    時間: 2012-11-12 20:00
支持!好活動,做基礎(chǔ)層研究的人并且能分享出來的人太少了!
還在讀書的時候?qū)86,mips,arm都淺顯的研究過幾年,后來差不多5,6年沒碰這方向了,關(guān)鍵是工作中用不上。

活動要求:
1、關(guān)注系統(tǒng)程序員所關(guān)注的系統(tǒng)架構(gòu)問題探討

個人覺得討論這題目。。。。處理器單獨一個東西感覺有點太底層了,談“系統(tǒng)架構(gòu)”離得是不是有點遠(yuǎn)了。和處理器打交道的代碼,也就是通常放在arch部分的系統(tǒng)程序,更多的在關(guān)注性能,關(guān)注某一點而不通?紤]整體系統(tǒng)的設(shè)計是否優(yōu)良是否中性是否易維護(hù)(最典型的比如Linux對gcc擴(kuò)展的完全依賴)。設(shè)計系統(tǒng)架構(gòu)的話,可能和系統(tǒng)性能是矛盾的。所以個人認(rèn)為討論性能可能實際一點。比如cache,interrupt,extension instruction set,smp等。
cache和interrupt使用模式太成熟也很淺顯以至于硬件模式?jīng)]革新的話系統(tǒng)設(shè)計也不會有多少進(jìn)化的空間。
ex instruction set的話,和上層應(yīng)用與算法相關(guān)度比較大,不好說有一個通用的使用模式和使用場合。
smp有點搞頭,鎖,總線,local buffer,sync這些東西沒弄順的話還是容易出性能問題。
作者: tempname2    時間: 2012-11-12 21:56
之前在china-pub上看過這本了,看了一下目錄,以為又是哪個不知好歹的想翻譯手冊。原來是傳說中的mik。

占個座先,五本書機(jī)會還是蠻大的。就算是mik也要問一句,這本書與中文版手冊相比的優(yōu)缺點?x86_64所占比重?
作者: tempname2    時間: 2012-11-12 22:08
本帖最后由 tempname2 于 2012-11-12 22:16 編輯

預(yù)覽第六頁,long在x86_64上還是32位,這個武斷了吧。

雖然沒有統(tǒng)一規(guī)定,我印象中Linux下32位是32, 64位是64。看到這句還挺吃驚。特意查了一下,windows下似乎規(guī)定64位上long還是32位。但是籠統(tǒng)這樣表述缺妥啊。

===========
第一章做的像中學(xué)課本。。。。

字節(jié)內(nèi)的位順序,我記得see mips run里面講過,忘了最后是什么結(jié)論。 @cjaizss談一下?

作者: tempname2    時間: 2012-11-12 22:32
大致上看了一下預(yù)覽頁。不明白這本書的讀者定位?搭A(yù)覽頁這個架勢,后面內(nèi)容深度估計還沒有mik帖在論壇上文章的一半。

另外小小地吐槽一下(沒有惡意):這本書的寫作風(fēng)格,不像學(xué)院派。
作者: cjaizss    時間: 2012-11-12 22:36
tempname2 發(fā)表于 2012-11-12 22:08
預(yù)覽第六頁,long在x86_64上還是32位,這個武斷了吧。

雖然沒有統(tǒng)一規(guī)定,我印象中Linux下32位是32, 64位 ...

long的字節(jié)數(shù),甚至int的字節(jié)數(shù),已經(jīng)越來越是一個編譯器行為了。
bit序,我想這個原本是指串行通行的傳輸方式,作為電子工程師應(yīng)該再熟悉不過。
我猜測bit序可能是一個C語言里位域的實現(xiàn)方法吧,位域的順序,這個似乎是沒有標(biāo)準(zhǔn)。
作者: mik    時間: 2012-11-12 22:42
有中文手冊?我沒看到過,不知道,就算有,那么:

1) 首先,這書不是“翻譯”,因為我英文爛,也翻譯不了!
2) 其次,這是“探索”和“編程”,理論與實踐并重,很大部分內(nèi)容是寫實驗來驗證處理器的特性。
3) 再次,表面上會覺得是一本手冊,當(dāng)然你要把它當(dāng)作一本手冊,也是適合的,當(dāng)然并不能完全代替 intel 官方手冊。
4) 最后,每一章節(jié)都有 x86 和 x64 的講解,它們并重的。
  正如我在前言所說的:講 x64 并不能脫離 x86。那是不實際的,x64不是一個全新的 64 位平臺,它在 32 位的基礎(chǔ)上擴(kuò)展為 64 位平臺。如果有哪本書標(biāo)榜只描述 x64 體系那是“偽“x64書籍“。
  從另一方面來看:如果一本書只寫 x64 知識,那么,它很大部分的知識是和 x86 重疊的。當(dāng)然,除了 x64 體系中的“擴(kuò)展資源”有明顯的區(qū)別外!
  在編程上,很多時候 x86 和 x64 的編程方式可以混用,除了“地址寬度”和“操作數(shù)寬度”(寄存器),以及某些擴(kuò)展的“指令層面”上,有很明顯的區(qū)別外。其它方面區(qū)別甚微!
作者: tempname2    時間: 2012-11-12 23:08
中文版是開玩笑的


作者: ydswceo    時間: 2012-11-12 23:20
構(gòu)架我知道,就是構(gòu)架是怎樣建成的,bios跟它的關(guān)系是怎樣的?都不知道!哭!
作者: ydswceo    時間: 2012-11-12 23:21
構(gòu)架我知道,就是構(gòu)架是怎樣建成的,bios跟它的關(guān)系是怎樣的?都不知道!哭!
作者: 流氓無產(chǎn)者    時間: 2012-11-13 08:57
有什么應(yīng)用么?能帶來什么突破?
作者: hellioncu    時間: 2012-11-13 09:01
估計現(xiàn)在很少有人還會去研究這方面的知識,實際工作中直接用到的機(jī)會也很少。不過,對于一個C/C++程序員來說,學(xué)習(xí)下這方面的知識,可以從另一個方面吧幫助提高C/C++水平,寫出更高性能、更穩(wěn)定的程序。當(dāng)年我在學(xué)校學(xué)習(xí)的只是8086,不知道現(xiàn)在學(xué)校里教的什么,學(xué)習(xí)點x86x64,更新下知識也不錯,不然太落伍了。
作者: Drewsun    時間: 2012-11-13 09:05
我只知道裝32和64位Window Server 系統(tǒng)區(qū)別。。。
作者: pitonas    時間: 2012-11-13 09:34
我印象中盡可能多了解一些知識是始終是有益處的。
作者: xike2002    時間: 2012-11-13 11:20
下載了試讀版本,看了一下目錄,主要講了前兩章,第一章數(shù)與數(shù)據(jù)類型和第二章x86/x64編程基礎(chǔ),下來研究一下,稍后給出試讀感想。
作者: ynluliang    時間: 2012-11-13 11:21
我是一個從事我自己從來都沒弄明白的系統(tǒng)維護(hù)工作,安裝的都是RHEL AS版的X64位,為的就是支持2個CPU,大容量內(nèi)存,還有就是穩(wěn)定性方面,對于架構(gòu)方面,也想學(xué)點,關(guān)鍵是人在單位,身不由己啊。
作者: Godbach    時間: 2012-11-13 13:27
回復(fù) 1# send_linux

好活動,支持一把。



   
作者: 帥絕人寰    時間: 2012-11-13 13:29
媽的我已經(jīng)買了一本了怎么算? 三蛋?
作者: send_linux    時間: 2012-11-13 13:35
帥絕人寰 發(fā)表于 2012-11-13 13:29
媽的我已經(jīng)買了一本了怎么算? 三蛋?


問問作者吧,能退貨么?
作者: Hongqiyaodao    時間: 2012-11-13 14:13
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: 帥絕人寰    時間: 2012-11-13 15:25
send_linux 發(fā)表于 2012-11-13 13:35
問問作者吧,能退貨么?


還是你給我折現(xiàn)吧...
作者: send_linux    時間: 2012-11-13 15:30
帥絕人寰 發(fā)表于 2012-11-13 15:25
還是你給我折現(xiàn)吧...


你得先來兩段干貨啊,呵呵,給你折成積分吧,通用貨幣
作者: superwiles    時間: 2012-11-13 21:49
本帖最后由 superwiles 于 2012-11-13 21:56 編輯

仔細(xì)瀏覽了一下試讀部分, 我個人覺得這本書更多是intel 開發(fā)手冊的節(jié)選與延伸,沒有進(jìn)一步的闡述一些深入的內(nèi)容
實際上x86目前的isa只是為了考慮向后兼容, 底層早就是uops了。  希望能加入一些指令集背后的更深入的分析,
比如不同中斷模式對性能的影響,原子操作,cache(王齊有一篇很好的系統(tǒng)細(xì)致的總結(jié)), sse,avx 實際在優(yōu)化中的優(yōu)點與缺陷,這塊可以延伸到mkl,openmp的討論。
沒有覆蓋的內(nèi)容還有aes ni,PCLMULQDQ,  虛擬機(jī)相關(guān)的部分(目前的大熱門),

總之內(nèi)容我個人覺得和名字有點不符合, 沒看到多少探索的東西, 實際工程中的深入分析案例也沒在試讀版本中發(fā)現(xiàn), 定位應(yīng)該是入門的讀者吧。


作者: mik    時間: 2012-11-14 09:31
“intel手冊的節(jié)選與延伸”,是可以這么說的。
我在前言里就表明,是對intel所描述的東西進(jìn)行探索和論證。這本來就是目的。
本來手冊就有些東西描述不清,或有多少人真能透徹理解手冊。
至于說內(nèi)容與名字不符,我是不同意的。intel手冊本來就是講解x86/x64體系架構(gòu)的知識。難到這不是x86/x64體系知識?
處理器底層的微操作,cache結(jié)構(gòu),這些是硬件層面的知識,本不在這個描述范圍,
如何使用sse, avx 進(jìn)行優(yōu)化這些也不是體系架構(gòu)的知識描述內(nèi)。
至于虛擬機(jī)部分,篇幅太長不可能寫在一起。
在寫此本時,已經(jīng)計劃分上下冊,如果有機(jī)會再出書的話,虛擬機(jī)將會安排下冊(打算寫個處理器的虛擬機(jī)例子才動筆寫),以及一些未說完的事物。

ps: 這是我最后一次在CU對書評判的回應(yīng)。
我不想吹,也不想貶,是好是壞,由讀過的人去評判。
我只要踏踏實實,用心寫好一樣?xùn)|西就夠了。
作者: smalloc    時間: 2012-11-14 10:29
買了本。不看也收藏了。
mik,曾經(jīng)的明燈啊
作者: smalloc    時間: 2012-11-14 10:35
回復(fù) 23# 帥絕人寰


    A總送給我吧。我不介意有2本。
作者: action08    時間: 2012-11-14 11:39
回復(fù) 18# Drewsun


    有區(qū)別么??
作者: yecaokinux    時間: 2012-11-14 19:10
送我一本吧,剛剛好這段正在mouseos.com上看Opcode的東西
作者: captivated    時間: 2012-11-14 22:44

正好想要. 送我一本吧? 本人幫忙宣傳...
作者: cjdao    時間: 2012-11-14 22:45
呵呵,這么多大牛,貌似還沒人分享寶貴經(jīng)驗呀!作為一個菜鳥正好借此機(jī)會學(xué)習(xí)學(xué)習(xí),純作拋磚引玉
1.菜鳥的學(xué)習(xí)之路
本人勉強(qiáng)可以算得上是搞嵌入式開發(fā)的,但平時工作所能接觸無非是擺弄一些芯片廠商提供的api,對于底層的結(jié)構(gòu)和實現(xiàn)等細(xì)節(jié)全然無知;而個人對于底層的東西又比較感興趣,于是沖動下就買了塊arm開發(fā)板開始擺弄,從跟著datasheet用匯編編寫芯片外圍的裸機(jī)驅(qū)動程序,再到arm啟動代碼的編寫,再到依葫蘆畫瓢的實現(xiàn)一個極為簡易的操作系統(tǒng)。經(jīng)過這么一個過程,對于硬件系統(tǒng)架構(gòu),才算有了一個非常模糊輪廓認(rèn)識。
對于x86體系架構(gòu)的認(rèn)識,雖然在大學(xué)的時候就學(xué)習(xí)了微機(jī)原理,但是那時完全不知道那是個啥玩意,應(yīng)付考試后全部還給了老師。直到工作開始接觸linux后,才知道原來linux竟然是基于此體系架構(gòu)誕生的,而許多講解內(nèi)核的書籍都是以x86的實現(xiàn)為藍(lán)本的,因此才想去了解x86的。
第一本書《深入理解計算機(jī)系統(tǒng)》,該書也是以x86為藍(lán)本講解了x86最最基本的數(shù)據(jù)表示,基本匯編指令,存儲器管理,性能優(yōu)化等話題,算是對x86系統(tǒng)相關(guān)的入門級認(rèn)識
第二本書《匯編語言》--王爽,該書以淺顯易懂的方式講解了如何使用x86匯編語言進(jìn)行簡單的匯編程序設(shè)計,是適合我這種有匯編恐懼癥的人學(xué)習(xí)。
這幾乎就是個人的基礎(chǔ),請各位大牛支支招,個人目標(biāo)是學(xué)習(xí)linux內(nèi)核,x86這塊該如何往下學(xué)才可以達(dá)到要求?

2. 心態(tài)
記得論壇上某前輩曾說過:如果你并非真的對linux內(nèi)核有興趣,最好別去研究它!
現(xiàn)如今似乎沒多少人肯踏踏實實的學(xué)習(xí)研究基礎(chǔ)的東西了,處理器架構(gòu),匯編語言,操作系統(tǒng),似乎只有在大學(xué)里為了期末那60分才硬著頭皮去啃的東西。而且更可悲的是,越學(xué)越恐懼,因為越學(xué)越迷茫。人就是這么個現(xiàn)實的動物,當(dāng)你無法切身認(rèn)識到某些東西對于自己的實際意義時,便無法由內(nèi)至外的去關(guān)注它,學(xué)習(xí)也是如此!前幾天在網(wǎng)上看到了下面這段話,用于自勉:
     心安即是歸處
      既然選擇了編程,只管風(fēng)雨兼程
      你錯過了夏花絢爛,必將走進(jìn)秋葉靜羌

作者: captivated    時間: 2012-11-14 22:58

唯以興趣堅持之, 別無妙法.

若以功利而論, 這實在不是好的途徑.


作者: xike2002    時間: 2012-11-14 23:46
這兩天花時間讀了前兩章的內(nèi)容,第一章的內(nèi)容通俗易懂,記得以前上大學(xué)的時候?qū)W微機(jī)原理和匯編語言的時候?qū)W過這些內(nèi)容,但是現(xiàn)在仔細(xì)想一想都還給老師了,mik的這本書內(nèi)容講的很清晰,感覺比以前上學(xué)時候?qū)W的那本教材容易理解很多,例如二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制這些基本知識、還有浮點數(shù)以及向上溢出和向下溢出等等。
第二章首先講解了各種常用的編譯器,包括3個開源的編譯器nasm、fasm、yasm,還有兩種masm和gas。接著是機(jī)器語言和一個hello world的示例程序,下來又講述了16位編程、32位編程、64位編程的基礎(chǔ)知識,最后介紹了程序的編輯、編譯和運行等等。

總的感受就是這本書的內(nèi)容很實在,讀起來感覺很和好,越讀越想讀,希望有機(jī)會拜讀本書的完整版本。
作者: shang2010    時間: 2012-11-15 11:11
cjaizss 發(fā)表于 2012-11-12 22:36
long的字節(jié)數(shù),甚至int的字節(jié)數(shù),已經(jīng)越來越是一個編譯器行為了。
bit序,我想這個原本是指串行通行的傳輸 ...


編譯器很多都蠻奇怪的,想問個簡單的問題

有沒有這么一個表示整數(shù)的基本類型,像void *一樣,在32位機(jī)器就32位,64位就64位的?

int在16位就是16位的,32就32,64下還是32{:3_196:}
作者: hellioncu    時間: 2012-11-15 11:26
本帖最后由 hellioncu 于 2012-11-15 11:27 編輯
shang2010 發(fā)表于 2012-11-15 11:11
編譯器很多都蠻奇怪的,想問個簡單的問題

有沒有這么一個表示整數(shù)的基本類型,像void *一樣,在32位 ...


ptrdiff_t,大小跟指針一致
作者: shang2010    時間: 2012-11-15 11:29
本帖最后由 shang2010 于 2012-11-15 11:31 編輯
hellioncu 發(fā)表于 2012-11-15 11:26
ptrdiff_t,大小跟指針一致


+1
趕緊貼你們team的 jd{:3_188:}
作者: cjaizss    時間: 2012-11-15 11:34
shang2010 發(fā)表于 2012-11-15 11:11
編譯器很多都蠻奇怪的,想問個簡單的問題

有沒有這么一個表示整數(shù)的基本類型,像void *一樣,在32位 ...

似乎沒有標(biāo)準(zhǔn)保證有哪個類型可以做到如此
作者: zhaopingzi    時間: 2012-11-15 11:37
公司的程序猿TMD,開發(fā)的程序都是32位下的,不支持64位,所以老中OOM這個招
作者: shang2010    時間: 2012-11-15 11:37
cjaizss 發(fā)表于 2012-11-15 11:34
似乎沒有標(biāo)準(zhǔn)保證有哪個類型可以做到如此


可是搞編譯器的需要現(xiàn)在就動手準(zhǔn)備這個,,

要是128位時代來臨了,代碼移植又會頭疼的
作者: shang2010    時間: 2012-11-15 11:42
本帖最后由 shang2010 于 2012-11-15 11:50 編輯

回復(fù) 42# zhaopingzi


    程序猿主流薪水,兩萬多一點
作者: hellioncu    時間: 2012-11-15 12:06
shang2010 發(fā)表于 2012-11-15 11:29
+1
趕緊貼你們team的 jd


為嘛?
作者: oyesoyear    時間: 2012-11-15 16:02
上半年曾經(jīng)一直在看作者的mouseos站點,指令系統(tǒng)和 沉思錄,不知道 書的內(nèi)容和沉思錄相比,會更深入嗎?或者深入程度是否能夠相等呢。沉思錄的內(nèi)容還是不錯的,所以在看到出書的時候還是想買一本的。
作者: amarant    時間: 2012-11-15 23:08
本帖最后由 amarant 于 2012-11-16 14:25 編輯

1、關(guān)注系統(tǒng)程序員所關(guān)注的系統(tǒng)架構(gòu)問題探討
以前學(xué)內(nèi)核完全是依著內(nèi)核的基本經(jīng)典書籍學(xué)習(xí),理解其中的算法、實現(xiàn)等。到了實際代碼里,經(jīng)常是四五個函數(shù)一跟就到了架構(gòu)相關(guān)的代碼。那時候只學(xué)習(xí)過8086的實現(xiàn),系統(tǒng)資源簡單的不能再簡單了!后來也陸續(xù)補(bǔ)充了一些386的知識,對系統(tǒng)的實現(xiàn)的認(rèn)識也有很大的提高。但到了非常細(xì)節(jié)的問題,如為什么slab要著色?為什么原子操作能保證原子性?這些問題還總是一知半解。
直到后來開始學(xué)習(xí)一些RISC處理器的內(nèi)部實現(xiàn)才恍然大悟。x86的實現(xiàn),就鄙人來說是非常臃腫的,甚至是比較丑陋的。不過現(xiàn)在pc機(jī)都這個,咱們也沒辦法,還是得學(xué)一些基礎(chǔ)知識吧。LZ牛人,出的書一定是非常***(廣告內(nèi)容已被CU自動屏蔽,本處省略數(shù)千字)
一個處理器,就程序員的角度來看,我覺得主要有指令集、特權(quán)集管理、異常處理、訪存管理等。如果對指令集熟悉的話,發(fā)生kernel panic的時候,根據(jù)最后的幾條指令很大概率可以找到一些蜘絲馬跡。對異常機(jī)制熟悉的話,就可以結(jié)合異常pc地址等定位到錯誤pc代碼位置。而對于一個操作系統(tǒng)最關(guān)鍵的mm部分,如果不結(jié)合處理器的訪存來學(xué)習(xí)的話,我相信一定會比較迷茫的。
以上是作為一個專門調(diào)處理器的程序猿角度來說的,就做驅(qū)動等工作來說,我覺得能熟悉處理器一些實現(xiàn)也是很好的。這樣,至少可以知道為什么這里需要鎖、為什么這段內(nèi)存不能訪問、為什么驅(qū)動的io口要配置成uncache等實際問題的原因。
非常重要的一點,學(xué)習(xí)架構(gòu)知識可以滿足自己的好奇心,消磨自己的時間。
作者: to407    時間: 2012-11-16 08:17
sounds nice, 有時間先看下預(yù)覽
作者: shang2010    時間: 2012-11-16 09:18
回復(fù) 18# Drewsun


有什么區(qū)別??
作者: cjaizss    時間: 2012-11-16 11:51
amarant 發(fā)表于 2012-11-15 23:08
1、關(guān)注系統(tǒng)程序員所關(guān)注的系統(tǒng)架構(gòu)問題探討
以前學(xué)內(nèi)核完全是依著內(nèi)核的基本經(jīng)典書籍學(xué)習(xí),理解其中的算法 ...

RISC處理器內(nèi)部相對齊整,CISC有多種實現(xiàn)方式,相對比較古怪一些。不過X86目前畢竟是PC機(jī)的王道。
作者: lenky0401    時間: 2012-11-16 18:20
Intel先專注的是IA64,一種完全摒棄X86的架構(gòu),但這不太符合現(xiàn)實需求,因為這樣會導(dǎo)致太多的陳舊資源無法兼容使用,而AMD搞了一個AMD64,可以完全兼容之前的X86架構(gòu),在實踐中獲得成功,進(jìn)而Intel才弄了一個EMT64,這個與AMD64完全兼容。

沒有具體的問題,所以也不好說什么具體的東東,但根據(jù)我的個人經(jīng)驗,對于這些底層的細(xì)節(jié),一般的程序員不會去了解,正如前面幾個網(wǎng)友所說,工作中也很難用到,不過有幾個地方也許大多數(shù)的程序員都會用得到:

1,X64程序的調(diào)用規(guī)約,即ABI,這參考的是AMD的文檔:
http://www.x86-64.org/documentation.html
為什么這個會用得到,是因為c程序員太多了,而c底層比較清楚的話,那么提供的寄存器、c函數(shù)的參數(shù)傳遞、程序加載連接等,看這本手冊是必須的;了解這些對于查c程序的問題(比如踩棧、溢出等)還是非常有幫助的。

2,虛擬化的興起,那么對于這方面的關(guān)注肯定會越來越多:
我之前做過一段時間的Intel CPU虛擬化開發(fā),查看的手冊是:Intel? 64 and IA-32 Architectures Software Developer's Manual Volume 3B System Programming Guide,這在Intel官方下載得到。

3,Linux kernel 3.4提供了一個有意思的東東叫做X32 ABI,感興趣的可以看看這里:http://lenky.info/tag/x32-abi/

PS:之前看過mik的站點,很贊。
作者: superwiles    時間: 2012-11-16 22:35
本帖最后由 superwiles 于 2012-11-16 22:51 編輯

回復(fù) 47# amarant


現(xiàn)在的x86(自 Pentium 4之后 除了 atom)  本質(zhì)上都是risc, 上層保留的那都是為了向后兼容,有專門的decode layer, 下面全是uops,純risc了,



   
作者: scybzdk    時間: 2012-11-17 12:56

對于不是搞底層開發(fā)的我也說說我的一些看法:

記得學(xué)校里邊學(xué)過的就是8088,8086這些,要想深入對x86體系結(jié)構(gòu)的了解,先對那些cpu結(jié)構(gòu)是8位,16位的一定要掌握。

基礎(chǔ)打牢了,再深入了解32位的,甚至64位的。

一般說的bios,也就是主板上的一塊ROM存儲芯片,像網(wǎng)卡,顯卡也有自己的ROM裝有自己的BIOS。

BIOS中存儲硬件設(shè)備的一些信息,完成對設(shè)備的基本輸入輸出功能。

其他的一些芯片如主板上的RAM,內(nèi)存條的RAM,顯存的RAM或ROM,網(wǎng)卡ROM等等........就多了去了。

不過總的說來,這些存儲器芯片共同特點:都和cpu總線相連,cpu對他們讀寫都是通過那三大總線去操作。






作者: scybzdk    時間: 2012-11-17 13:28
發(fā)現(xiàn)圖書作者就是mik版主,作為cuer,這貼得支持,得頂上去!
作者: pmerofc    時間: 2012-11-17 17:47
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: captivated    時間: 2012-11-17 20:27
回復(fù) 51# lenky0401


    感謝斑竹提供的鏈接。
作者: hansion3406    時間: 2012-11-19 00:42
希望大家發(fā)表自己的看法!我先贊成一下
作者: pitonas    時間: 2012-11-20 09:48
只有經(jīng)過全方位的測試才是最為真實可靠的,關(guān)鍵是工作中用不上。
作者: xike2002    時間: 2012-11-20 11:05
回復(fù) 12# mik

前兩章試讀章節(jié)已經(jīng)完全讀完,感觸頗深,它不同于大學(xué)時候?qū)W習(xí)的那些所謂的教材,簡單概括的介紹一下就行了,而是寫的很詳細(xì)而且很注重細(xì)節(jié)內(nèi)容,希望能夠有機(jī)會品讀本書的其它章節(jié)內(nèi)容,期望作者能夠出更多的技術(shù)類圖書,供廣大開發(fā)者學(xué)習(xí)和參考。非常感謝!


   
作者: 帥絕人寰    時間: 2012-11-20 13:14
superwiles 發(fā)表于 2012-11-16 22:35
回復(fù) 47# amarant
、

不是從Pentium 4開始的,是從P6開始的。

Pentium 4是產(chǎn)品,其microarch是NetBurst

P6是microarch,其第一款產(chǎn)品是Pentium Pro -- 從這就開始了uops。
作者: superwiles    時間: 2012-11-20 19:24
回復(fù) 60# 帥絕人寰

赫赫 說netburst 之后也沒錯阿, 記晚了一代,應(yīng)該是從p6開始,但是開始這么多年了, cisc 還是大家對x86的印象

   
作者: dyyseo    時間: 2012-11-21 16:38
。。。。。。。。。。。。。。。
作者: davidfoxhu    時間: 2012-11-21 18:05
物價非漲啊,居然要119RMB,算了!
作者: sunny7476    時間: 2012-11-21 18:57
不是很同意前面一位同學(xué)說的先學(xué)8位、16位的CPU的說法。等這些學(xué)完了,人都老了(半開個玩笑)。

從本書的前兩章試讀章節(jié)來看。看上去有點類似《深入理解計算機(jī)系統(tǒng)》的第2、3兩章。由于后面的核心章節(jié)沒接觸到,所以也不好評論。不過作者的小站,mouseos,的確非常棒!從中能學(xué)到很多東西,或者說是讓新手少走許多彎路。試讀章節(jié)的排版太爛了,比如表格的排版,希望印刷的要好一些。

像這種X86/64底層的知識。就我目前了解的情況來看,估計就做編譯器、OS、驅(qū)動等的朋友用到吧,F(xiàn)在正在和一些朋友研究并試圖改進(jìn)一個操作系統(tǒng),基于BeOS的——Haiku,目前是作為興趣研究,所以最近在研究學(xué)習(xí)底層方面的知識。等要是有什么成果了,再和大家一起研究。(現(xiàn)在估計還不合適,沒成果,就不能忽悠大家。))

看@mik的小站,還有書的目錄,可以了解mik的水平和能力是有目共睹的。希望大家能包容一點。
作者: titer1    時間: 2012-11-21 20:45
cjdao 發(fā)表于 2012-11-14 22:45
呵呵,這么多大牛,貌似還沒人分享寶貴經(jīng)驗呀!作為一個菜鳥正好借此機(jī)會學(xué)習(xí)學(xué)習(xí),純作拋磚引玉
1.菜 ...


很有文學(xué)色彩啊
作者: titer1    時間: 2012-11-21 20:52
shang2010 發(fā)表于 2012-11-15 11:37
可是搞編譯器的需要現(xiàn)在就動手準(zhǔn)備這個,,

要是128位時代來臨了,代碼移植又會頭疼的


搞編譯器的同學(xué)其實是有意思的,
龍芯好像有個團(tuán)隊就在搞這個東東
作者: titer1    時間: 2012-11-21 20:57
zhaopingzi 發(fā)表于 2012-11-15 11:37
公司的程序猿TMD,開發(fā)的程序都是32位下的,不支持64位,所以老中OOM這個招


關(guān)于oom 于64位的關(guān)系,我查了下,還真的有這回事。

記一次OOM的排查過程

難怪我的y470 裝了64位總是卡,尤其適用chrome時,,我想大多數(shù)是 32位應(yīng)用程序沒有優(yōu)化造成的。
作者: crazyhadoop    時間: 2012-11-22 11:12
class FOO
{
public:
    FOO() {
        p = new Object;
    }
    ~FOO() {
        if (p) delete p;
        if (q) delete q;
    }
    void startup() {
        q = new Object;
    }
private:
    Object *p;
    Object *q;
};
int
main()
{
    FOO foo;
    return 0;
}

這個程序是個不安全的程序,
$ g++ -O2 test.cpp
$ ./a.out
Segmentation fault(core dumped)
原因在于哪里? 如果對編譯器以及底層信息了解的多點,這樣詭異的問題就不會出現(xiàn)了
作者: crazyhadoop    時間: 2012-11-22 11:15
回復(fù) 9# tempname2


    確實,這個long在64位上是64大小的, 一般程序都不會很依賴這樣的設(shè)定,都會明確規(guī)定好大小
作者: crazyhadoop    時間: 2012-11-22 11:17
回復(fù) 66# titer1


    在可預(yù)見的一段時間內(nèi),不會有128位的,這樣搞也是學(xué)術(shù)研究玩玩,更不用談移植了~
作者: crazyhadoop    時間: 2012-11-22 11:21
回復(fù) 51# lenky0401


    給力,cpu虛擬化水還是很深的,玩過網(wǎng)絡(luò)虛擬化的 表示這對系統(tǒng)要有深刻的把握~直接在硬件上動手術(shù)
作者: crazyhadoop    時間: 2012-11-22 11:22
回復(fù) 12# mik


    這本書非常適合計算機(jī)大三的學(xué)生去讀,淺顯易懂,有些知識也可以去實踐一下就知道對錯了,很不錯
作者: crazyhadoop    時間: 2012-11-22 11:25
回復(fù) 17# hellioncu


    做到底層的程序猿還是會大量用到這樣的知識的,不了解自己的工具,就無法把握住局面,一個mutex鎖,在進(jìn)程內(nèi)還是縣城內(nèi)的行為到底是如何表現(xiàn)的,如果不清楚mutex的內(nèi)存屬性,bug就來了
作者: crazyhadoop    時間: 2012-11-22 11:28
回復(fù) 28# superwiles


    intel會贈送一套cpu的技術(shù)文檔,不過一般人是沒有勇氣讀下去的,再說也沒有必要研究的那么深刻,還是先通過淺顯的一本書過渡一下靠譜啊~還是入門級選手多啊
作者: crazyhadoop    時間: 2012-11-22 11:30
回復(fù) 35# cjdao


    學(xué)習(xí)內(nèi)核,靠譜一點的方法,就是先了解進(jìn)程,調(diào)度,鎖,文件,然后寫應(yīng)用程序,看你能把握住你的程序的行為么~然后再學(xué)習(xí)內(nèi)核
作者: crazyhadoop    時間: 2012-11-22 11:32
回復(fù) 42# zhaopingzi


    目前了解較多的就是網(wǎng)絡(luò)相關(guān)的程序,對字節(jié)大小特別敏感,容易踩雷
作者: shang2010    時間: 2012-11-22 12:25
crazyhadoop 發(fā)表于 2012-11-22 11:12
class FOO
{
public:


obj是什么,如果foo的話,那么p還是static

作為一個編碼習(xí)慣,請在foo()構(gòu)成函數(shù)時將所有的指針都進(jìn)行初始化。不要假設(shè)邏輯未定義的事,出了問題后果很難被測試團(tuán)隊的那些流程發(fā)現(xiàn)
作者: crazyhadoop    時間: 2012-11-22 12:49
回復(fù) 77# shang2010


    是滴~ 懶惰初始化的程序bug無窮,要是不清晰一些底層的實現(xiàn),出問題都不知道咋回事
作者: lloydm    時間: 2012-11-22 23:09
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: brucewoo_cu    時間: 2012-11-24 15:27
很底層的東西,支持一下.
作者: manULinux    時間: 2012-11-25 09:49
書中有錯誤,請改正。{:3_182:}

無標(biāo)題.png (68.33 KB, 下載次數(shù): 62)

無標(biāo)題.png

作者: send_linux    時間: 2012-11-25 15:54
manULinux 發(fā)表于 2012-11-25 09:49
書中有錯誤,請改正。


哪里?
作者: manULinux    時間: 2012-11-26 10:03
回復(fù) 82# send_linux
最后一行中的“大部分” 吧 寫成”大部頭“ 了。



   
作者: send_linux    時間: 2012-11-26 10:18
manULinux 發(fā)表于 2012-11-26 10:03
回復(fù) 82# send_linux
最后一行中的“大部分” 吧 寫成”大部頭“ 了。


有“大部頭”這個說法吧,就是厚、篇幅長的意思吧?
作者: crazyhadoop    時間: 2012-11-26 23:22
回復(fù) 83# manULinux


    這個沒有問題吧
作者: zavakid    時間: 2012-11-28 18:40
講一講java開發(fā)為什么要關(guān)注底層的東西吧。

其實從學(xué)習(xí)里 開始學(xué)習(xí) java 開始,覺得一次編譯,到處運行,多酷!
但做久了,你需要理解高性能,多線程,java的內(nèi)存模型等等,慢慢的,隨著你的理解,就會發(fā)現(xiàn)這其實與底層知識離不開。

單就 java 一個 volatile 關(guān)鍵字,就需要你理解 cpu的緩存與主存同步問題。
看了java 的 內(nèi)存模型,才發(fā)現(xiàn)這都是為了使用底層cpu和內(nèi)存的工作機(jī)制而提出來的模型
看了 disruptor 之后,你會發(fā)現(xiàn)底層有個 false sharing 的問題
在 java 中使用 nio 編程時,你就發(fā)現(xiàn)同步,異步。但在底層,其實是使用了中斷的異步機(jī)制,你會發(fā)現(xiàn)很有趣,想去了解底層的一些實現(xiàn)。

在學(xué)習(xí) JVM 的時候,你會發(fā)現(xiàn) jvm 的執(zhí)行是基于棧的,那么你想了解jvm這個進(jìn)程在機(jī)器上是怎么執(zhí)行的吧,
基于棧和基于寄存器的執(zhí)行模型各是什么樣的?

之后需要使用數(shù)據(jù)庫吧,比如 nosql 中的 Redis,為什么使用他時需要規(guī)劃內(nèi)存容量,避免當(dāng)redis起復(fù)制進(jìn)程時,走 swap。
為什么 TT 可以把文件映射到內(nèi)存中來操作,什么是 page,什么是swap。

通過這些年的開發(fā),發(fā)現(xiàn)一點,不管是在多高的抽象層面,都需要了解底層的一些東西,都是靠底層的東西實現(xiàn)的,一層又一層,很多事情現(xiàn)狀的原因,往往是下一層面的現(xiàn)實決定的。
記得有人說過:你在開汽車的時候,你比騎自行車的人往上抽象一層,你可以不太關(guān)注路上的小石頭,但你還是需要注意下雨天的時候,輪胎會不會滑。
作者: superwiles    時間: 2012-11-29 00:41
公司最近剛剛公開了 Performance Monitoring Unit,   可以在下一冊中加入
作者: amarant    時間: 2012-11-29 10:45
回復(fù) 50# cjaizss


    我對x86的不是很熟悉,不知道是不是這個原因讓我不是很喜歡x86的這一套。不知道專門做過x86的人是不是也很喜歡這個處理器?@帥絕人寰
我一些不喜歡的理由:
1,模式上有一個很多余的實模式
2,內(nèi)存管理使用段式,頁式。64位上的好像又可以沒有段式了
3,寄存器的名字上原先使用eax之類的,后來又有r8等等通用寄存器。這些本來由ABI就可以解決了。
4,指令長度有長有短,很不方便分析。
總之,感覺就是一個東西反復(fù)修修補(bǔ)補(bǔ)。mips也是80年代的東西,但是到了現(xiàn)在和以前的也沒有很大區(qū)別。我很喜歡mips,不知道是不是因為對它了解的比較多
作者: cjaizss    時間: 2012-11-29 12:06
amarant 發(fā)表于 2012-11-29 10:45
回復(fù) 50# cjaizss

X86考慮的是兼容的問題,一些是歷史問題。
另外,我想你可能是做嵌入式的,使用RISC居多,對于CISC不是很喜歡。
作者: superwiles    時間: 2012-11-29 18:56
回復(fù) 88# amarant


Cisc  只是表象,前面已經(jīng)說過了,
其次 x86 主要一直堅持向后兼容性, 導(dǎo)致了補(bǔ)丁摞補(bǔ)丁,而且和windows 的互動考慮很多。



   
作者: amarant    時間: 2012-11-29 19:52
本帖最后由 amarant 于 2012-11-29 19:54 編輯

回復(fù) 90# superwiles


    你說的內(nèi)部采用risc我也知道。但是程序員關(guān)心的就是這些表象呀。最多關(guān)心下cache的刷寫,至于流水線這些都是設(shè)計CPU的人關(guān)心的。程序員無非就是使用下指令,關(guān)心下異常以及內(nèi)存管理。為什么x86一直在修修補(bǔ)補(bǔ)呢。我所表達(dá)的正是這個。mips也是198x年的東西。但是到了現(xiàn)在和那個時候的樣子還是差不多?赡軆(nèi)部實現(xiàn)已經(jīng)有了很大區(qū)別。但是以前的基本上都是兼容現(xiàn)在的。據(jù)我考察的只有一個TLB的RI/XI上的設(shè)計有點不兼容。
但是在x86上就完全不是這樣了。一開始考慮的是代碼存儲空間大小一些問題,使用了這種指令有長有短的CISC。后來發(fā)現(xiàn)通過流水線的方法很好,又采用這么奇怪的內(nèi)部一套實現(xiàn)。在就是地址上,段頁方式的保護(hù)完全沒有通過設(shè)置TLB的方法來的靈活方便。
說來說去,顯得我的怨念有些深了。可能我還不夠熟悉它,所以問問這些特別熟悉的人,內(nèi)心對x86是一種喜愛,還是惡心。
作者: superwiles    時間: 2012-11-29 20:36
x86 沒有好也沒有壞, 只是成功的商業(yè)產(chǎn)品,不斷在性能和成本之間妥協(xié)還要考慮ms的需求。
變長 指令的最大好處在當(dāng)時是代碼size 很小, 這樣 導(dǎo)致的 tlb miss 和 cache miss 會比較小,
性能會有提升, 因為最多的指令一般都是move , add  這類簡單的,  不會個個都是15Byte的指令,
pipeline的優(yōu)化對性能提升遠(yuǎn)不如改善 tlb shoot down 和 cache miss,  


作者: yulihua49    時間: 2012-12-01 21:41
titer1 發(fā)表于 2012-11-12 19:21
原來作者在這里 還有一個大本營
http://www.mouseos.com/

哎呀!你訪問的頁面不存在

可能網(wǎng)頁地址輸入錯了,請再核對下吧^-^

請點擊返回ChinaUnix首頁
請點擊返回ChinaUnix論壇首頁
請點擊返回ChinaUnix博客首頁

作者: titer1    時間: 2012-12-02 10:24
yulihua49 發(fā)表于 2012-12-01 21:41
哎呀!你訪問的頁面不存在

可能網(wǎng)頁地址輸入錯了,請再核對下吧^-^


剛才我測試了下,沒問題

C:\Documents and Settings\Administrator>ping www.mouseos.com

Pinging s532.now-cn.net [119.146.223.240] with 32 bytes of data:

Reply from 119.146.223.240: bytes=32 time=45ms TTL=117
Reply from 119.146.223.240: bytes=32 time=48ms TTL=117
Reply from 119.146.223.240: bytes=32 time=45ms TTL=117
Reply from 119.146.223.240: bytes=32 time=48ms TTL=117

Ping statistics for 119.146.223.240:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 45ms, Maximum = 48ms, Average = 46ms
作者: 帥絕人寰    時間: 2012-12-03 11:33
回復(fù) 91# amarant


    惡心多過喜愛吧,反正我是這樣。

不過,也有一些相當(dāng)驚艷的東西,例如sandy bridge的一些features。
作者: send_linux    時間: 2012-12-05 12:45
yulihua49 發(fā)表于 2012-12-01 21:41
哎呀!你訪問的頁面不存在

可能網(wǎng)頁地址輸入錯了,請再核對下吧^-^


哪里錯誤了?這個鏈接是去作者的官方網(wǎng)址的
作者: hansion3406    時間: 2012-12-06 23:48
支持一下哈
作者: titer1    時間: 2012-12-07 20:55
每個方面都說到了點子上,思考深刻,耐讀。
作者: titer1    時間: 2012-12-07 20:58
最難,最討厭 ,最麻煩,就是那些 編譯器相關(guān)或者依賴的行為
作者: titer1    時間: 2012-12-07 21:04
支持這種 理論 和 實踐并重 的 書。




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2