苏流郁宓
cpu给定低16位(64kb内的)可做为端口,物理设备开发商可以通过端口方式直接与cpu沟通(可绕过操作系统,不需要操作系统分配地址,但估计会引发中断方式来被操作系统知悉?)也可以通过设备软件加载在内存上通过进程/线程,来与cpu沟通(需要操作系统分配地址)
作者回复:嘿嘿 你真聪明
2022-09-17
Present
fork创建进程时,会通过pgd_alloc创建一级页表,这里调用了__get_free_page(GFP_PGTABLE_USER)从伙伴系统中分配内存。然后复制父进程页表时也会根据需要依次创建二级、三级等页表。所以页表的数据最终是在物理内存中的。从GFP_PGTABLE_USER标志可以看出分配的内存是在ZONE_NORMAL及其下面的内存区域。
内核一级页表是在swapper_pg_dir里,是在系统启动时建立起来的一级页表,在物理内存1M以上的一块内存区域。
所以页表数据是在物理内存中的。
作者回复:是的 你分析正确
2022-09-20
榕
老师,进程的页表结构是不是只要为顶级目录基址分配一个虚拟地址就行(其他部分不需要虚拟地址)。我理解只要对这个基址做好物理地址映射(cr3寄存器需要),虚拟地址转换过程就可以通过物理内存的页表结构找到对应的物理地址。进程对其他部分的页表结构并不关心,因此不需要为它们分配虚拟地址,不知道这个理解对不对,望老师解惑,谢谢。
作者回复:对
2022-10-16
1
sun
本来还以为是RISC指令更精简,粒度更小,可以更好的并行,所以更快。
看了评论区才明白,原来是因为RISC架构的指令时间一致,并行执行时所有指令没有空闲,形成完美的流水线,所以才比较快。
作者回复:是的
2022-10-12
1
顾琪瑶
很多不明白的点, 都在这个课程中解答了, 真的牛逼.
想问下这些资料都是从哪获取的呢
作者回复:没有系统的资料 看linux代码
2022-10-14
2
揭晓林
老师和同学们好,我这边想补充两个点:
1. 在RSIC-V因何流行那里,老师写的是“之前硬件和软件一样,都是小心地保护自己的 “源代码” ”这里是否将“硬件”和“软件”互换位置更顺畅一点?因为后面讲的是“直到后来,软件界出现了开源的 Linux”
2. 评论区有人评论特权级是如何切换的:我在B站看哈工大的操作系统课程时,第5讲里说到是用段寄存器来实现的,CPL(Current Privilege Level 当前的特权级) 和 DPL (Descriptor Privilege Level,目标段)。在操作系统启动的时候会初始化好。当用户程序执行的时候,会判断两个寄存器的值。
作者回复:嗯嗯
2022-10-15
1
苏流郁宓
第一题:c语言编译器可以统计高频汇编语言代码集,做成栈或者堆模块供程序员调用(体现的是c语言标准外高频系统库函数的调用)
第二题:核心数据原子化(加锁解锁),要么都执行要么都不执行,进行类似封装,尽可能避免内存地址泄露等问题!
作者回复:对头
2022-10-03
2
南总无敌
思考题:既然用 Verilog 很容易就可以设计出芯片的数字电路,为什么我们国家还没有完全自主可控的高端 CPU 呢?
答:CPU作为承载电子万物的通用器件,需要的是完整的产业链和良好的生态。
(1)完整的产业链不仅仅包含前端设计,还有EDA设计工具和完整的产业制造,而我国仅仅只有前端设计站在了世界前沿,后面两个关键步骤远远达不到行业前沿水平
(2)另外芯片强是一个方面,而往往决定芯片能否广泛商用关键更多看好不好用。这里就牵扯到良好的生态了,没有相应完整的配套软件和售后技术支持,客户很难放心使用。这就像为啥各种NPU论PPA吊打NVIDIA,但是最后大家还是买了NVIDIA的GPU做模型训练。生态需要时间积累口碑和持续性努力,吾辈需加油
作者回复:加油
2022-10-07
2
温雅小公子
同学的思考能力好强啊,自觉弗如远甚,成功的聪明人课可太多了,我得为笨蛋争口气。
编辑回复:日拱一卒,不期速成,按你自己的节奏来就好,坚持长期学习,相信你会更快成长的~
2022-10-30
1
苏流郁宓
其实可以模块化理解,庞大的浏览器在模块化上可以理解为有缺陷的微型操作系统(无独立硬件内存分页的权利),一个个不同网页可以理解为操作系统上不同的app,那么进程间通信就好理解了,唯一的区别是浏览器兼顾网络数据,对安全这块要求甚高,需要套接字等一系列机制来保障安全,高效的通信的!
作者回复:6666 你理解能力强
2022-10-26
1
编辑推荐
包含这门课的学习路径
计算机基础知识
12门课程 96.5w人学习
看过的人还看了