?? 1.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"> <META NAME="GENERATOR" CONTENT="《良友》v2.1, 作者:安富國,http://winking.126.com"> <TITLE>LFYOS</TITLE></HEAD><BODY style="font-family: 宋體; font-size: 9pt"> <CENTER><TABLE CELLSPACING=10 CELLPADDING=10 WIDTH="60%" BGCOLOR="#FFB693" ><TR><TD ALIGN=CENTER><FONT SIZE=+2><!--標(biāo)題由此開始-->LFYOS</TD></TR></TABLE></CENTER><p><h3>目 錄</h3><!--目錄由此開始--><A NAME="Content" ID="Content"></A><OL><LI><A HREF="#I502">LFYOS</A></LI><OL><LI><A HREF="#I503">安裝</A></LI><LI><A HREF="#I504">數(shù)據(jù)結(jié)構(gòu)</A></LI><OL><LI><A HREF="#I505">內(nèi)核</A></LI><LI><A HREF="#I506">內(nèi)存管理器</A></LI></OL><LI><A HREF="#I507">內(nèi)核實現(xiàn)</A></LI><OL><LI><A HREF="#I508">就緒線程</A></LI><OL><LI><A HREF="#I509">堆數(shù)據(jù)結(jié)構(gòu)</A></LI><LI><A HREF="#I510">就緒線程管理部件的數(shù)據(jù)結(jié)構(gòu)及其實現(xiàn)</A></LI><LI><A HREF="#I511">就緒線程管理部件提供的調(diào)用</A></LI></OL><LI><A HREF="#I512">信號量</A></LI><OL><LI><A HREF="#I513">信號量和P、V操作</A></LI><LI><A HREF="#I514">內(nèi)核中的信號量</A></LI><LI><A HREF="#I515">信號量管理數(shù)據(jù)結(jié)構(gòu)</A></LI><LI><A HREF="#I516">信號量管理的實現(xiàn)</A></LI></OL><LI><A HREF="#I517">線程遷移</A></LI><LI><A HREF="#I518">中斷</A></LI><LI><A HREF="#I519">處理機(jī)</A></LI><OL><LI><A HREF="#I520">處理機(jī)管理數(shù)據(jù)結(jié)構(gòu)</A></LI><LI><A HREF="#I521">處理機(jī)管理的實現(xiàn)</A></LI></OL><LI><A HREF="#I522">存儲管理</A></LI><OL><LI><A HREF="#I523">存儲管理數(shù)據(jù)結(jié)構(gòu)</A></LI><LI><A HREF="#I524">頁框狀態(tài)的變遷</A></LI><LI><A HREF="#I525">頁框散列隊列</A></LI><LI><A HREF="#I526">存儲管理的實現(xiàn)</A></LI></OL></OL><LI><A HREF="#I527">編程手冊</A></LI><OL><LI><A HREF="#I528">LFYOS中應(yīng)用程序編程模型</A></LI><OL><LI><A HREF="#I529">單一數(shù)據(jù)存儲模型</A></LI><LI><A HREF="#I530">實現(xiàn)了數(shù)據(jù)存儲、數(shù)據(jù)計算和資源管理的分離</A></LI><LI><A HREF="#I531">應(yīng)用程序之間的依賴關(guān)系</A></LI></OL><LI><A HREF="#I532">內(nèi)核提供的系統(tǒng)功能調(diào)用</A></LI><OL><LI><A HREF="#I533">參數(shù)傳遞</A></LI><LI><A HREF="#I534">系統(tǒng)功能調(diào)用的例子</A></LI></OL><LI><A HREF="#I535">內(nèi)核中系統(tǒng)功能調(diào)用的格式</A></LI><OL><LI><A HREF="#I536">線程遷移和線程返回</A></LI><LI><A HREF="#I537">對信號量執(zhí)行P、V操作</A></LI><LI><A HREF="#I538">信號量定時</A></LI><LI><A HREF="#I539">創(chuàng)建線程</A></LI><LI><A HREF="#I540">進(jìn)程資源</A></LI><LI><A HREF="#I541">申請和釋放信號量</A></LI><LI><A HREF="#I542">線程屬性</A></LI><LI><A HREF="#I543">查詢存儲體容量和地址</A></LI><LI><A HREF="#I544">設(shè)置文件窗口capability校驗</A></LI></OL><LI><A HREF="#I545">內(nèi)存管理器提供的功能調(diào)用</A></LI><OL><LI><A HREF="#I546">文件窗口</A></LI><LI><A HREF="#I547">地址映射</A></LI><LI><A HREF="#I548">flush</A></LI><LI><A HREF="#I549">標(biāo)志頁框</A></LI><LI><A HREF="#I550">存儲域</A></LI><LI><A HREF="#I551">計算存儲管理區(qū)需要的存儲空間</A></LI><LI><A HREF="#I552">初試化和安裝</A></LI><LI><A HREF="#I553">操縱文件窗口</A></LI></OL><LI><A HREF="#I554">文件系統(tǒng)提供的功能調(diào)用</A></LI></OL></OL></OL><hr><br><A NAME="I502" ID="I502"></A><center><b><font size=+2>LFYOS</font></b></center><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I503" ID="I503"></A><center><b><font size=+2>安裝</font></b></center><br>通過Redhat 7.1實施安裝<p> 我們安裝的開發(fā)環(huán)境是Redhat 7.1,內(nèi)核版本linux-2.4.2,下面以該版本為例來討論LINUX操作系統(tǒng)安裝和加載問題。在Redhat 7.1Linux操作系統(tǒng)中,當(dāng)重構(gòu)內(nèi)核時,首先進(jìn)入目錄/usr/src/ linux-2.4.2,執(zhí)行make命令,該命令根據(jù)文件/usr/src/ linux-2.4.2.Makefile中的規(guī)則,執(zhí)行規(guī)則指定的各個命令,其執(zhí)行過程是首先生成一個內(nèi)核圖象,然后再把該內(nèi)核圖象壓縮后,安裝到系統(tǒng)之中。生成內(nèi)核圖象的make規(guī)則為:<p>vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs<br> $(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \<br> --start-group \<br> $(CORE_FILES) \<br> $(DRIVERS) \<br> $(NETWORKS) \<br> $(LIBS) \<br> --end-group \<br> -o vmlinux<p> 我們實現(xiàn)虛擬地址空間基于文件操作系統(tǒng)的安裝和加載的方法是:修改該規(guī)則,使得做make重構(gòu)內(nèi)核時,不再根據(jù)生成linux內(nèi)核的目標(biāo)文件生成內(nèi)核圖象,而是根據(jù)生成虛擬地址空間基于文件操作系統(tǒng)的目標(biāo)文件生成內(nèi)核圖象,為此把上訴規(guī)則修改為:<p>vmlinux : $(LFYOS)<br> $(LD) $(LINKFLAGS) $(LFYOS) -o vmlinux<p> 變量$(LFYOS)中存放的是生成虛擬地址空間基于文件操作系統(tǒng)內(nèi)核需要的目標(biāo)文件,這樣當(dāng)我們重新做make重構(gòu)內(nèi)核時,就會根據(jù)變量$(LFYOS)中指定的目標(biāo)文件生成一個內(nèi)核圖象,并把該內(nèi)核圖象安裝到系統(tǒng)之中,而不再根據(jù)生成Linux的內(nèi)核文件生成和安裝LINUX內(nèi)核圖象。當(dāng)重新啟動系統(tǒng)時,就會把我們實現(xiàn)的內(nèi)核啟動起來,而不會啟動一個LINUX內(nèi)核。<p>安裝和加載的詳細(xì)步驟如下:<p> ·i.以超級用戶root注冊。安裝操作系統(tǒng)的內(nèi)核當(dāng)然必須是超級用戶root。<p> ·ii.檢查系統(tǒng)是否安裝了內(nèi)核開發(fā)的軟件包,是否安裝了lilo,如果沒有安裝安裝之,關(guān)于如何安裝請參考安裝LINUX的詳細(xì)資料,此處略。<p> ·iii.重構(gòu)一遍linux內(nèi)核,關(guān)于如何重構(gòu)linux內(nèi)核請參考安裝LINUX的詳細(xì)資料,此處略。<p> ·iv. 進(jìn)入目錄/usr/src/linux-X.X.X(其中的X.X.X為內(nèi)核版本號),復(fù)制一個Makefile,也就是執(zhí)行命令:<br> cp Makefile lfy_makefile<p> ·v.編輯文件lfy_makefile,確定其中的規(guī)則:<p>vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs<br> $(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \<br> --start-group \<br> $(CORE_FILES) \<br> $(DRIVERS) \<br> $(NETWORKS) \<br> $(LIBS) \<br> --end-group \<br> -o vmlinux<p>把該規(guī)則修改為:<p>vmlinux : $(LFYOS)<br> $(LD) $(LINKFLAGS) $(LFYOS) -o vmlinux<p> ·vi.進(jìn)入/etc目錄,編輯lilo的配置文件/etc/lilo.conf。該文件中的內(nèi)容類似于:<p>boot=/dev/hda<br>map=/boot/map<br>install=/boot/boot.b<br>prompt<br>timeout=180<br>message=/boot/message<br>linear<br>default=dos<p>image=/boot/vmlinuz-2.4.2-2<br> label=linux<br> read-only<br> root=/dev/hda7<p>other=/dev/hda1<br> optional<br> label=dos<p>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -