Time of Update: 2018-12-04
貪心演算法一、基本概念: 所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的局部最優解。 貪心演算法沒有固定的演算法架構,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與目前狀態有關。 所以對所採用的貪心策略一定要仔細分析其是否滿足無後效性。二、貪心演算法的基本思路:
Time of Update: 2018-12-04
阻塞操作是指在執行裝置操作時若不能獲得資源則掛起進程,直到滿足可操作的條件後在進行操作。非阻塞操作的進程在不能進行裝置操作時並不掛起,它或者被放棄,或者不停的查詢,直到可以進行操作為止
Time of Update: 2018-12-04
前言:本文針對intel VT-X技術,結合QEMU和KVM代碼以及自己寫的執行個體詳細分析了一個虛擬設備的IO虛擬化過程。雖然現在KVM虛擬化效能非常好,發展也非常迅速,但是資料相對比較少,理論知識不是很成熟,其中理解上可能會有些偏差,希望大家指出並與本人聯絡和討論. 連絡方式:EMAIL:cdutshawn@gmail.com QQ:150197475 QQ群:33273092轉載的請加上此部分,以便技術的交流和本人進一步的研究。謝謝合作! 1.
Time of Update: 2018-12-04
首先進程地址空間和進程記憶體地區是兩個概念:1.進程地址空間:系統中每個使用者空間進程所看到的記憶體(虛擬記憶體).核心採用mm_struct結構來描述進程地址空間。2.進程的記憶體地區:在進程地址空間中,我們更關心的是進程有權訪問的虛擬記憶體地址區間,這些可以被合法訪問的地址區間成為記憶體地區。如果進程訪問不再有效範圍之內的記憶體,核心會終止進程提示段錯誤v。用vm_area_struct結構表示。vm_area_struct包含在mm_struct之中,在核心中被組織成單鏈表和紅/黑樹狀結構
Time of Update: 2018-12-04
今天對DM9000進行了移植,大概情況如下;首先要移植我們應該瞭解LINUX管理驅動的架構,這個我們在前面已經知道了;在arch/arm/plat-s3c24xx/common-smdk.c加入以下代碼,登記資源和把網卡加入裝置表:/* DM9000 */#if defined(CONFIG_DM9000)|| defined(CONFIG_DM9000_MODULE)static struct resource s3c_dm9k_resource[] = { [0] = {
Time of Update: 2018-12-04
Qt特徵定義檔案(裁剪定製Qt庫) Qt源碼目錄下src/tools/qfeatures.h檔案包含了src/tools/qconfig.h,因此修改qconfig.h,就可以編譯自己想要的特徵,即qt所有功能的一個子集。需要注意的是這樣的修改只有Qt/Embedded平台能支援,因為嵌入式環境中,減小qt庫的大小很重要,並且應用配置常常是固定的。config.h檔案定義的是需要去除的特徵。有些特徵依賴於其他的特徵,這些依賴關係在qfeatures.h可以看到。可選項如下: Macro
Time of Update: 2018-12-04
今天移植了下U-BOOT,具體細節不寫了,紀錄下大體過程:1.首先修改SDRAM的配置,SDRAM的初始化在U-BOOT的第一階段完成,在board/smdk2410/lowlevel_init.S中。參照具體硬體對晶片的7個片選進行配置。2.根據HCLK設定SDRAM的重新整理參數,主要是REFCNT寄存器。這裡需要根據所選用的SDRAM晶片手冊進行設定。3.進行時鐘設定。2440在系統時鐘設定、NANDFLASH控制器的操作上有些區別。2410的F:H:P=1:2:4,2440的F:H:P=
Time of Update: 2018-12-04
ZeroMQ 匯總所有分析,基於 2.1.0 的代碼。建立在 socket 之上的 light-weight message queue。不再需要自己管理 tcp 分包。簡單、實用。來自 iMatix 的一個庫,iMatix 主要面向金融行業。(商務邏輯決定設計)http://www.zeromq.org/最詳細的使用指南:http://zguide.zeromq.org/chapter:allZeroMQ 的使用:Hello 0MQ, Echo
Time of Update: 2018-12-04
下面我們具體分析一下malloc和free過程。tc_malloc的代碼如下所示:extern "C" PERFTOOLS_DLL_DECL void* tc_malloc(size_t size) __THROW { void* result = do_malloc_or_cpp_alloc(size); MallocHook::InvokeNewHook(result, size); return
Time of Update: 2018-12-04
嵌入式linux的tftp開發 環境包括兩個方面:一是嵌入式linux宿主機的 tftp-server支援,二是嵌入式linux目標機的tftp-client支援。因為u-boot本身內建支援tftp-client,所以嵌入 式目標機就不用配置了。下面就詳細介紹一下linux宿主機tftp-server的安裝配置。(1)安裝 SuSE Linux使用自己帶的YaST進行軟體包的安裝,具體安裝方法不在介紹。(2)修改檔案 在linux
Time of Update: 2018-12-04
Free過程1、 首先free根據提供的ptr指標,獲得此ptr所在的頁面,然後利用頁面號,擷取需要釋放的obj的size,這個size首先從pagemap_cache_中拿,如果不在pagemap_cache_中那麼直接通過頁面好擷取所在的span,如果span為NULL,那麼直接報錯返回,否則通過span擷取需要釋放的obj的size,並將size和page的關係放入pagemap_cache_。2、
Time of Update: 2018-12-04
分支限界法一、基本描述 類似於回溯法,也是一種在問題的解空間樹T上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法的求解目標是找出T中滿足約束條件的所有解,而分支限界法的求解目標則是找出滿足約束條件的一個解,或是在滿足約束條件的解中找出使某一目標函數值達到極大或極小的解,即在某種意義下的最優解。 (1)分支搜尋演算法
Time of Update: 2018-12-04
核心線程的退出要從建立開始,下面是kernel_thread的建立過程中regs.ip = kernel_thread_helper,也就是說建立的核心線程從kernel_thread_helper開始運行,kernel_thread_helper函數定義如下:其中的關鍵是,call *%rsi,調用的是kernel_thread中的fn參數(函數指標),調用結束後的語句是call
Time of Update: 2018-12-04
0)請先移植好SD卡和配置好核心對各類USB裝置的支援移植SD卡驅動 for mini2440 & Linux2.6.30.4配置USB for mini2440 & Linux2.6.30.4請先閱讀:busybox下mdev的使用以及mdev.conf的規則配置1)確保核心支援熱插拔# cd linux-2.6.30.4# vi .configCONFIG_KALLSYMS=y# CONFIG_KALLSYMS_ALL is not set# CONFIG_KALLSYMS_
Time of Update: 2018-12-04
這個算是基本的服務配置了,不過今天弄的時候報了些錯,這類總結下:1.注意配置核心,支援NFS服務。FILE SYSTEM->NET FILE SYSTEM->NFS相關的配上。2.配置主機的NFS服務並開啟。/etc/rc.d/nfs start3.今天遇到的錯誤:rpcbind: server localhost not responding, timed outRPC: failed to contact local rpcbind server (errno
Time of Update: 2018-12-04
Tcmalloc源碼簡單分析(1) (2011-10-08 15:36)分類:
Time of Update: 2018-12-04
2.6核心的源碼樹目錄下一般都會有兩個檔案:Kconfig和Makefile。分布在各目錄下的Kconfig構成了一個分布式的核心設定資料庫,每個Kconfig分別描述了所屬目錄源檔案相關的核心配置菜單。在核心配置make
Time of Update: 2018-12-04
由於時間問題,只把http地址粘貼在這裡做個標記:http://spice-space.org/kvm---Linux Kernel Visualization Manager 高效的輕量級的核心虛擬化解決方案virtio---para-virtualization 的IO裝置虛擬化架構,定義了guest OS的裝置驅動(前端)和host OS
Time of Update: 2018-12-04
最見看一個php的架構codeigniter,輕量級,高效,學習曲線平緩,很適合中小型項目使用。但是codeigniter和nginx組合無法直接正常工作。原因我就不詳細記載了,在網上找了好多方法都無效,後來查看了codeigniter的源碼和nginx的配置文檔說明,搞了將近一天時間,先將nginx的配置需要更改的地方說明如下:nginx版本:1.2.1 codeigniter:2.1.2nginx需要增加以下:location ~ \.php { #root
Time of Update: 2018-12-04
1. leveldb簡介leveldb是一個key/value型的儲存引擎,由google開發,並宣布在BSD許可下開放原始碼。2. leveldb下載和安裝leveldb託管在google code上,可以使用git下載原始碼:Plain代碼 git clone https://code.google.com/p/leveldb/ 下載完成之後,開始編譯leveldbPlain代碼