Skip to content

在这个实验中,我们实现轻量级的用户态[协程],可以在一个不支持线程的操作系统上实现共享内存多任务并发。即我们希望实现 C 语言的 “函数”,它能够: 1. 被 `start()` 调用,从头开始运行; 2. 在运行到中途时,调用 `yield()` 被 “切换” 出去; 3. 稍后有其他协程调用 `yield()` 后,选择一个先前被切换的协程继续执行。

License

Notifications You must be signed in to change notification settings

SiyuanYue/NJUOSLab-M2-libco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NJUOSLab-M2-libco

实验手册->:M2: 协程库 (libco) (jyywiki.cn) 基础代码位于(M2分支下): https://github.com/NJU-ProjectN/os-workbench-2022

文档: ./doc目录下;代码:./libco目录下

Makefile约定操作:

./libco 目录下 可使用make all 编译生成libco-32.solibco-64.so两个共享库。 在./libco/tests目录下存放测试代码,make test可进行32位和64位程序的测试。具体编译和生成请查看前面的手册捏。

本实验解决的问题:

我们有没有可能在不借助操作系统 API (也不解释执行代码) 的前提下,用一个进程 (状态机) 去模拟多个共享内存的执行流 (状态机)?

About

在这个实验中,我们实现轻量级的用户态[协程],可以在一个不支持线程的操作系统上实现共享内存多任务并发。即我们希望实现 C 语言的 “函数”,它能够: 1. 被 `start()` 调用,从头开始运行; 2. 在运行到中途时,调用 `yield()` 被 “切换” 出去; 3. 稍后有其他协程调用 `yield()` 后,选择一个先前被切换的协程继续执行。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published