🔧 改用local apic定时器进行进程时间片更新

This commit is contained in:
fslongjin
2022-07-11 21:47:28 +08:00
parent 594aeadf65
commit defb9e769c
9 changed files with 220 additions and 51 deletions

View File

@ -32,6 +32,8 @@
#include <driver/uart/uart.h>
#include <driver/video/video.h>
#include <driver/interrupt/apic/apic_timer.h>
unsigned int *FR_address = (unsigned int *)0xb8000; //帧缓存区的地址
ul bsp_idt_size, bsp_gdt_size;
@ -39,7 +41,6 @@ struct memory_desc memory_management_struct = {{0}, 0};
// struct Global_Memory_Descriptor memory_management_struct = {{0}, 0};
void test_slab();
struct gdtr gdtp;
struct idtr idtp;
void reload_gdt()
@ -144,14 +145,15 @@ void system_initialize()
HPET_measure_apic_timer_freq();
// current_pcb->preempt_count = 0;
// kdebug("cpu_get_core_crysral_freq()=%ld", cpu_get_core_crysral_freq());
// while(1);
process_init();
// 对显示模块进行高级初始化启用double buffer
video_init(true);
// fat32_init();
// 系统初始化到此结束,剩下的初始化功能应当放在初始内核线程中执行
HPET_enable();
// 系统初始化到此结束,剩下的初始化功能应当放在初始内核线程中执行
apic_timer_init();
}
//操作系统内核从这里开始执行
@ -178,7 +180,6 @@ void Start_Kernel(void)
system_initialize();
while (1)
hlt();
}
@ -186,5 +187,5 @@ void Start_Kernel(void)
void ignore_int()
{
kwarn("Unknown interrupt or fault at RIP.\n");
return;
while(1);
}