【操作系统】每日 3 题(九)

✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:https://blog.csdn.net/newin2020/category_12820365.html
📚专栏简介:在这个专栏中,我将会分享操作系统面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

25. 说说 CPU 层级的代码优化

CPU 具有三级缓存,对应的每一级缓存离 CPU 更近,传输距离更短,电子信号也就传输更快。一级快于二级三级,对应的一级缓存容量上也远远低于其他两级。

CPU 读取数据的时候一般都有预读功能,也就是不仅会读取需要的数据,还会把数据前后的位置的数据也也一并读取出来。因此在开发的时候可以利用这个特性进行代码优化,减少 CPU 从缓存或者从磁盘读取数据的次数,从而提高性能。

26. Linux 在内核初始化阶段,都做了哪些事情?

内核启动入口从 start_kernel() 函数开始,该函数内是调用各种初始化函数。包括创建 0 号进程,该进程是进程列表中的第一个,也是系统唯一一个没有通过 fork 创建的进程,创建 0 号进程之后开启系统的初始化工作。然后开启系统各种中断的初始化,内存模块初始化,调度模块初始化,其他方面初始化。其中其他方面初始化包括 1 号进程和 2 号进程,分别为用户态和内核态的总管,是其他进程的父进程,负责引导用户空间和内核空间的服务。

27. 用户态代码如何访问核心资源?

当用户进程执行到一半,想要访问核心资源,比如通过网卡发送数据。要先切换为优先级较高的内核态,暂停当前程序的执行,保存当前程序的执行现场状态信息到寄存器中,然后内核将用户进程发送的数据放到网卡上排队,发送完成之后系统调用结束,返回结果切换回内核态,暂停运行的程序从寄存器恢复状态,接着运行。

用户态 - 系统调用 - 保存寄存器 - 内核态执行系统调用 - 返回结果 - 恢复寄存器 - 返回用户态 - 程序继续运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值