Linux 0 11啟動時間的計算函式

2021-08-25 18:08:19 字數 526 閱讀 6073

main.c下時間初始化**,可以體會到位運算的精簡

#define cmos_read(addr) () #define bcd_to_bin(val) ((val)=((val)&15) + ((val)>>4)*10) static void time_init(void) while (time.tm_sec != cmos_read(0)); bcd_to_bin(time.tm_sec); bcd_to_bin(time.tm_min); bcd_to_bin(time.tm_hour); bcd_to_bin(time.tm_mday); bcd_to_bin(time.tm_mon); bcd_to_bin(time.tm_year); time.tm_mon--; startup_time = kernel_mktime(&time); }

kernel/mktime.c**,其中包含了閏年的計算,但是**確實那麼精簡,這就是演算法和思想

閏年的基本計算方法是:

如果 y 能被 4 除盡且不能被 100 除盡,或者能被 400 除盡,則 y 是閏年。

linux0 11的啟動順序

入上圖所示 1.系統加電後,80x86的cpu將進入實模式,並從位址0xffff0開始自動執行程式 而這個位址通常是rom bios中的位址。2.bios將執行一些系統的檢測,並在實體地址0處初始化中斷向量。將可啟動裝置的第乙個扇區 磁碟引導扇區mbr 讀入記憶體絕對位址0x7c00處,並跳轉到這個...

Linux0 11核心引導啟動過程概述

linux0.11僅支援x86架構。它的核心引導啟動程式在資料夾boot內,共有三個彙編 檔案。按照啟動流程依次是 1 bootsect.s。boot是啟動引導的意思,sect即sector,是扇區的意思,二者合在一起啟動引導扇區。這是 磁碟引導程式。2 setup.s 3 head.s 前兩個匯程...

Linux 0 11學習總結 引導啟動程式部分

linux 0.11學習總結 引導啟動程式部分 1.bios啟動 intel設計cpu開機加電即進入16位的實模式下執行,cs的值預設為0xffff,ip的值預設為0x0000,這樣cs ip指向了0xffff0的位址位置。bios程式位址只有8kb,範圍為0xfe000 0xfffff。bios程...