项目实现内容:
为模拟线程的上下文切换,在线程结构体中定义了栈指针和栈,在switch.s模拟了线程的压栈、弹栈操作。
为实现线程的自动切换,添加了时间片轮转调度算法。
为增强代码可读性,对部分代码进行封装。
为实现线程间同步与互斥,在目录origin的基础上,在目录after里,实现了信号量,其中的原子操作来源于GCC的函数。
并在目录after/pc里用生产者-消费者例子检验用户态线程和信号量的。
debug_log下是一些分析用的反汇编代码的记录。
linux环境(ubuntu16.04,32位) 机器为win10 + VMware。