linux内核完全剖析 pdf_从0学习Linux内核:总序

7b813cef63edf50098d290b2692aa9c1.png

一、专栏背景

之前从0开始,一步步的自己动手写了一个简易操作系统:

计算机自制操作系统​www.zhihu.com
6a1417fb785fcba1e409bfd56ef7d1e7.png

感谢自己的坚持,通过这个耗时半年的工程,使我逐渐对计算机的软件运行原理有了质的提升。我的本意想法是在自己写的操作系统上做进一步的延伸学习,比如做编译器,制作一种程序语言等。但是,经过一番搜寻和了解,才发现:我自写的这个操作系统太粗糙和低级了,它只是一个制作操作系统的尝试和探索,真正的拿来开发应用几乎不可能,因为它不合理和不周全的地方太多了。

但是,学习的步伐不能停止。怎么办?于是,我第一个就想到了借助Windows,我个人非常的喜欢Windows这个操作系统,非常地优秀,因为它把人和计算机之间的距离拉得太近了。但是Windows是商业软件,系统非常的庞大,又不是开源项目,要想系统性的学习和研究它肯定非常困难。自然就想到了Linux,毕竟Linux在操作系统领域的影响力实在太大了,于是就这样开始了本专栏的内容。

二、参考书籍

LINUX的教科书太多了,我只能每走一步就罗列出看过的书,目前主要的参考书籍如下:

1.《LINUX内核完全剖析:基于0.12内核》 作者: 赵炯。这是我最主要的参考书。说这本书不好的,都是浮于表面的认知。只有认真调试和实验过的人,才知道作者为写这本书要付出多少心血。

2. 《Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理》 作者: 新设计团队。书中的图片多,很给力。

3…….待补充……

三、实验工具

1.NASM汇编器:我说过这是我理解的最好的汇编器。

2.Bochs和Vmware虚拟机:前置用来调试程序,后者用来验证版本。

3. WinHex二进制工具:制作各种二进制文件。

4…….待补充……

四、专栏申明

学习版本:Linux 0.12。主要基于教科书路线,不可否认版本很古老,但是如果一上来就直接学习目前最新的版本,估计很难入门和坚持。

本专栏涉及到的操作系统知识在我的专栏《计算机自制操作系统》中基本已介绍完了,因此不再重复,只有针对新的内容会做详细阐述。

Linux是一个完整的操作系统,对它的学习过程绝对不像我的专栏《计算机自制操作系统》一样,可以从0起步,自己一步一步的推进和完善,还可以边学习边探索,以致于最后的结果有一种水到渠成的感觉。Linux内核代码一上来就是全局思维和整体布局,会涉及计算机系统的方方面面。因此学习Linux内核对人的要求是:必须具备操作系统的所有基础知识,特别是要掌握计算机32位保护模式的核心原理。没有这些基础,永远都是雾里看花。这个就是对学习者最大的挑战,毕竟绝大部分的人都没有像我一样花半年的时间先去写一个“操作系统”再来学习,这是我最大的优势。

延续上一个专栏的风格,本专栏全部文章内容为我一人原创,如有喜欢转载请注明出处。由于时间和水平有限,不能确定能学习到什么地方,尽最大努力坚持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上述代码是一个用于显示进度条的循环。该循环会执行10次,每次循环都会显示一个进度条,并在每个进度条中执行一定数量的列。 首先,通过使用tqdm库创建一个进度条,并设置总共需要执行的列数量为num_episodes的十分之一,即int(num_episodes / 10)。同时,设置进度条的描述为'Iteration %d' % i,其中i是当前循环的索引。 然后,在每个进度条的列循环中,执行以下操作: 1. 初始化episode_return为0,表示当前列的累计回报。 2. 调用env.reset()将环境重置为初始状态,并将返回的初始状态赋值给state。 3. 调用agent.take_action(state)选择当前状态下的动作,并将动作赋值给action。 4. 设置done为False,表示当前列未完成。 5. 在当前列未完成的情况下,执行以下循环: a. 调用env.step(action)执行选定的动作,并获取返回的下一个状态next_state、奖励reward和完成状态done。 b. 调用agent.take_action(next_state)选择下一个状态的动作,并将动作赋值给next_action。 c. 更新累计回报episode_return,将reward加到episode_return上。 d. 调用agent.update(state, action, reward, next_state, next_action)更新智能体的策略和价值函数。 e. 将state更新为next_state,将action更新为next_action。 6. 将当前列的累计回报episode_return添加到return_list中。 7. 如果当前列的索引加1能被10整除,即(i_episode + 1) % 10 == 0,则表示已经完成了10个列,打印这10个列的平均回报。 8. 更新进度条的状态,包括当前完成的总列数和最近10个列的平均回报。 9. 更新进度条的进度,使其前进一步。 通过这个循环,可以在控制台中显示10个进度条,并实时更新每个进度条的状态和进度。每个进度条都代表了一部分列的执行过程,并在每个进度条中打印出最近10个列的平均回报。这有助于实时监控算法的训练进度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值