當前位置:首頁 » 手機資訊 » 系統怎樣編寫
擴展閱讀
怎樣減齡卷發好看 2024-10-20 09:21:52
要怎樣在電腦上寫文章 2024-10-20 09:21:36

系統怎樣編寫

發布時間: 2022-01-17 17:30:54

❶ 怎樣自己寫一個簡單的操作系統

只要你學過匯編和C,只滿足於寫個「簡單的操作系統",一兩天就能搞定。

隨便把你寫過的小程序,用直接寫硬碟軟體(或者自己編一個,調用winapi的WriteFile函數就可以),寫進硬碟/U盤引導區。記住,起始地址是7c00。

這就好了。注意,引導區只有440個位元組給你用,程序不能太大,所以這部分基本要用匯編寫。440位元組後面是硬碟/U盤分區信息,不可以亂動。亂動以後bios可能沒法識別硬碟/U盤。
引導區最後兩個位元組必須是55AA,不過一般你不用管,硬碟/U盤格式化的時候都已經給你寫好了。

這樣你的程序就在開機的時候直接運行了。

想調用大程序也沒問題,你需要寫個不超過440位元組的程序,負責把第二個扇區的內容載入內存並執行,由第二個扇區的代碼負責把所有代碼載入內存。後面的部分用C寫或者別的高級語言寫都沒什麼問題了。

❷ 怎樣編寫自己的操作系統

全世界才十幾個操作系統,你要自己編寫嗎?

❸ 怎麼編寫電腦系統

1. 建立開發環境
這一步非常的簡單。
將masm613和vc15的壓縮包分別解壓到e:masm615和e:msvc15目錄下。你也可以放到其他目錄下,根據自己的情況而定,但是下面用到的編譯命令需要作相應的修改。也不需要添加或修改任何的環境變數。
2. IBM PC的啟動及當時的內存使用情況
這一部分內容已經是老生常談了,但又不能不說。我們只說從硬碟引導的情況。
當BIOS經過POST(Power On Test Self)後,將硬碟MBR讀到內存0x0000:0x7C00的位置,然後從這里開始執行。一般的情況,MBR將選擇活動分區進行操作系統的啟動。在MBR開始執行時,內存使用的情況如下圖所示,地址數據用16進製表示:
這已經是老掉牙的內容了,但是,在20年前卻十分流行。如果想更詳細的了解這方面的內容,找本講解DOS的書看看吧。
我們自己的操作系統將被載入到0x1000:0x0100。這不是必需或者必然的,是人為選擇的,你也可以將其放在0x4321:1234等其他地方。但是,上圖中註明有其他用途的內存區域,應該保留,否則,你會後悔的。
3. 開發操作系統
我們自己的操作系統運行在實模式環境下(如果您不知道什麼是實模式,也請看看20年前出版的當時非常流行的書,或者直接請教當時的前輩高手)。即使你的電腦是P4的CPU,剛啟動時,也只相當於主頻較高的8086而已。但是,沒有關系。
首先,使用匯編語言寫一個框架,文件名是entry.asm:
;
; entry.asm
; Copyright (C) 2004, Tian XiangYuan
;
.MODEL TINY,C
.386p
option expr32
option casemap:none
cmain PROTO NEAR C
.CODE
ORG 0100h ;偏移地址
_start:
jmp begin
nop
DB 'TianXiangYuan',0 ;the magic of my os
begin:
cli
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov sp,0FFFFh
sti
call cmain ;調用C語言寫的主函數
mov ax,4c00h ;調用DOS的功能(為了調試),與我們自己的操作系統無關
int 21h
這段代碼非常簡單,應該沒有什麼問題。
已經說了,操作系統將從0x1000:0x0100載入,說是無心,實則有意。我們知道,TINY模式的程序,在DOS下運行時,其起始地址就是0x0100,前面的256Byte是參數部分。如果直接將操作系統在系統啟動時載入到0x1000:0x0100,調試時非常麻煩。我們將其起始地址設為0x0100,使其可以在DOS下運行(這也是在程序的最後包含int 21h指令的原因),確認正確無誤後,再進行下一步的開發。
下面再看C語言的代碼,文件名是main.c:
……
static void InitShell()
{
}
void cmain()
{
InitShell();
TermShell();
}
顧名思義,其中實現了一個簡單的shell。因為該程序本身是操作系統的一部分,所以,平時經常使用的一些C庫函數,在這里就不能使用了。總之,一切都要自己動手實現。幸好,在實模式下,幾乎所有的設備的驅動都包含在BIOS中了,我們可以直接使用。否則,連從鍵盤讀一個鍵值這樣的事都需要自己寫鍵盤的驅動程序,實在太難了。也是這個原因,我們自己的操作系統沒有將CPU轉到保護模式下,有心之人可以試試。
下面的事情幾乎都可以使用C語言實現了。
第一,初始化顯示模式。系統啟動時,顯卡已經被初始化成3模式了,就是80X25的彩色模式(除非你的顯示器是單色顯示器),我們不需要再做什麼了。當然,你也可以將顯卡設成VGA甚至SVGA模式,只要你的BIOS和顯卡支持。
第二,實現一個具有簡單交互功能的shell。代碼不全,請自己補齊,或參看附件。
/*
*從鍵盤讀一個字元,如果沒有輸入,則等待;返回值的低位元組為asii碼,高位元組為鍵盤掃描碼
*/
static int getch()
{
int chr=0;
__asm
{
mov ah,00h
int 16h
mov chr,ax
}
return chr;
}
/*
*使用TTY模式向屏幕輸出一個字元
*/
static void putch(unsigned char key)
{
__asm
{
mov bh,0
mov al,key
mov ah,0Eh
int 10h
}
}
#define KEY_BACKSPACE 0x08
#define KEY_ENTER 0x0D
#define KEY_NEWLINE 0x0A
#define KEY_ESCAPE 0x1B
static int printk(const char* str,...)
{
…… //給大家一點空間,自己實現吧
}
static void endline()
{
putch(KEY_NEWLINE); //Line Feed (LF)
putch(KEY_ENTER); //Enter (CR)
}
static char msg_prompt[]="CMD:";
static void deal_cmd(char* cmd_line,int cmd_len)
{
…… //也請大家自己實現吧,例如,可以實現help,dir,cls,halt等命令
…… //其實,就是字元串比較的過程
}
static void TermShell()
{
char cmd_line[80]={0,};
int cmd_len=0;
endline();
printk(msg_prompt,sizeof(msg_prompt));
for (;;)
{
cmd_line[cmd_len]=getch();
switch(cmd_line[cmd_len])
{
case KEY_ENTER:
if (cmd_len>1)
deal_cmd(cmd_line,cmd_len);
//break;
case KEY_ESCAPE:
cmd_len=0;
endline();
printk(msg_prompt,sizeof(msg_prompt));
break;
case KEY_BACKSPACE:
if (cmd_len>0)
{
putch(0x08);
putch(' ');
putch(0x08);
cmd_len--;
}
break;
default:
putch(cmd_line[cmd_len]);
cmd_len++;
}
}
}
更復雜、功能更強大的方法請參考BIOS的相關文檔。也請大家發揮想像力,不斷的擴展功能。說心裡話,這個「操作系統」比dos還原始!但畢竟是自己的操作系統。

❹ 怎麼寫操作系統

編寫操作系統是一個很復雜的系統工程,需要對系統硬體有一定的了解,需涉及到很多的知識面,非一日一人之功;
但是,如只實現操作系統的簡單功能,如任務調度、同步機制、中斷管理等,還是比較簡單的,尤其是一些針對嵌入式領域的操作系統還是比較短小精悍的,可以作為參考,如ucOS便是一個源碼開放的操作系統,可參考之;另,《自己動手寫操作系統》一書很不錯,可作為參考。

❺ 如何編寫操作系統

編寫操作系統
.
有人可能擔心自己既沒有學過計算機原理,也沒有學過操作系統原理,更不懂匯編語言,

對C語言也一知半解,能寫操作系統嗎?答案是沒問題。我將帶大家一步一步完成自己的操作系統。

當然如果學一學上述內容再好不過。

首先要明確處理器(也就是CPU)控制著計算機。對PC而言,啟動的時候,CPU都處在實模式狀態,

相當於只是一個Intel 8086處理器。也就是說,即使你現在擁有一個奔騰處理器,它的功能也只能

是8086級別。從這一點上來講,可以使用一些軟體把處理器轉換到著名的保護模式。只有這樣,

我們才可以充分利用處理器的強大功能。

編寫操作系統開始是對BIOS控制,取出存儲在ROM里的程序。BIOS是用來執行POST(Power On Self Test,

自檢)的。自檢是檢查計算機的完整性(比如外設是否工作正常、鍵盤是否連接等)。這一切完成以後,

你就會聽到PC喇叭發出一聲清脆的響聲。如果一切正常,BIOS就會選擇一個啟動設備,

並且讀取該設備的第一扇區(即啟動扇區),然後控制過程就會轉移到指定位置。

啟動設備可能是一個軟盤、光碟、硬碟,或者其它所選擇的設備。在此我們把軟盤作為啟動設備。

如果我們已經在軟盤的啟動扇區里寫了一些代碼,這時它就被執行。因此,我們的目的很明確,

就是往軟盤的啟動扇區寫一些程序。

首先使用8086匯編來寫一個小程序,然後將其拷貝至軟盤的啟動扇區。為了實現拷貝,要寫一個C程序。

最後,使用軟盤啟動計算機。

需要的工具

● as86:這是一個匯編程序,它負責把寫的代碼轉換成目標文件。

● ld86:這是一個連接器,as86產生的目標代碼由它來轉換成真正的機器語言。

機器語言是8086能夠解讀的形式。

● GCC:著名的C編程器。因為我們需要寫一個C程序將自己的OS轉移到軟盤中。

● 一張空軟盤:它用於存儲編寫的操作系統,也是啟動設備。

● 一台裝有Linux的計算機:這台機器可以很舊,386、486都可以。

在大部分標准Linux發行版中都會帶有as86和ld86。在我使用的Red Hat 7.3中就包含有這兩個工具,

並且在默認的情況下,它已經安裝在機器里。如果使用的Linux沒有這兩個工具,可以從網上下載,這兩個工具都包含在一個名為bin86的軟體包中。
.
http://wenku..com/link?url=CYgjm-tYrgwxnXGsu--
.
參考鏈接: http://blog.csdn.net/magictong/article/details/6164008
.
http://www.cnblogs.com/wangshuo/archive/2011/11/26/2264540.html
.
http://download.csdn.net/detail/woshiyioqizuo/5883187

❻ 怎麼寫自己的系統

如果是你自己用,安裝完軟體之後做個GHOST就可以了!

❼ 操作系統是如何編寫的用什麼語言編寫的

windows是一個大型的系統軟體,分成很多個部分,由很多名程序員分別完成的。每個程序員可能都有自己擅長的一種編程語言,各自使用自己擅長的語言(可能是c、c++、vb…………)編寫程序完成自己所負責的那部分程序功能,然後再編譯,組合成最後的windows操作系統軟體。整個過程類似工廠裡面生產大型設備,各自完成不同部件之後再組裝。
根據幾年前微軟在美國公布的內容,windows本身屬於微內核系統,windows98總共大概不到10萬行代碼(具體是2萬還是5萬記不清了),而windows2000則已經有20餘萬行代碼,其中80%是用c++編寫,其餘部分有c和匯編,底層介面用匯編編寫。
微內核系統從概念上是指「只包括操作系統的基本功能,例如內存管理和進程管理等等」,就連對各個文件系統的支持也不算在內,不過具體windows是不是這樣設計我就不清楚了。
所以一個微內核系統的操作系統能夠有20萬行代碼已經很多了。
之所以微軟選擇了c++而不想linux一樣選擇c,其根本原因就是windows操作系統本身是微內核系統,所以擴展性及以後的維護要求非常重要,所以c++的類的概念就能在這里很好的利用,但是畢竟c++的效率不如標准c及匯編,所以在一些明顯以效率為重的地方用的還是標准c及匯編。
編寫完畢後,windows上的其他用戶態程序(包括所有驅動程序、計算器、游戲等等所有你現在拿滑鼠能夠操作的東西)另行開發,例如:掃雷游戲就是用vb寫的。

❽ 如何編寫自己的操作系統

是修改oem信息嗎?

1.打開C:\Windows\System32,然後找到OemLogo.bmp,把你想要替換的圖片和這個文件替換就可以了。
2.如果你還想修改更多的ome信息,可以通過注冊表來修改。
打開注冊表,裡面找[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation]
"Manufacturer"="電腦品牌 "
"Model"="電腦型號"
"SupportURL"="電腦品牌的官網 "
"Logo"="系統盤符:\Windows\system32\oobe\oemlogo.bmp"

❾ 怎樣學會編寫系統軟體,需要哪些資料。

毫無疑問。想編寫系統一個人是絕對不夠的。你需要一個團隊,即便是絕對簡單的系統,你個人的力量也是有限的。
當然就寫軟體本身來說,就是一個積累的過程,所謂,積少成多嘛。現在的軟體業很大程度上來說都是相互抄襲了,會寫不如會粘,但是這樣的軟體行業是沒有前途的缺乏創新與挑戰。
就系統軟體也分很多種的,比如,計算機系統,一般的手機MTK系統,還有什麼智能機系統,單片機系統,等等。。。。都是對底層代碼的編寫。就是說這個是跟電腦本身的結構相關的。

最後說主題了。要想些系統軟體,你必須掌握的大該有:硬體系統,CPU原理,儲存原理,介面等以系列的系統組成相關知識外,必須要掌握的編程就是匯編了。
匯編很難。是面向機器的語言,很難懂。但是只要有愛都不是問題。不是說,堅持才是通向成功的唯一捷徑嗎?

補充一點:你需要英語基礎。

❿ 電腦系統是如何製作的

開機放入光碟,按Del進BIOS,找到Advanced Bios Features(高級BIOS參數設置)按回車進Advanced Bios Features(高級BIOS參數設置)界面。找到First Boot Device ,用PgUp或PgDn鍵,將HDD-O(硬碟啟動)改為CDROM(光碟機啟動),按ESC,按F10,按Y,回車,保存退出。 這時要注意觀察,啟動時計算機會先檢測光碟機,屏幕下面出現一行字元,意思就是讓你按任意鍵進入光碟啟動。按一下,聽到光碟機開始瘋轉,裝系統的過程就正式開始了! 裝系統中: 看屏幕中的提示,因為都是中文的所以幾乎不需要介紹什麼。首先需要用戶選擇是安裝新的操作系統還是修復,選擇安裝新的操作系統,然後按F8同意那些協議,出現盤符選擇界面。 用鍵盤上下鍵移動游標至你要安裝的盤符上,按「D」鍵,系統會提示說刪除該盤將會刪除所有資料,不管它,接著按「L」鍵再確定刪除。完成後屏幕返回到剛才的界面。然後選擇「在當前盤安裝WindowsXP」(大概意思,原文不記的了)後按回車,系統提示要格式化該盤。選擇「快速NTFS方式」格式化,此時出現格式化界面,稍候等進度條到100%時計算機開始自動裝入光碟機中的安裝文件,大概時間8分鍾左右(視光碟機速度而定),完成後系統自動重啟。 注意,此時要將光碟機里的安裝盤取出,為的是避免重啟後又自動讀取。 重啟後再次進入安裝界面,此時將安裝盤再放入後安裝繼續,幾乎不需要你做任何設置,點「下一步」就可以。不過中間有一個輸入序列號的過程得動動手。 這個過程大概40分鍾左右,其間屏幕會顯示一些關於windowsXP的相關功能信息,可以留意一下。完成後系統提示將安裝盤取出。你拿出來後,重啟,順便進BIOS將開機啟動順序改回至硬碟啟動,基本上就完成安裝過程了! 裝系統後: 一般在進入系統後常用硬體的驅動都已經安裝好,但不是全部。這時就需要用戶自己來安裝。首先查看機器哪些驅動未安裝!右鍵點擊「我的電腦」,選「屬性」,在「硬體」標簽里點擊「設備管理器」,凡是在設備前面有一個問號圖標的均表示該設備有問題。雙擊,按上面的提示將驅動安裝好。直到前面的「問號」全部消失為止。 需要裝的驅動一般有顯卡、音效卡、網卡、貓,一些比較高級的機器還有紅外、藍牙等適配器的驅動。 下面就是對系統的一些優化設置,如果你的機器配置不高,建議按我說的做。 重啟, 1> 右鍵單擊屏幕,選擇「屬性」。點擊「外觀」標簽,在「外觀與按鈕」的下拉菜單中選擇「Windows經典樣式」,然後在「設置」標簽里,按個人喜好調整屏幕解析度大寫,一般為1024*768。如果你用的是普通CRT顯示器,需要再點「監視器」標簽,將「屏幕刷新頻率」調整至「85赫茲」,點確定!屏幕看起來是不是舒服多了? 2> 右鍵單擊任務欄,選擇「屬性」,在「任務欄」標簽項中將「顯示快速啟動」前的復選框選中。然後再點擊「「開始」菜單」標簽,將菜單類改成「經典「開始」菜單」,點「確定」,看看現在的樣子是不是要舒服點呢?( 3> 右鍵單擊我的電腦,選擇「高級」標簽。單擊性能項里的「設置」按鈕。在視覺效果項里先點擊「調整為最佳性能」,然後在下面的復選項里選中「在文件夾中使用常見任務」。
贊同11|評論(2)