Zheyuan Zou
码龄7年
关注
提问 私信
  • 博客:86,162
    86,162
    总访问量
  • 96
    原创
  • 64,856
    排名
  • 177
    粉丝
  • 30
    铁粉
  • 学习成就

个人简介:中国科学技术大学2021级计算机系统结构硕士研究生,嵌入式菜鸟工程师,E-mail:zouzheyuan123@qq.com

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2017-10-21
博客简介:

zheyuan的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    886
    当月
    2
个人成就
  • 获得314次点赞
  • 内容获得106次评论
  • 获得365次收藏
  • 代码片获得2,119次分享
创作历程
  • 1篇
    2024年
  • 18篇
    2023年
  • 27篇
    2022年
  • 45篇
    2021年
  • 10篇
    2020年
成就勋章
TA的专栏
  • ESP32
  • 碎碎念
    1篇
  • MIT 6.S081
    16篇
  • Embedded Linux Development
    2篇
  • 总线协议系列
    1篇
  • Algorithm
    38篇
  • HeteroCL
    1篇
  • ReadingNotes
    8篇
  • Principle of Economics
  • Stanford CS144
    1篇
  • Advanced Computer Network
    4篇
  • SearchSearch
    1篇
  • CSAPP Lab
    3篇
  • HIT-OS
  • MIT 6.824
  • HLS
    1篇
  • Linux
    14篇
  • Xilinx
    5篇
  • Matplotlib
    2篇
兴趣领域 设置
  • 数据结构与算法
    排序算法推荐算法
  • 后端
    spring架构
  • 人工智能
    opencv机器学习caffe神经网络tensorflowmxnetpytorchnlpscikit-learn聚类集成学习迁移学习分类回归
  • 硬件开发
    fpga开发dsp开发arm开发硬件架构
  • 服务器
    linux
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

175人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

6.S081——CPU调度部分(Xv6中的进程的状态转换)——xv6源码完全解析系列(11)

好了,我们终于可以总结一下进程的各个状态,以及它们的具体含义和转换方式啦,这就当作一个完美的收官吧,Xv6内核中进程相关的状态及其转换关系如下图所示:哎呀,从没想过这篇博客会写这么长,不过这篇文章算是将Xv6中与进程有关的内容彻底收了个尾,也算是可以安心地进入Xv6中最复杂和体量庞大的文件系统了!
原创
发布博客 2024.06.18 ·
1452 阅读 ·
35 点赞 ·
6 评论 ·
21 收藏

2024届秋招小记

但我回顾过去的求学和生活经历,好像那些岁月静好的日子只是点缀,反而那些经历过的一个个挫折,一些伤心和痛苦的经历,一个个解过的bug才是构成我所有认知和个体的“骨架”。企业会收到很多优质的简历,但却无法分清这里有哪些人是真心想来的,只能不断地反复决策,等前面的人放弃了机会再联系排位靠后的人,整个招聘流程变得非常漫长和缓慢,尽管这样的情况一直存在,但海投一定会让事情变糟很多倍。这些留言和问题我都看到了,有关于Xv6系统的博客依然会更新下去,包括繁复冗长的文件系统的代码,我都会写下去的(又开新坑…
原创
发布博客 2023.10.21 ·
966 阅读 ·
12 点赞 ·
4 评论 ·
0 收藏

Embedded Linux Development——Note (2)——字符设备驱动的开发流程

这篇文章是我学习Linux设备驱动开发的笔记,是在阅读正点原子的教程中的摘要,所以版权将会被标记为转载。我们首先梳理一下开发一款字符设备驱动程序的流程,然后在此基础上分析一下最简单的设备驱动程序LED的开发流程。最后作为补充,再加入一些关于新版驱动程序编写的流程。吐槽一下,正点原子的教程,逻辑太乱了,看的时候绕来绕去。假设我们我们已经有了一个字符设备驱动模块,驱动编译完成之后的模块后缀是.ko,有两种方法可以加载驱动模块:insmod和modprobe,它们的基本用法如下:insmod和rmmod是配对的
转载
发布博客 2023.08.05 ·
615 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

6.S081——CPU调度部分(CPU的复用和调度)——xv6源码完全解析系列(10)

终于到这里了,我们在之前阅读很多地方的内核代码时,总是习惯性地绕开CPU调度的部分(比如yield函数)。现在我们总算可以深入进去一探究竟了,这次总算是将整个操作系统中的一块重要拼图拼上去了。有操作系统相关基础概念的人应该知道,操作系统的其中一个重要功能是虚拟化(Virtulization)。这是OSTEP(Operating System : Three Easy Pieces,中译名:操作系统导论)提出的操作系统三大主题之一,另外两个是并发(Concurrency)和持久性(Consistency)。虚
原创
发布博客 2023.07.11 ·
1674 阅读 ·
21 点赞 ·
18 评论 ·
5 收藏

6.S081——并发与锁部分(自旋锁的实现)——xv6源码完全解析系列(9)

这段代码还会调用__sync_lock_release函数来原子地对锁进行释放,其实就是将锁的被占用标志原子地置为0。所以逻辑还是比较简单的,在阅读上述代码时,请多注意这些原子访存指令和内存屏障指令,它们是构成锁机制的核心。
原创
发布博客 2023.07.02 ·
964 阅读 ·
6 点赞 ·
3 评论 ·
2 收藏

6.S081——设备中断与驱动部分(串口驱动与Console)——xv6源码完全解析系列(8)

真的是很复杂的流程啊,想必看到这里人都懵逼了吧,其实我也开始混乱了…console、键盘、屏幕、shell、串口,它们是怎么交互和连接的,现在是有点太过于拘泥于细节而失去了全局观了。下面我就画出整个连接关系的全貌,作为这两篇博客的总结。在上图中,循着任何一种颜色的线条都可以将流程顺利捋顺,这就是对整个部分的总结。console的定位就是一个软件抽象出来的设备体,它专门用来缓存用户输入的字符,并对其中输入的特殊字符和组合键进行预处理,使得串口可以正常打印,shell可以正常解析。
原创
发布博客 2023.06.26 ·
977 阅读 ·
14 点赞 ·
2 评论 ·
4 收藏

6.S081——设备中断与驱动部分(串口驱动与Console)——xv6源码完全解析系列(7)

后续会将上述内容一一解释清楚。
原创
发布博客 2023.06.23 ·
1599 阅读 ·
10 点赞 ·
2 评论 ·
4 收藏

6.S081——Lab4——trap lab

但我们在实验中没有这么做,Xv6的内核实现中整个栈只有一页(4K)大小,所以我们完全可以。
原创
发布博客 2023.06.16 ·
1268 阅读 ·
7 点赞 ·
0 评论 ·
3 收藏

6.S081——陷阱部分(内核陷阱与时钟中断)——xv6源码完全解析系列(6)

在上一篇博客中,我们通过系统调用这个重要的机制了解了Xv6操作系统中。这篇博客则准备研究一下,在研究内核陷阱流程中一个麻烦的家伙是定时器中断,首先它是一种由CLINT转发而来的本地中断,定时器终端往往会导致CPU的调度,进而将陷阱的处理流程变得错综复杂,这篇博客并不打算深入研究调度过程,这部分内容我们放在后面阅读对应源码时仔细研究。上次我们在阅读。
原创
发布博客 2023.06.01 ·
1777 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

6.S081——补充材料——RISC-V架构中的异常与中断详解

在RISC-V标准中,将异常(exception)定义为当前CPU运行时遇到的与指令有关的不寻常情况,而使用中断(interrupt)定义为因为外部异步信号而引起的让控制流脱离当前CPU的事件。而陷阱(trap)表示的则是,由异常或者中断引起的控制权转移到陷阱处理程序的过程。其实Xv6的定义和RISC-V的定义是相互兼容的,我们说在Xv6中有三种方式会触发陷阱:系统调用、中断和程序异常,其实系统调用中的ecall指令和程序执行中的异常都属于RISC-V标准中定义的异常情况,而。
原创
发布博客 2023.05.30 ·
6858 阅读 ·
25 点赞 ·
9 评论 ·
52 收藏

6.S081——陷阱部分(一文读懂xv6系统调用)——xv6源码完全解析系列(5)

在动笔写下这篇博客时,我只是想把Xv6的系统调用过程一点点弄清楚梳理下来,在这个过程中我查阅了许多RISC-V规范和相关书籍,并一直参阅Xv6 Book。结果没想到弄清一个小小的write系统调用,我竟然写了1.2万字,才将这过程中每一行代码研究清楚。即便如此,这个过程中还是有一些残留的问题,比如开关中断的时机(intr_on,intr_off),以及为什么要在usertrap中再保留一份epc的值,这些要完全搞明白需要后面中断、调度的相关知识。
原创
发布博客 2023.05.03 ·
3232 阅读 ·
21 点赞 ·
12 评论 ·
14 收藏

6.S081——Lab3——page table

至此,就完成了6.S081 Fall 2021的第三个实验,有关虚拟内存和页表机制的实验内容。总的来说实验难度都没有很大,在指导书的帮助下可以很快完成。但是对于内核代码的研究却远远没有结束,接下来的实验内容涉及到操作系统中最重要的一个部分,那就是终端和陷阱机制的实现。已经迫不及待去扒一下对应的源码了…哈哈。
原创
发布博客 2023.04.19 ·
2208 阅读 ·
13 点赞 ·
4 评论 ·
15 收藏

6.S081——虚拟内存部分——xv6源码完全解析系列(4)

不妨去看看:)
原创
发布博客 2023.04.12 ·
1686 阅读 ·
7 点赞 ·
3 评论 ·
6 收藏

6.S081——虚拟内存部分——xv6源码完全解析系列(3)

没想到vm.c这份代码文件还没有读完,不过剩下的也就。这篇博客就将整个虚拟内存部分的代码收个尾,然后。
原创
发布博客 2023.04.10 ·
1717 阅读 ·
14 点赞 ·
1 评论 ·
12 收藏

6.S081——虚拟内存部分——xv6源码完全解析系列(2)

上一篇博客中,我们详细分析了xv6内核代码中有关虚拟内存的部分,主要剖析了vm.c这个文件中的三个全局变量和6个函数,这篇博客。接着剖析和阅读接下来的源码,同样
原创
发布博客 2023.04.06 ·
2616 阅读 ·
12 点赞 ·
0 评论 ·
17 收藏

6.S081——虚拟内存部分——xv6源码完全解析系列(1)

希望可以更好地理解OS内核本质
原创
发布博客 2023.04.01 ·
3777 阅读 ·
20 点赞 ·
4 评论 ·
37 收藏

6.S081——Lab2——system calls

本实验的目的是在xv6中实现系统调用,这个过程中涉及到一些xv6中系统调用的基本机制,如系统调用号、如何从用户态向内核传参数、如何将结果从内核空间再传回用户空间(copyout)等。但要更加深入的理解系统调用的全过程,还需要在后面。argraw的逻辑非常简单,就是从对应的trapframe中返回a0-a7寄存器,因为根据RISC-V的calling convention,头几个寄存器是。,上一个实验更多的是使用已有的设施去实现一些功能各异的程序,这需要我们对系统调用的过程有更加深入的理解。
原创
发布博客 2023.03.26 ·
1415 阅读 ·
8 点赞 ·
1 评论 ·
6 收藏

6.S081——Lab1——Xv6 and Unix utilities

这就是6.S081的第一个实验,主要考察的就是系统编程,其实其中后三个任务还是有一定难度的。不过经过编写这些代码,多少还是对系统调用有了更深的认识,这是很大的收获。其实在做xv6的实验时,更大的收获不是解决实验内容本身,这些实验内容只是xv6的很小一部分功能,要在解决问题的同时和内核代码一起玩耍,调试并阅读源码,这才是学习这门课的精华所在。
原创
发布博客 2023.03.23 ·
1356 阅读 ·
8 点赞 ·
0 评论 ·
3 收藏

LeetCode刷题笔记和周赛题解总目录

LeetCode刷题笔记与周赛题解总目录
原创
发布博客 2023.02.16 ·
369 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Embedded Linux Development——Note (1)——嵌入式开发环境的搭建

这个系列博客记录在嵌入式Linux开发过程中,内容参考了的教程。首
转载
发布博客 2022.12.31 ·
377 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多