2012-08-10 75 views
-1

正如我們所知,OS需要一個c文件來執行。但是,當我們啓動一個內核時,首先它被解壓縮,但是用於解壓一個c函數。直到現在系統中沒有操作系統。那麼這個c代碼是如何執行的?內核啓動程序

+0

您正在尋找的術語是'bootstrapping'... – ChristopheD 2012-08-10 11:53:41

回答

0

關於BootmgrVmlinux(以及initrd)的維基百科文章應該略述該過程的工作原理。

基本上,當BIOS從磁盤的MBR加載引導加載程序(GRUB)時,GRUB會將一個小的ramdisk(initrd)加載到已經是非常輕量級操作系統的內存中,該系統能夠處理最基本的進程它需要:啓動真正的操作系統。

+0

但是在啓動過程中如何在沒有任何操作系統的情況下執行C文件? – user1590145 2012-08-10 12:32:45

0

您不需要操作系統來運行C代碼。

讓我澄清。

當一個程序由GCC編寫時,它生成一個對象代碼,它充當彙編器的輸入,它將該對象代碼轉換爲可由機器直接執行的二進制代碼。

但是,如果GCC直接生成二進制代碼,他們不需要任何彙編程序或任何操作系統。因此二進制可以通過指令直接執行硬件指令。

1

引導加載程序負責解壓縮並加載內核,然後將控制轉移到未壓縮和加載的內核。內核不像標準C可執行文件那樣執行。因此,不需要OS執行C代碼。作爲一個例子,有很多嵌入式系統沒有OS,但是C代碼被執行。此外,引導加載程序也用C語言編寫。執行的唯一要求是將代碼加載到內存中,並將控制權轉交給它。