使用x86汇编编写一个多线程、多任务系统 (一)

本文详细介绍了如何使用x86汇编实现一个多线程、多任务的系统,涉及BSP与AP的协作、IPI消息传递、进程调度等内容,以及在开发过程中的关键点和解决方案。

现代CPU都是多核多线程的,本次的工作是使用x86汇编来编写一个支持多线程、多任务的系统。

先看一下该系统的运行截图:

该系统运行在 VirtualBox 6.1.16 上,一共开启了3个线程(一个BSP和两个AP),其各自的工作如下:

1. BSP开启了键盘和HPET中断,安装了0x80号系统调用,以100ms的间隔向AP1和AP2发送IPI消息。BSP在界面上显示启动后持续的秒数,并显示键盘输入的字符。

2. 两个AP各自启动了系统进程和用户进程:

    1)AP1和AP2的系统进程不断获取RTC时钟的秒数并显示;

    2)AP1的用户进程不断调用BSP的系统调用来显示‘0’到‘9’的字符;

    3)AP2的用户进程不断调用BSP的系统调用来显示‘A’到‘Z’的字符。

与上一个《一个用x86汇编编写的、页式管理、图形化的CS》相比,本系统在线程的管理、协调上有较大差别,而AP自己的任务调度则相对简单。

好了,下面我们将详细介绍该系统各模块的代码以及在调试过程中遇到的坑。

让我们开始吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值