第一篇:瀏覽器內核總結
一、排版引擎.........................................................................................................................2
1、Trident(Windows)......................................................................................................2
2、Gecko(跨平臺)...........................................................................................................2
3、KHTML(Linux).............................................................................................................3
4、WebKit(跨平臺).........................................................................................................3
5、Chromium(跨平臺)....................................................................................................3
6、Presto(跨平臺)...........................................................................................................3
二、JavaScript引擎..................................................................................................................4
三、幾個測試...........................................................................................................................4
1、V8引擎............................................................................................................................4
2、Acid3................................................................................................................................4
3、HTML5.............................................................................................................................4
四、幾個奇葩...........................................................................................................................5
1、IETab................................................................................................................................5
2、Trident/Gecko雙核瀏覽器.............................................................................................5
3、Trident/WebKit雙核瀏覽器...........................................................................................5
4、Trident/Gecko/WebKit三核瀏覽器...............................................................................5
五、幾個小點...........................................................................................................................6
1、Chrome/Chromium.........................................................................................................6
2、MyIE、MyIE2、傲游、GreenBrowser...........................................................................6
3、頁面兼容性判斷.............................................................................................................6
4、一直被模仿,一直被超越的Opera..............................................................................6
5、這年頭流行刷版本號.....................................................................................................6
6、查看源代碼、開發者工具.............................................................................................7
7、幾個主要的瀏覽器官網以及版本下載.........................................................................7(1)Internet Explorer.....................................................................................................7(2)Mozilla Firefox.........................................................................................................7(3)Apple Safari..............................................................................................................7(4)Chromium................................................................................................................8(5)Google Chrome........................................................................................................8
一、排版引擎
首先厘清一下瀏覽器內核是什么東西。
英文叫做:Rendering Engine,中文翻譯很多,排版引擎、解釋引擎、渲染引擎,現在流行稱為瀏覽器內核,至于為什么流行這么稱呼,請自行領悟。
Rendering Engine,顧名思義,就是用來渲染網頁內容的,將網頁的內容和排版代碼轉換為可視的頁面。因為是排版,所以肯定會排版錯位等問題。為什么會排版錯位呢?有的是由于網站本身編寫不規范,有的是由于瀏覽器本身的渲染不標準。
現在有幾個主流的排版引擎,因為這些排版引擎都有其代表的瀏覽器,所以常常會把排版引擎的名稱和瀏覽器的名稱混用,比如常的說IE內核、Chrome內核。其實這樣子是不太合理的,因為一個完整的瀏覽器不會只有一的排版引擎,還有自己的界面框架和其它的功能支撐,而排版引擎本身也不可能實現瀏覽器的所有功能。下面羅列一下幾款主流的排版引擎和瀏覽器。
1、Trident(Windows)
IE瀏覽器所使用的內核,也是很多瀏覽器所使用的內核,通常被稱為IE內核。基于Trident內核的瀏覽器非常多,這是因為Trident內核提供了豐富的調用接口。老的Trident內核(比如常說的IE6內核)一直是不遵循W3C標準的,但是由于它的市場份額最大,所以后果就是大量的網站只支持老的Trident內核,依據W3C標準寫的網頁在老的Trident內核下面又出現偏差。目前可供調用的最新版的Trident內核是IE9所用的內核,相較之前的版本對W3C標準的支持增強了很多。
Trident內核的瀏覽器:
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
世界之窗
1、世界之窗
2、世界之窗3;
360安全瀏覽器1、360安全瀏覽器2、360安全瀏覽器3、360安全瀏覽器4、360安全瀏覽器5;
傲游
1、傲游2;搜狗瀏覽器1;騰訊TT;阿云瀏覽器(早期版本)、百度瀏覽器(早期版本)、瑞星安全瀏覽器、Slim Browser;
GreenBrowser、愛帆瀏覽器(12 之前版本)、115瀏覽器、155瀏覽器;
閃游瀏覽器、N氧化碳瀏覽器、糖果瀏覽器、彩虹瀏覽器、瑞影瀏覽器、勇者無疆瀏覽器、114瀏覽器、螞蟻瀏覽器、飛騰瀏覽器、速達瀏覽器、佐羅瀏覽器;
2、Gecko(跨平臺)
Netscape6啟用的內核,現在主要由Mozilla基金會進行維護,是開源的瀏覽器內核,目前最主流的Gecko內核瀏覽器是Mozilla Firefox,所以也常常稱之為火狐內核。因為Firefox的出現,IE的霸主地位逐步被削弱,Chrome的出現則是加速了這個進程。非Trident內核的興起
2012年HTML5主題峰會 “生態 共融 多贏”主題峰會瀏覽器專場TV專場渠道與合作工具與應用正在改變著整個互聯網,最直接的就是推動了編碼的標準化,也使得微軟在競爭壓力下不得不改進IE。不過比較可惜的是,雖然是開源的,也開發了這么多年,基于Gecko的瀏覽器并不多見,除了一些簡單的改動(坑爹的X瀏覽器)或者是重新編譯(綾川ayakawa、tete009),深度定制或者增強型外殼的還比較少見。另外就是有一些其它軟件借用了Gecko內核,比如音樂管理軟件SongBird。常見的Gecko內核的瀏覽器
Mozilla Firefox、Mozilla SeaMonkey Epiphany(早期版本)、Flock(早期版本)、K-Meleon
3、KHTML(Linux)
KDE開發的內核,速度快捷,容錯度低。這個內核可能不見得很多人知道,但是后面再看下去你就明白了。
常見的KHTML內核的瀏覽器:Konqueror
4、WebKit(跨平臺)
由KHTML發展而來,也是蘋果給開源世界的一大貢獻。是目前最火熱的瀏覽器內核,火熱倒不是說市場份額,而是應用的面積和勢頭。因為是脫胎于KHTML,所以也是具有高速的特點,同樣遵循W3C標準。
常見的WebKit內核的瀏覽器:Apple Safari、Symbian系統瀏覽器
5、Chromium(跨平臺)
維基百科里面并沒有將Chromium從WebKit分出來,這個區分完全是基于我個人的惡趣味。記得以前看過一個大牛的博文說過,Chromium把WebKit的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼,現在只要兩個小時就能搞定。這個我自己也沒有考究過,但是估計可信。這個也能解釋為什么Gecko和WebKit出來了這么久,第三方編譯、定制的版本并不多,但是由Chromium衍生出來的瀏覽器早就滿坑滿谷了。
常見的Chromium內核的瀏覽器:Chromium、Google Chrome、SRWare Iron、Comodo Dragon
6、Presto(跨平臺)
Opera的內核,準確地說,是Opera 7.0及以后版本的內核,Opera 3.5-6.1版本使用的內核叫做Elektra。不用說,Presto對W3C標準的支持也是很良好的。雖然我很喜歡Opera,但是我對Presto的渲染速度一直有保留態度。之前在OperaChina論壇看見有人說過,Presto優先解析文字,保證可閱讀性,媒體資源的渲染放后。常見的Presto內核的瀏覽器:Opera
二、JavaScript引擎
說完了排版引擎,接下來說說JavaScript引擎。顧名思義,JavaScript引擎就是用來渲染JavaScript的。為什么要單獨拿出來說呢?因為它涉及到跑分。經常看見很多文章在報道說哪個瀏覽器更快,其實大部分說的就是JavaScript的渲染速度,而不是頁面的載入速度。在網速許可的情況下,其實各個瀏覽器的頁面載入速度差別不大(Opera遜色一些)。那是不是說對比JavaScript的渲染速度其實沒有意義?也不是這么說,因為現在JavaScript在頁面中的比重會越來越大,越來越多的動態頁面開始大量借助JavaScript,比如現在主流的SNS、郵箱、網頁游戲,所以JavaScript的渲染速度也是一個很重要的指標。JavaScript的渲染速度越快,動態頁面的展示也越快。Opera在JavaScript引擎的跑分上面一直都是很牛逼的,一般來說最新測試版之間PK,Opera基本都會奪冠。
1、Chakra 查克拉,IE9啟用的新的JavaScript引擎。
2、SpiderMonkey/TraceMonkey/JaegerMonkey SpiderMonkey應用在Mozilla Firefox 1.0-3.0,TraceMonkey應用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey應用在Mozilla Firefox 4.0及后續的版本。
3、V8 應用于Chrome、傲游3。
4、Nitro 應用于Safari 4及后續的版本。
5、Linear A/Linear B/Futhark/Carakan Linear A應用于Opera 4.0-6.1版本,Linear B應用于Opera 7.0~9.2版本,Futhark應用于Opera 9.5-10.2版本,Carakan應用于Opera 10.5及后續的版本。
6、KJS KHTML對應的JavaScript引擎
三、幾個測試
1、V8引擎
http://v8.googlecode.com/svn/data/benchmarks/v6/run.html
現在很多“雙核”瀏覽器都用它來跑分測試JavaScript引擎,分數越高越好。
2、Acid3
http://acid3.acidtests.org/
標準支持測試,分數越高越好,滿分是100分。
3、HTML5
http://?hl=zh-cn Beta在線安裝包:
http://?hl=zh-CN&extra=betachannel Dev在線安裝包: http://?hl=zh-CN&extra=devchannel Canary在線安裝包: http://?hl=zh-CN&extra=canarychannel
Stable離線安裝包:
http://?hl=zh-CN&standalone=1 Beta離線安裝包: http://?hl=zh-CN&standalone=1&extra=betachannel Dev離線安裝包:
http://?hl=zh-CN&standalone=1&extra=devchannel Canary離線安裝包:
http://?hl=zh-CN&standalone=1&extra=canarychannel(6)Opera 官網:
http://www.tmdps.cn/ 正式版:
http://www.tmdps.cn/download/ 測試版: http://snapshot.opera.com/windows/latest
第二篇:web項目測試兼容性測試以及四大內核瀏覽器
Pc/wap項目兼容性測試匯總
PC兼容性
1.操作系統兼容性 重點:XP、win7、win8 一般:Mac os、win10
2.分辨率兼容性
重點:小分辨率:1024*768;大分辨率:1920*1080 一般:其他
3.瀏覽器兼容性
重點:IE6(重點)、IE8、谷歌瀏覽器、狐火瀏覽器
一般:QQ、360、獵豹、搜狗、遨游、Safari、win10的Spartan、IE7、IE9、IE10 Wap移動端兼容性
1.操作系統
2.3.5、4.1.2、4.2.2、5.0等等 推薦測試機(小米、紅米、三星)
2.瀏覽器兼容性
Ios : Safari自帶瀏覽器、UC、百度、360、QQ、微信(內嵌瀏覽器)安卓: 安卓自帶瀏覽器、UC、百度、360、QQ、微信(內嵌瀏覽器)重點:ios自帶瀏覽器、安卓自帶瀏覽器、UC瀏覽器
3.分辨率兼容性(尺寸)
重點:480*320、800*400、720 * 1280 一般:其
他
四大瀏覽器的內核
一、Trident內核代表產品Internet Explorer,又稱其為IE內核。Trident(又稱為MSHTML),是微軟開發的一種排版引擎。使用Trident渲染引擎的瀏覽器包括:IE(6/7/8/9/10)、360安全瀏覽器、傲游、世界之窗瀏覽器、Avant、騰訊TT、Netscape
8、NetCaptor、Sleipnir、GOSURF、GreenBrowser和KKman等。
二、Gecko內核代表作品Mozilla FirefoxGecko是一套開放源代碼的、以C++編寫的網頁排版引擎。Gecko是最流行的排版引擎之一,僅次于Trident。使用它的最著名瀏覽器有Firefox、Netscape6至9。
三、WebKit內核代表作品Safari、Chromewebkit 是一個開源項目,包含了來自KDE項目和蘋果公司的一些組件,主要用于Mac OS系統,它的特點在于源碼結構清晰、渲染速度極快。缺點是對網頁代碼的兼容性不高,導致一些編寫不標準的網頁無法正常顯示。主要代表作品有Safari和Google的瀏覽器Chrome。
四、Presto內核代表作品OperaPresto是由Opera Software開發的瀏覽器排版引擎,供Opera 7.0及以上使用。它取代了舊版Opera 4至6版本使用的Elektra排版引擎,包括加入動態功能,例如網頁或其部分可隨著DOM及Script語法的事件而重新排版 參考資料:百度百科
第三篇:linux內核啟動流程總結
X86體系結構內核啟動分析
一、硬件檢測
當機器加電后它首先執行BIOS(基本輸入輸出系統)中的代碼,BIOS首先執行加電自檢程序(POST),當自檢通過程便完成了硬件的啟動。當自檢完成后BIOS按照系統COMS中設置的啟動順序搜尋有效的啟動驅動器(這里我們以硬盤為例),并讀入系統引導扇區,并將系統控制權交給引導程序。
二、加載和執行引導程序 系統引導程序主要是把系統內核裝載到內存,啟動盤必須在第一個邏輯磁道上包含引導記錄。這512個字節的扇區又被稱作是引導扇區,在系統完成加電自檢后,BIOS從啟動盤中將引導扇區讀入到內存中。一旦引導記錄加載完畢,BIOS就交出系統的執行控制權,跳轉到引導程序的頭部執行。
有關linux pc的引導程序lilo和grub,lilo和grub可以引導多個系統,嵌入式系統上,最常見的bootloader是UBOOT,如果機器上要裝多系統的話一般都會用到它們,這一引導程序也儲存在引導扇區中或者存放在主引導記錄中(MBR),lilo和grub都許允用戶自己配置,它們在系統安裝時建立了關于系統內核占用磁盤數據塊的位置對照表。
比如,grub程序就非常強大。Gurb運行后,將初始化設置內核運行所需的環境。然后加載內核鏡像。grub磁盤引導全過程:
stage1: grub讀取磁盤第一個512字節(硬盤的0道0面1扇區,被稱為MBR(主引導記錄),也稱為bootsect)。MBR由一部分bootloader的引導代碼、分區表和魔數三部分組成。
stage1_5: 識別各種不同的文件系統格式。這使得grub識別到文件系統。
stage2: 加載系統引導菜單(/boot/grub/menu.lst或grub.lst根據grub版本不同文件位置會有所不同),加載內核vmlinuz和RAM磁盤initrd。
有時候基本引導裝載程序(stage1)不能識別stage2所在的文件系統分區,那么這時候就需要stage1.5來連接stage1和stage2了
假設有如下grub配置代碼 root(hd0,0)//grub分區
//linux分區 kernel /vmlinuz‐2.6.35.10‐74.fc14.i686 ro root=/dev/ram0 initrd /initramfs‐2.6.35.10‐74.fc14.i686.img 要搞清楚上面兩個root的關系,root(hd0,0)中的root是grub命令,它用來指定boot所在的分區作為grub的根目錄.而root=/dev/ram0是kernel的參數,它告訴操作系統內核加載完畢之后,真實的文件系統所在的設備.要注意grub的根目錄和文件系統的根目錄的區別。kernel命令用來指定內核所在的位置,“/”代表(hd0,0),也就是grub的根目錄initrd命令用來指定初始化ram的img文件所在位置。
三、內核啟動 內核映像文件vmlinuz:包含有linux內核的靜態鏈接的可執行文件,傳統上,vmlinux被稱為可引導的內核鏡像。vmlinuz是vmlinux的壓縮文件。其構成如下:
(1)第一個512字節(以前是在arch/i386/boot/bootsect.S)?
(2)第二個,一段代碼,若干個不多于512字節的段(以前是在arch/i386/boot/setup.S)?
(3)保護模式下的內核代碼(在arch/x86/boot/main.c)。
bzImage文件:使用make bzImage命令編譯內核源代碼,可以得到采用zlib算法壓縮的zImage文件,即bigzImage文件。老的zImage解壓縮內核到低端內存,bzImage則解壓縮內核到高端內存(1M(0x100000)以上),在保護模式下執行。bzImage文件一般包含有vmlinuz、bootsect.o、setup.o、解壓縮程序misc.o、以及其他一些相關文件(如piggy.o)。注意,在Linux 2.6內核中,bootsect.S和setup.S被整合為header.S。
initramfs(或initrd)文件:initrd是initialized ram disk的意思。主要用于加載硬件驅動模塊,輔助內核的啟動,掛載真正的根文件系統。
裝載Linux內核的第一步應該是加載實模式代碼(boot sector和setup代碼),grub就會把實模式代碼setup加載到0x07C00之上的某個地址上,其中setup的前512個字節是boot sector(引導扇區),現在這個引導扇區的作用并不是用來引導系統,而是為了兼容及傳遞一些參數。之后grub跳轉到setup的入口點,入口點為_start例程(根據arch/x86/boot/setup.ld可知)。然后setup最后跳到arch/x86/boot/main.c再經過一系列的跳轉,跳到start_kernel()函數,這是Linux內核的啟動函數。main.c文件是整個Linux內核的中央聯結點。每種體系結構都會執行一些底層設置函數,然后執行名為start_kernel的函數(在init/main.c中可以找到這個函數)。可以認為main.c是內核的“粘合劑(glue)”,之前執行的代碼都是各種體系結構相關的代碼,一旦到達start_kernel(),就與體系結構無關了。start_kernel()會調用一系列初始化函數來設置中斷,執行進一步的內存配置,解析內核命令行參數。然后調用fs/dcache.c:vfs_caches_init()---->fs/namespace.c:mnt_init()創建基于內存的rootfs文件系統(是一個虛擬的內存文件系統,稱為VFS),這是系統初始化時的根結點,即“/”結點,后面VFS會指向真實的文件系統。fs/namespace.c:mnt_init()會調用fs/ramfs/inode.c:init_rootfs()會調用fs/filesystems.c:register_filesystem()注冊rootfs。然后fs/namespace.c:init_mount_tree()調用fs/super.c:do_kern_mount()在內核中掛載rootfs,調用fs/fs_struct.c:set_fs_root()將當前的rootfs文件系統配置為根文件系統。此時rootfs里只有根目錄。
為什么不直接把真實的文件系統配置為根文件系統?答案很簡單,內核中沒有真實根文件系統設備(如硬盤,USB)的驅動,而且即便你將根文件系統的設備驅動編譯到內核中,此時它們還尚未加載,實際上所有內核中的驅動是由后面的kernel_init線程進行加載。另外,我們的root設備都是以設備文件的方式指定的,如果沒有根文件系統,設備文件怎么可能存在呢?
start_kernel()在最后會調用rest_init(),這個函數會啟動一個內核線程來運行kernel_init(),自己則調用cpu_idle()進入空閑循環,讓調度器接管控制權。搶占式的調度器就可以周期性地接管控制權,從而提供多任務處理能力。
kernel_init()用于完成初始化rootfs、加載內核模塊、掛載真正的根文件系統。(因為已經初始化了rootfs,而且還加載了內核模塊,所以可以找到設備如硬盤、內存,然后就可以把分區設置為根設備,并在根設備上掛載文件系統)掛載完真正的根文件系統后,goto到out,將掛載點從當前目錄移到“/”,并把“/”作為系統的根目錄,至此虛擬文件系統切換到了實際的根文件系統。
目前2.6的kernel支持三方式來掛載最終的根文件系統:
(1)所有需要的設備和文件系統驅動被編譯進內核,沒有initrd。通過“root=“參數指定的根設備,init/main.c:kernel_init()將調用prepare_namespace()直接在指定的根設備上掛載最終的根文件系統。通過可選的”init=“選項,還可以運行用戶指定的init程序。
(2)一些設備和文件驅動作為模塊來構建并存放的initrd中。initrd被稱為ramdisk,是一個獨立的小型文件系統。它需要包含/linuxrc程序(或腳本),用于加載這些驅動模塊,并掛載最終的根文件系統(這個根文件系統在pc平臺存放在硬盤上,結合使用pivot_root系統調用),然后initrd被卸載。initrd由prepare_namespace()掛載和運行。內核必須要使用CONFIG_BLK_DEV_RAM(支持ramdisk)和CONFIG_BLK_DEV_INITRD(支持initrd)選項進行編譯才能支持initrd。(方法1只掛載了一次文件系統,而這個方法掛載了兩次)
initrd文件通過在grub引導時用initrd命令指定。它有兩種格式,一種是類似于linux2.4內核使用的傳統格式的文件系統鏡像,稱之為imageinitrd,它的制作方法同Linux2.4內核的initrd一樣,其核心文件就是/linuxrc。另外一種格式的initrd是cpio格式的,這種格式的initrd從linux 2.5起開始引入,使用cpio工具生成,其核心文件不再
是/linuxrc,而是/init,這種initrd稱為cpioinitrd。為了向后兼容,linux2.6內核對cpioinitrd和imageinitrd這兩種格式的initrd均支持,但對其處理流程有著顯著的區別。cpioinitrd的處理與initramfs類似,會直接跳過
prepare_namespace(),imageinitrd的處理則由prepare_namespace()進行。
(3)使用initramfs。prepare_namespace()調用會被跳過。這意味著必須有一個程序來完成這些工作。這個程序是通過修改usr/gen_init_cpio.c的方式,或通過新的initrd格式(一個cpio歸檔文件)存放在initramfs中的,它必須是”/init“。這個程序負責prepare_namespace()所做的所有工作。為了保持向后兼容,在現在的內核中,/init程序只有是來自cpio歸檔的情況才會被運行。如果不是來自cpio歸檔,init/main.c:kernel_init()將運行prepare_namespace()來掛載最終的根文件系統,并運行一個預先定義的init程序(或者是用戶通過init=指定的,或者是/sbin/init,/etc/init,/bin/init)。initramfs是從2.5 kernel開始引入的一種新的實現機制。顧名思義,initramfs只是一種RAM filesystem而不是disk。initramfs實際是一個包含在內核映像內部的cpio歸檔,啟動所需的用戶程序和驅動模塊被歸檔成一個文件。因此,不需要cache,也不需要文件系統。編譯2.6版本的linux內核時,編譯系統總會創建initramfs,然后通過連接腳本archx86kernelvmlinux.lds.S把它與編譯好的內核連接成一個文件,它被鏈接到地址__initramfs_start~__initramfs_end處。內核源代碼樹中的usr目錄就是專門用于構建內核中的initramfs的。缺省情況下,initramfs是空的,X86架構下的文件大小是134個字節。實際上它的含義就是:在內核鏡像中附加一個cpio包,這個cpio包中包含了一個小型的文件系統,當內核啟動時,內核將這個cpio包解開,并且將其中包含的文件系統釋放到rootfs中,內核中的一部分初始化代碼會放到這個文件系統中,作為用戶層進程來執行。這樣帶來的明顯的好處是精簡了內核的初始化代碼,而且使得內核的初始化過程更容易定制。注意initramfs和initrd都可以是cpio包,可以壓縮也可以不壓縮。但initramfs是包含在內核映像中的,作為內核的一部分存在,因此它不會由bootloader(如grub)單獨地加載,而initrd是另外單獨編譯生成的,是一個獨立的文件,會由bootloader單獨加載到RAM中內核空間以外的地址處。目前initramfs只支持cpio包格式,它會被 populate_rootfs>unpack_to_rootfs(&__initramfs_start, &__initramfs_end&__initramfs_start, 0)函數解壓、解析并拷貝到根目錄。initramfs被解析處理后原始的cpio包(壓縮或非壓縮)所占的空間(&__initramfs_start&__initramfs_end)是作為系統的一部分直接保留在系統中,不會被釋放掉。而對于initrd鏡像文件,如果沒有在命令行中設置”keepinitd"命令,那么initrd鏡像文件被處理后其原始文件所占的空間(initrd_endinitrd_start)將被釋放掉。
四、啟動應用程序
prepare_namspace執行完后,真正的文件系統就掛載成功。轉入init_post(),它用來運行用戶空間的第一個進程,即眾所周知的init進程,在我的ubuntu下,init先讀/etc/init/下的配置文件,配置文件描述了運行級別、等,并通過從/etc/rcX.d目錄到/etc/init.d目錄的初始化腳本的鏈接來啟動與終止系統服務。執行相關腳本,以完成系統初始化,如設置鍵盤、字體,裝載模塊,設置網絡等,最后運行登錄程序,出現登錄界面。運行用戶空間中的init進程可能是以下幾種情況:
(1)noinitrd方式,則直接運行用戶空間中的/sbin/init(或/etc/init,/bin/init),作為第一個用戶進程。
(2)傳統的imageinitrd方式。運行的第一個程序是/linuxrc腳本,由它來啟動用戶空間中的init進程。
(3)cpioinitrd和initramfs方式。運行的第一個程序是/init腳本,由它來啟動用戶空間中的init進程。
總的來說,x86架構的Linux內核啟動過程分為6大步,分別為:
(1)實模式的入口函數_start():在header.S中,這里會進入眾所周知的main函數,它拷貝bootloader的各個參數,執行基本硬件設置,解析命令行參數。
(2)保護模式的入口函數startup_32():在compressed/header_32.S中,這里會解壓bzImage內核映像,加載vmlinux內核文件。
(3)內核入口函數startup_32():在kernel/header_32.S中,這就是所謂的進程0,它會進入體系結構無關的start_kernel()函數,即眾所周知的Linux內核啟動函數。start_kernel()會做大量的內核初始化操作,解析內核啟動的命令行參數,并啟動一個內核線程來完成內核模塊初始化的過程,然后進入空閑循環。
(4)內核模塊初始化的入口函數kernel_init():在init/main.c中,這里會啟動內核模塊、創建基于內存的rootfs、加載initramfs文件或cpioinitrd,并啟動一個內核線程來運行其中的/init腳本,完成真正根文件系統的掛載。
(5)根文件系統掛載腳本/init:這里會掛載根文件系統、運行/sbin/init,從而啟動眾所周知的進程1。
(6)init進程的系統初始化過程:執行相關腳本,以完成系統初始化,如設置鍵盤、字體,裝載模塊,設置網絡等,最后運行登錄程序,出現登錄界面。
如果從體系結構無關的視角來看,start_kernel()可以看作時體系結構無關的Linux main函數,它是體系結構無關的代碼的統一入口函數,這也是為什么文件會命名為init/main.c的原因。這個main.c粘合劑把各種體系結構的代碼“粘合”到一個統一的入口處。
第四篇:如何解除同桌100瀏覽器
如何解除同桌100瀏覽器(學生版)
首先 如果是Windows XP系統的 在顯示歡迎使用后立馬Ctrl+Alt+Del 只要出現TONGZHUO100字樣的一律關掉,不過要手快,多試幾次。
如果是Windows 7的多在同桌100瀏覽器啟動前開幾個窗口,然后進瀏覽器的時候選關機,之后就會現出下面的狀態框,只要不點同桌100瀏覽器界面就可以了 不過缺點是大人來輸密碼時會關機 而且本人用的是旗艦版,其他版本暫時不知,Windows 8暫時沒測試,不過以后可能會推出的。
不管是知道的人還是不知道的人,本人此舉純粹是提供福利給大家。勿噴..........
第五篇:瀏覽器引擎介紹
一些內容來自于我能找到的資料和我自己的理解,不保證正確,但是大致應該是沒錯的。
一、排版引擎
首先厘清一下瀏覽器內核是什么東西。
英文叫做:Rendering Engine,中文翻譯很多,排版引擎、解釋引擎、渲染引擎,現在流行稱為瀏覽器內核,至于為什么流行這么稱呼,請自行領悟。
Rendering Engine,顧名思義,就是用來渲染網頁內容的,將網頁的內容和排版代碼轉換為可視的頁面。因為是排版,所以肯定會排版錯位等問題。為什么會排版錯位呢?有的是由于網站本身編寫不規范,有的是由于瀏覽器本身的渲染不標準。
現在有幾個主流的排版引擎,因為這些排版引擎都有其代表的瀏覽器,所以常常會把排版引擎的名稱和瀏覽器的名稱混用,比如常的說IE內核、Chrome內核。其實這樣子是不太合理的,因為一個完整的瀏覽器不會只有一的排版引擎,還有自己的界面框架和其它的功能支撐,而排版引擎本身也不可能實現瀏覽器的所有功能。下面羅列一下幾款主流的排版引擎和瀏覽器。
1、Trident(Windows)
IE瀏覽器所使用的內核,也是很多瀏覽器所使用的內核,通常被稱為IE內核。基于Trident內核的瀏覽器非常多,這是因為Trident內核提供了豐富的調用接口。老的Trident內核(比如常說的IE6內核)一直是不遵循W3C標準的,但是由于它的市場份額最大,所以后果就是大量的網站只支持老的Trident內核,依據W3C標準寫的網頁在老的Trident內核下面又出現偏差。目前可供調用的最新版的Trident內核是IE9所用的內核,相較之前的版本對W3C標準的支持增強了很多。
Trident內核的瀏覽器:
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0); 世界之窗
1、世界之窗
2、世界之窗3;
360安全瀏覽器1、360安全瀏覽器2、360安全瀏覽器3、360安全瀏覽器4、360安全瀏覽器5;
傲游
1、傲游2;搜狗瀏覽器1;騰訊TT;阿云瀏覽器(早期版本)、百度瀏覽器(早期版本)、瑞星安全瀏覽器、Slim Browser;
GreenBrowser、愛帆瀏覽器(12 之前版本)、115瀏覽器、155瀏覽器;
閃游瀏覽器、N氧化碳瀏覽器、糖果瀏覽器、彩虹瀏覽器、瑞影瀏覽器、勇者無疆瀏覽器、114瀏覽器、螞蟻瀏覽器、飛騰瀏覽器、速達瀏覽器、佐羅瀏覽器;
2、Gecko(跨平臺)
Netscape6啟用的內核,現在主要由Mozilla基金會進行維護,是開源的瀏覽器內核,目前最主流的Gecko內核瀏覽器是Mozilla Firefox,所以也常常稱之為火狐內核。因為Firefox的出現,IE的霸主地位逐步被削弱,Chrome的出現則是加速了這個進程。非Trident內核的興起正在改變著整個互聯網,最直接的就是推動了編碼的標準化,也使得微軟在競爭壓力下不得不改進IE。不過比較可惜的是,雖然是開源的,也開發了這么多年,基于Gecko的瀏覽器并不多見,除了一些簡單的改動(坑爹的X瀏覽器)或者是重新編譯(綾川ayakawa、tete009),深度定制或者增強型外殼的還比較少見。另外就是有一些其它軟件借用了Gecko內核,比如音樂管理軟件SongBird。
常見的Gecko內核的瀏覽器
Mozilla Firefox、Mozilla SeaMonkey
Epiphany(早期版本)、Flock(早期版本)、K-Meleon3、KHTML(Linux)
KDE開發的內核,速度快捷,容錯度低。這個內核可能不見得很多人知道,但是后面再看下去你就明白了。
常見的KHTML內核的瀏覽器:Konqueror4、WebKit(跨平臺)
由KHTML發展而來,也是蘋果給開源世界的一大貢獻。是目前最火熱的瀏覽器內核,火熱倒不是說市場份額,而是應用的面積和勢頭。因為是脫胎于KHTML,所以也是具有高速的特點,同樣遵循W3C標準。
常見的WebKit內核的瀏覽器:Apple Safari、Symbian系統瀏覽器
5、Chromium(跨平臺)
維基百科里面并沒有將Chromium從WebKit分出來,這個區分完全是基于我個人的惡趣味。記得以前看過一個大牛的博文說過,Chromium把WebKit的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼,現在只要兩個小時就能搞定。這個我自己也沒有考究過,但是估計可信。這個也能解釋為什么Gecko和WebKit出來了這么久,第三方編譯、定制的版本并不多,但是由Chromium衍生出來的瀏覽器早就滿坑滿谷了。
常見的Chromium內核的瀏覽器:Chromium、Google Chrome、SRWare Iron、Comodo Dragon6、Presto(跨平臺)
Opera的內核,準確地說,是Opera 7.0及以后版本的內核,Opera 3.5-6.1版本使用的內核叫做Elektra。不用說,Presto對W3C標準的支持也是很良好的。雖然我很喜歡Opera,但是我對Presto的渲染速度一直有保留態度。之前在OperaChina論壇看見有人說過,Presto優先解析文字,保證可閱讀性,媒體資源的渲染放后。
常見的Presto內核的瀏覽器:Opera7、其它
http://zh.wikipedia.org/wiki/排版引擎
二、JavaScript引擎
說完了排版引擎,接下來說說JavaScript引擎。顧名思義,JavaScript引擎就是用來渲染JavaScript的。為什么要單獨拿出來說呢?因為它涉及到跑分。經常看見很多文章在報道說哪個瀏覽器更快,其實大部分說的就是JavaScript的渲染速度,而不是頁面的載入速度。在網速許可的情況下,其實各個瀏覽器的頁面載入速度差別不大(Opera遜色一些)。那是不是說對比JavaScript的渲染速度其實沒有意義?也不是這么說,因為現在JavaScript在頁面中的比重會越來越大,越來越多的動態頁面開始大量借助JavaScript,比如現在主流的SNS、郵箱、網頁游戲,所以JavaScript的渲染速度也是一個很重要的指標。JavaScript的渲染速度越快,動態頁面的展示也越快。Opera在JavaScript引擎的跑分上面一直都是很牛逼的,一般來說最新測試版之間PK,Opera基本都會奪冠。
1、Chakra
查克拉,IE9啟用的新的JavaScript引擎。
2、SpiderMonkey/TraceMonkey/JaegerMonkey
SpiderMonkey應用在Mozilla Firefox 1.0-3.0,TraceMonkey應用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey應用在Mozilla Firefox 4.0及后續的版本。
3、V8
應用于Chrome、傲游3。
4、Nitro
應用于Safari 4及后續的版本。
5、Linear A/Linear B/Futhark/Carakan
Linear A應用于Opera 4.0-6.1版本,Linear B應用于Opera 7.0~9.2版本,Futhark應用于Opera 9.5-10.2版本,Carakan應用于Opera 10.5及后續的版本。
6、KJS
KHTML對應的JavaScript引擎。
三、幾個測試
1、V8引擎
http://v8.googlecode.com/svn/data/benchmarks/v6/run.html
現在很多“雙核”瀏覽器都用它來跑分測試JavaScript引擎,分數越高越好。
2、Acid3
http://acid3.acidtests.org/
標準支持測試,分數越高越好,滿分是100分。
3、HTML5
http://?hl=zh-cn Beta在線安裝包:
http://?hl=zh-CN&extra=betachannel Dev在線安裝包:
http://?hl=zh-CN&extra=devchannel Canary在線安裝包:
http://?hl=zh-CN&extra=canarychannel Stable離線安裝包:
http://?hl=zh-CN&standalone=1 Beta離線安裝包:
http://?hl=zh-CN&standalone=1&extra=betachannel
Dev離線安裝包:
http://?hl=zh-CN&standalone=1&extra=devchannel
Canary離線安裝包:
http://?hl=zh-CN&standalone=1&extra=canarychannel(6)Opera 官網:
http://www.tmdps.cn/ 正式版:
http://www.tmdps.cn/download/ 測試版:
http://snapshot.opera.com/windows/latest