用 C 语言实现操作系统

本文详细介绍了如何使用C语言实现操作系统中的线程切换和上下文调度。通过控制流切换原理、上下文切换的保存与恢复、用户态线程设计等步骤,帮助读者理解线程调度的基础知识。实验环境中使用32位Ubuntu系统,不依赖pthread库,而是自定义实现线程创建和切换,以模拟时间片轮转算法。
摘要由CSDN通过智能技术生成

码农都懂的一句话:C 语言无所不能,什么都能搞。把 C 学好,上手其他语言也会事半功倍。因为热爱 C 语言,所以才有了这篇 Chat 。

一直以来,我们学习线程切换与调度,都是通过阅读操作系统书籍或 Linux 源码甚至反汇编 Window 内核代码。无论怎样,这些东西都很抽象,学习起来十分困难。

另外,随着现代化编程语言逐渐流行,C++20 的正式发布,都离不开用户态线程这些基础知识。再比如 Golang 的 Goroutine,腾讯公司的开源的 libco,百度的 BRPC 中的 bthread,如果想深刻理解它们,都需要扎实的基本功。

本文会带你循序渐近的掌握以下知识点:

控制流切换原理
上下文切换
线程设计
调度函数的封装与代码模块化
线程的主动切换
时间片轮转调度

本文实验环境:

ubuntu 16.04 32 位操作系统(读者请务必提前安装好);
挑选一个你自己觉得好用的虚拟机软件,比如 VMWare;
请把你的虚拟机环境配置成单核 CPU
回归正文,我为什么要使用 32 位系统?因为方便初学者学习,也能更快速的掌握原理。

需要注意的是,本文的代码,并没有使用操作系统为我们提供的 pthread 系列函数,thread_create 和 thread_join 函数都是自己纯手工实现的。唯一使用操作系统的函数就是设置时钟,因此会有时钟信号产生,这一步是为了模拟时间片轮转算法而做的。

01

控制流切换原理

控制流,指的是一系列按顺序执行的指令。比如你编写的多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值