?? 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><!--標題由此開始-->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">數據結構</A></LI><OL><LI><A HREF="#I505">內核</A></LI><LI><A HREF="#I506">內存管理器</A></LI></OL><LI><A HREF="#I507">內核實現</A></LI><OL><LI><A HREF="#I508">就緒線程</A></LI><OL><LI><A HREF="#I509">堆數據結構</A></LI><LI><A HREF="#I510">就緒線程管理部件的數據結構及其實現</A></LI><LI><A HREF="#I511">就緒線程管理部件提供的調用</A></LI></OL><LI><A HREF="#I512">信號量</A></LI><OL><LI><A HREF="#I513">信號量和P、V操作</A></LI><LI><A HREF="#I514">內核中的信號量</A></LI><LI><A HREF="#I515">信號量管理數據結構</A></LI><LI><A HREF="#I516">信號量管理的實現</A></LI></OL><LI><A HREF="#I517">線程遷移</A></LI><LI><A HREF="#I518">中斷</A></LI><LI><A HREF="#I519">處理機</A></LI><OL><LI><A HREF="#I520">處理機管理數據結構</A></LI><LI><A HREF="#I521">處理機管理的實現</A></LI></OL><LI><A HREF="#I522">存儲管理</A></LI><OL><LI><A HREF="#I523">存儲管理數據結構</A></LI><LI><A HREF="#I524">頁框狀態的變遷</A></LI><LI><A HREF="#I525">頁框散列隊列</A></LI><LI><A HREF="#I526">存儲管理的實現</A></LI></OL></OL><LI><A HREF="#I527">編程手冊</A></LI><OL><LI><A HREF="#I528">LFYOS中應用程序編程模型</A></LI><OL><LI><A HREF="#I529">單一數據存儲模型</A></LI><LI><A HREF="#I530">實現了數據存儲、數據計算和資源管理的分離</A></LI><LI><A HREF="#I531">應用程序之間的依賴關系</A></LI></OL><LI><A HREF="#I532">內核提供的系統功能調用</A></LI><OL><LI><A HREF="#I533">參數傳遞</A></LI><LI><A HREF="#I534">系統功能調用的例子</A></LI></OL><LI><A HREF="#I535">內核中系統功能調用的格式</A></LI><OL><LI><A HREF="#I536">線程遷移和線程返回</A></LI><LI><A HREF="#I537">對信號量執行P、V操作</A></LI><LI><A HREF="#I538">信號量定時</A></LI><LI><A HREF="#I539">創建線程</A></LI><LI><A HREF="#I540">進程資源</A></LI><LI><A HREF="#I541">申請和釋放信號量</A></LI><LI><A HREF="#I542">線程屬性</A></LI><LI><A HREF="#I543">查詢存儲體容量和地址</A></LI><LI><A HREF="#I544">設置文件窗口capability校驗</A></LI></OL><LI><A HREF="#I545">內存管理器提供的功能調用</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">標志頁框</A></LI><LI><A HREF="#I550">存儲域</A></LI><LI><A HREF="#I551">計算存儲管理區需要的存儲空間</A></LI><LI><A HREF="#I552">初試化和安裝</A></LI><LI><A HREF="#I553">操縱文件窗口</A></LI></OL><LI><A HREF="#I554">文件系統提供的功能調用</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> 我們安裝的開發環境是Redhat 7.1,內核版本linux-2.4.2,下面以該版本為例來討論LINUX操作系統安裝和加載問題。在Redhat 7.1Linux操作系統中,當重構內核時,首先進入目錄/usr/src/ linux-2.4.2,執行make命令,該命令根據文件/usr/src/ linux-2.4.2.Makefile中的規則,執行規則指定的各個命令,其執行過程是首先生成一個內核圖象,然后再把該內核圖象壓縮后,安裝到系統之中。生成內核圖象的make規則為:<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> 我們實現虛擬地址空間基于文件操作系統的安裝和加載的方法是:修改該規則,使得做make重構內核時,不再根據生成linux內核的目標文件生成內核圖象,而是根據生成虛擬地址空間基于文件操作系統的目標文件生成內核圖象,為此把上訴規則修改為:<p>vmlinux : $(LFYOS)<br> $(LD) $(LINKFLAGS) $(LFYOS) -o vmlinux<p> 變量$(LFYOS)中存放的是生成虛擬地址空間基于文件操作系統內核需要的目標文件,這樣當我們重新做make重構內核時,就會根據變量$(LFYOS)中指定的目標文件生成一個內核圖象,并把該內核圖象安裝到系統之中,而不再根據生成Linux的內核文件生成和安裝LINUX內核圖象。當重新啟動系統時,就會把我們實現的內核啟動起來,而不會啟動一個LINUX內核。<p>安裝和加載的詳細步驟如下:<p> ·i.以超級用戶root注冊。安裝操作系統的內核當然必須是超級用戶root。<p> ·ii.檢查系統是否安裝了內核開發的軟件包,是否安裝了lilo,如果沒有安裝安裝之,關于如何安裝請參考安裝LINUX的詳細資料,此處略。<p> ·iii.重構一遍linux內核,關于如何重構linux內核請參考安裝LINUX的詳細資料,此處略。<p> ·iv. 進入目錄/usr/src/linux-X.X.X(其中的X.X.X為內核版本號),復制一個Makefile,也就是執行命令:<br> cp Makefile lfy_makefile<p> ·v.編輯文件lfy_makefile,確定其中的規則:<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>把該規則修改為:<p>vmlinux : $(LFYOS)<br> $(LD) $(LINKFLAGS) $(LFYOS) -o vmlinux<p> ·vi.進入/etc目錄,編輯lilo的配置文件/etc/lilo.conf。該文件中的內容類似于:<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>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -