《獨闢蹊徑品核心:Linux核心原始碼導讀(china-pub首發)》的前言

我覺得作者講的學習方法很好值得看看。下面是本書作者所寫:幾乎每一個作業系統核心的學習者在初學階段都會感覺到難以入門。這是由於核心涉及到知識面非常廣泛,需要學習者從根本上掌握大量的知識,這包括:程式編譯,連結,裝載的細節,作業系統理論,電腦系統體繫結構,資料結構與演算法,深厚的C/組合語言編程功底。如此相對較高的門檻常常令很大一部分初學者望而卻步。那麼是不是一定要先學好以上的各門知識後才能學習核心呢?事實上大部分學習者在學習以上各門知識都會遇到同樣的問題,因為知識是一個網狀結構。所以重要的不是先去

Linux核心之旅

 核心模組是Linux核心向外部提供的一個插口,其全稱為動態可載入核心模組(Loadable Kernel Module,LKM),我們簡稱為模組。Linux核心之所以提供模組機制,是因為它本身是一個單核心(monolithic kernel)。單核心的最大優點是效率高,因為所有的內容都整合在一起,但其缺點是可擴充性和可維護性相對較差,模組機制就是為了彌補這一缺陷。一、

Mr. Process的一生-Linux核心的社會視角 (1)調度

文章目錄 出生開始工作評定動態職稱O(1)調度對交際花的優惠政策公司裡的超級特權階級-小霸王(real-time process)  轉載:http://www.manio.org/cn/scheduling-of-linux-view-of-society.htmlWritten by manio

Mr. Process的一生-Linux核心的社會視角 (2)啟動

文章目錄 BIOS完成下面的功能:Bootloader的工作Setup()的工作start_kernel()的工作  原文地址:http://www.manio.org/cn/startup-of-linux-view-of-society.html其實這才應該是這一系列文章的第一節,因為這篇文章講的是Apsara Distributed File System開天地的事。話說Mr.

linux核心網路通訊協定棧學習筆記(6)

本篇討論IP包的收發(暫不包括路由)先來看inet_init,首先是調用proto_register,註冊了tcp_prot, udp_prot, raw_prot,其中proto_register前半部分是初始化各種slab_cache,後半部分把這些struct

Linux I/O 調度方法

作業系統的調度有CPU調度    CPU schedulerIO調度       IO scheduler  IO調度器的總體目標是希望讓磁頭能夠總是往一個方向移動,移動到底了再往反方向走,這恰恰就是現實生活中的電梯模型,所以IO調 度器也被叫做電梯. (elevator)而相應的演算法也就被叫做電梯演算法. 而Linux中IO調度的電梯演算法有好幾種,as(Anticipatory),cfq(Complete Fairness Queueing),deadline,noop(No

LINUX 和 WINDOWS 核心的區別

 [聲明:歡迎轉載,轉載請註明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]關於LINUX和WINDOWS的口水站已經很多了。本文企圖從技術角度來比較下2個主流作業系統的異同。偏重於核心部分。一、動機:我最早是 WINDOWS 陣營的。在WINDOWS下寫過2年多的驅動程式。後來由於學習需要,轉投LINUX,一晃也快2年了。期間經曆了很多曲折,也學到了很多東西。由於在開發WINDOWS

Linux環境編程–waitpid與fork與execlp

 waitpid  waitpid(等待子進程中斷或結束)  表標頭檔  #include<sys/types.h>  #include<sys/wait.h>  定義函數 pid_t waitpid(pid_t pid,int * status,int options);  函數說明  waitpid()會暫時停止目前進程的執行,直到有訊號來到或子進程  結束。如果在調用 wait()時子進程已經結束,則 wait()會立即  返回子進程結束狀態值。

Linux下的AT&T文法(即GNU as 彙編文法)入門

        學習這麼長時間,一直在C語言這一層面上鑽研和打拚,日積月累,很多關於C的疑惑在書本和資料中都難以找到答案。程式員是追求完美的一個種群,其頭 腦中哪怕是存在一點點的思維黑洞都會讓其坐臥不寧。不久前在itput論壇上偶得《Computer Systems A Programmer's Perspective》(以下稱CS.APP)這本經典好書,中文有翻譯的《深入理解電腦系統》。是遂連夜拜讀以求解惑。雖說書中沒有能正面的回答我的一些疑惑,但是它卻為我指明了一條通向 “無惑”之路 --

linux系統層級的能夠開啟的檔案控制代碼的數file-max命令

 簡單的說, max-file表示系統層級的能夠開啟的檔案控制代碼的數量, 而ulimit -n控制進程層級能夠開啟的檔案控制代碼的數量.man 5 proc, 找到file-max的解釋:file-max中指定了系統範圍內所有進程可開啟的檔案控制代碼的數量限制(系統層級, kernel-level). (The value in file-max denotes the maximum number of file handles that the Linux kernel will

linux下設定nfs共用

網路檔案系統(NFS,Network File System)是一種將遠程主機上的分區(目錄)經網路掛載到本地系統的一種機制,通過對網路檔案系統的支援,使用者可以在本地系統上像操作本地分區一樣來對遠程主機的共用分區(目錄)進行操作。在嵌入式Linux 的開發過程中,開發人員需要在Linux 伺服器上進行所有的軟體開發,交叉編譯後,通用FTP 方式將可執行檔下載到嵌入式系統運行,但這種方式不但效率低下,且無法實現線上的調試。因此,可以通過建立NFS,把Linux

linux的qos機制 – dm-ioband篇 (4)

這篇延續上一篇的內容,通過幾個典型情境來分析dm-ioband的工作流程。第一個情境是 http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband/man/examples 中的example 1,首先調用命令建立兩個ioband device,# echo "0 $(blockdev --getsize /dev/sda1) ioband /dev/sda1 1 0 0 none weight 0 :80" | dmsetup create

修改linux的最大檔案控制代碼數限制

       修改linux的最大檔案控制代碼數限制的方法:      1)ulimit -n 65535              在當前session有效,使用者退出或者系統重新後恢複預設值      2)修改profile檔案:在profile檔案中添加:ulimit -n 65535             只對當個使用者有效      3)修改檔案:/etc/security/limits.conf,在檔案中添加:(立即生效-當前session中運行ulimit -a命令無法顯示)*

linux的qos機制 – dm-ioband篇 (3)

這一篇講解 ioband 的機制ioband的原理很簡單:ioband裝置設定了許多group,每個group有自己的權重和閥值,ioband驅動對於這些group的IO請求進行QoS控制。ioband裝置基於token來進行控制,根據group的權重分配不同的token。而策略也包括基於request的和基於sector的token控制dm-ioband涉及到幾個重要的資料結構:struct

linux的qos機制 – dm-ioband篇 (1)

dm-ioband並沒有整合在mainstream kernel裡,需要打patch才能用,而且,必須是kernel社區的源碼,像我用紅帽子的kernel打patch是會報錯的。。。http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband下載patch完了之後打上,然後make menuconfig,這時在lvm/raid/devicemapper下面把ioband模組勾選上,重新編譯安裝核心,重啟之後lsmod | grep

Linux下利用條件變數實現讀寫鎖

首先介紹下pthread_cond_t。 在Linux下稱之為狀態變數,與之相關的有下面幾個API:     int pthread_cond_init (pthread_cond_t *COND,pthread_condattr_t *cond_ATTR);    int pthread_cond_signal (pthread_cond_t *COND);    int pthread_cond_broadcast (pthread_cond_t *COND);    int

Linux下利用條件變數實現訊號量機制

接著上一篇,繼續討論如何利用pthread_cond_t來實現sem_t。目前的Linux核心都支援訊號量sem_t,但也有一些老的OS,如AIX4,和早期的Solaris並不支援訊號量,畢竟semaphore這個東東並沒有包括在POSIX標準裡。這種情況下有必要利用pthread_mutex_t + pthread_cond_t來類比semaphore啦。(什嗎?pthread_mutex_t pthread_cond_t也不支援? !@#¥%!) 其實實現起來真的很簡單, class

linux核心網路通訊協定棧學習筆記:vlan

這篇是我臨時加的,本來不打算放在整個核心協議棧分析的系列裡的,但我現在覺得vlan還是蠻重要的,而且討論vlan源碼的文章很少,不知道我這篇算不算第一篇 vlan的代碼都在net/8021q/的核心目錄下,首先我們來看8021q模組 (net/8021q/vlan.c)vlan_proto_init , vlan_cleanup_module 是模組的init/exit函數,我們來看vlan_proto_init,vlan_cleanup_module基本就是反過來做一遍static int

linux 中inode簡介

inode是一個重要概念,是理解Unix/Linux檔案系統和硬碟儲存的基礎。我覺得,理解inode,不僅有助於提高系統操作水平,還有助於體會Unix設計哲學,即如何把底層的複雜性抽象成一個簡單概念,從而大大簡化使用者介面。下面就是我的inode學習筆記,盡量保持簡單。一、inode是什嗎?理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector)。每個扇區儲存512位元組(相當於0.5KB)。作業系統讀取硬碟的時候,不會一個個扇區地讀取,這樣效率太低,而

Linux磁碟分割

在Windows作業系統中,是先將物理地址分開,再在分區上建立目錄.在Windows作業系統中,所有路徑都是從盤符開始,如C://program

總頁數: 4065 1 .... 471 472 473 474 475 .... 4065 Go to: 前往
Tags Index:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。