Time of Update: 2018-12-05
Time of Update: 2018-12-05
1. loop裝置介紹 在類 UNIX 系統裡,loop 裝置是一種偽裝置(pseudo-device),或者也可以說是模擬裝置。它能使我們像塊裝置一樣訪問一個檔案。在使用之前,一個 loop 裝置必須要和一個檔案進行串連。這種結合方式給使用者提供了一個替代塊特殊檔案的介面。因此,如果這個檔案包含有一個完整的檔案系統,那麼這個檔案就可以像一個磁碟裝置一樣被 mount 起來。 上面說的檔案格式,我們經常見到的是 CD 或 DVD 的 ISO 光碟片鏡像檔案或者是磁碟片(硬碟)的 *.
Time of Update: 2018-12-05
上次主要講了CFS調度的基本原理,並且沒有分析有喚醒和進程遷移時候的調度流程,所以本文主要從核心中幾個重要的調度點來詳細的分析一下調度的基本流程,主要以流程圖的形式給出。核心中主要有以下幾個重要的切入點:
Time of Update: 2018-12-05
通過fcntl設定FD_CLOEXEC標誌有什麼用?close on exec, not on-fork, 意為如果對描述符設定了FD_CLOEXEC,使用execl執行的程式裡,此描述符被關閉,不能再使用它,但是在使用fork調用的子進程中,此描述符並不關閉,仍可使用。eg:jamie@jamie-laptop:~$ cat test.c#include <fcntl.h>#include <unistd.h>#include
Time of Update: 2018-12-05
前段時間分析了qemu中ELF檔案的載入過程,個人感覺通過這個分析不但可以加深對ELF檔案格式的理解,而且能夠從側面瞭解作業系統載入器的工作過程。一、ELF相關的背景知識1. ELF格式檔案相關概念ELF格式檔案主要包括以下三種類型的檔案:可重定位的目標檔案(.o檔案) --> 用於連結產生可執行檔或動態連結程式庫檔案(.so)可執行檔 --> 進程映像檔案共用庫(.so檔案) -->
Time of Update: 2018-12-05
近來和一個師兄談到了CFS調度演算法,我以前一直以為CFS的任務就緒隊列是全域的,即有全域唯一的rq,但是師兄說是Per-CPU的,於是回來又仔細分析了下代碼,發現果然是Per-CPU的。由這個簡單的問題先來說說我為啥認為rq是全域唯一的,然後總結下CFS調度演算法的一些關鍵點。 一、Per-CPU的rq和全域唯一的rq 在Linux-2.6核心時代,為了更好的支援多核,Linux調度器普遍採用了per-cpu的run queue,從而克服了多CPU系統中,全域唯一的run
Time of Update: 2018-12-05
以前多次硬碟安裝過Ubuntu,所以下載了ubuntu 11.10後就按照以前常用的方法進行安裝,結果老是出現panic,後來google了下,發現有新的硬碟安裝方法,測試了下成功安裝,與大家分享下! 1 舊的硬碟安裝Ubuntu的方法 (1) 下載ubuntu iso(desktop版),解壓出casper檔案 (2) 在grub啟動菜單時,按c,敲入以下命令(前提是安裝了grub,現在grub或EasyBCD的安裝方法網上很多)
Time of Update: 2018-12-05
在Makefile中可以使用函數來處理變數,從而讓我們的命令或是規則更為的靈活和具 有智能。make所支援的函數也不算很多,不過已經足夠我們的操作了。函數調用後,函 數的傳回值可以當做變數來使用。 一、函數的調用文法函數調用,很像變數的使用,也是以“$”來標識的,其文法如下:$(<function> <arguments> ) 或是${<function> <arguments>}
Time of Update: 2018-12-05
一、什麼是INIT: init是Linux系統操作中不可缺少的程式之一。 所謂的init進程,它是一個由核心啟動的使用者級進程。 核心自行啟動(已經被載入記憶體,開始運行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動一個使用者級程式init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。 核心會在過去曾使用過init的幾個地方尋找它,它的正確位置(對Linux系統來說)是/sbin/init。如果核心找不到init
Time of Update: 2018-12-05
DDL—資料定義語言 (Data Definition Language)(Create,Alter,Drop,DECLARE) DML—資料操縱語言(Select,Delete,Update,Insert) DCL—資料控制語言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,簡要介紹基礎語句: 1、說明:建立資料庫 Create DATABASE database-name 2、說明:刪除資料庫 drop database
Time of Update: 2018-12-05
本文通過qemu中add指令的翻譯過程來加深瞭解向x86通用指令的結構以及qemu指令翻譯的基本通過。1. x86通用指令的基本結構(摘自intel 手冊)x86/x64 通用指令編碼的核心是:Opcode,ModRM 以及 SIBOpcode 提供指令的作業碼ModRM 提供運算元的定址,以及對 opcode 進行輔助補充SIB 提供更豐富的 memory 定址2.
Time of Update: 2018-12-05
從QEMU-0.10.0開始,TCG成為QEMU新的翻譯引擎,使QEMU不再依賴於GCC3.X版本,並且做到了“真正”的動態翻譯(從某種意義上說,舊版本是從編譯後的目標檔案中複製二進位指令)。TCG的全稱為“Tiny Code Generator”,QEMU的作者Fabrice Bellard在TCG的說明檔案中寫到,TCG起源於一個C編譯器後端,後來被簡化為QEMU的動態代碼產生器(Fabrice
Time of Update: 2018-12-05
1、 基本理論分析 qemu實現了兩種模式的模擬:qemu系統模擬和qemu使用者程式模擬。簡單的理解,qemu系統模擬可以理解為模擬了一台PC,可以在上面安裝OS,qemu使用者程式模擬僅僅是對CPU的模擬,即可以運行不同體繫結構的應用程式,可以理解為模擬了應用程式的運行環境。 下面通過實際的代碼來分析qemu使用者程式模擬的實現過程,在此之前,首先思考下可執行檔的載入執行過程,理解了這個過程有助於對qemu使用者程式模擬實現的理解。 以ELF檔案為例,其執行過程為:
Time of Update: 2018-12-05
1. TCG簡單介紹TCG(Tiny Code Generator)最早被用於C編譯器的後端。在TCG相關的代碼中,target指的是我們通常說的host,這一點需要注意,並不是我們理解的被模擬的平台。2. TCG動態翻譯技術的幾個概念(1)與dyngen一樣,TCG的“function”與qemu的TBs(Translated Block)相對應,即以分支跳轉指令結束的程式碼片段。(2)TCG中有三種變數:temporary, local temporary,
Time of Update: 2018-12-05
VirtualBox虛擬機器的串口通訊機制有兩種,一種是通過將虛擬機器的串口串連到主機的串口,另外一種是將虛擬機器的串口串連到主機上的一個具名管道,第一種方式到現在我還沒有實踐出來,目前只是對具名管道的方式實踐成功。1.啟用串口 建立虛擬機器後在設定中會出現串口面板,可以進行串口設定,預設是不起用的,一般連接埠選擇使用COM1對應虛擬機器的/dev/ttyS0,連接埠模式選擇Host
Time of Update: 2018-12-05
本文和大家分享一下如何解決jQuery與其它JS庫的衝突問題,可以作為參考哦。在jQuery庫中,幾乎所有的外掛程式都被限制在它的命名空間裡。全域的對象都很好地儲存在jQuery命名空間裡,因此當把jQuery和其它javascript類庫一起使用時,不會引起衝突.(注意:預設情況下,jQuery用$作為自身的縮寫而以)如果jQuery類庫和別的類庫衝突的話,可以使用jQuerynoConflict()函數來將變數$的控制權移交出給其它的javaScipt庫。看下面小片斷代碼 <scrip
Time of Update: 2018-12-05
Linux核心調試環境的搭建一直以來都是困擾Linux核心新手的一個問題,最近自己也開始做Linux下安全相關的開發,有時也碰到需要調試Linux核心和驅動的情況,著手搭建調試環境時碰到了許多難題,網上關於Linux核心調試的環境一般是給予VMware的,可惜我在前面說過,我的Ubuntu8.10AMD64bit裝不上VMware6.0或6.5,裝上了也用不了,我只好使用VirtualBox作為代替。
Time of Update: 2018-12-05
// JavaScript Document//基本的圖片轉場效果。在父元素中加上id="#main_pic_show";var inx=0;function flash(){var length=$("#main_pic_show").find("img").length-1;//擷取圖片的數量從0開始var index=new Array()/*初始化圖片索引數組比片數組為0 1 2 3 4則索引數組為3 4 0 1 2當圖片顯示時,當前圖片+2準備防止閃爍*/for (var i=2;i&
Time of Update: 2018-12-05
通過分析qemu的Makefile可以瞭解qemu代碼的組織方式以及qemu功能模組的劃分,一方面,有助於理解qemu原始碼設計思路,另一方面,有助於根據需求裁剪qemu代碼,產生精簡的符合制定要求的qemu。 為了更好的理解qemu的Makefile的設計,對於不熟悉makefile文法規則的同學建議閱讀下面兩篇文章: 1. 《Makefile常用函數分析》 2. 《跟我一起寫makefile》-----------------------------------------
Time of Update: 2018-12-05
眾所周知,linux最新的核心採用了CFS的調度機制,網上也有不少文章對CFS調度的源碼做了詳細的分析,但是大部分的文章太注重細節了,所以沒有把CFS的原理進行一下從整體上的概括,基於這個原因,本文要從CFS調度的基本原理以及在公平調度類的整個執行過程為主線來進行詳細的說明。 CFS(completely fair schedule),故名思議完全公平的調度,那麼它到底怎麼實現了完全的公平呢?既然講公平,那就應該有個評判的標準,在這之前我們先來講幾個比較重要的概念。調度實體(sched