20169212《Linux内核原理与分析》第三周作业
最近,深入的阅读了《Linux内核设计与实现》这本书,以下是碰到的一些问题,在此和大家进行交流学习。
碰到的问题
1.为什么不要在linux内核中使用浮点数(这个问题由于书上讲的不够明白,所以导致自己不能理解,去参考别的资料才弄懂)
浮点的编码跟整数编码是不一样的,计算时需要专门的寄存器和浮点计算单元来处理,一个浮点运算指令使用的CPU周期也更长。因此对于内核来说就会想尽量回避浮点数运算,譬如说浮点数经过定点整数转换后进行运算,效率会高很多,即使CPU带有浮点数运算部件,一般内核还是要避免直接进行浮点数运算,因为这些部件有可能被用户进程占用了,内核要判断这些浮点数部件是否被占用,保护现场,然后用浮点运算部件计算结果,恢复现场,开销会很大。如果CPU不支持浮点数运算,也就只能软件实现浮点数运算,要是你设计内核的话,相比起多做额外功夫(写浮点数实现代码)并且使得内核的效率不高,大家更加情愿避免这个问题。
2.为什么内核的栈那么小,而用户栈却很大而且还可以动态增长?栈的大小规定为4KB,8KB是否是人为规定?
未解决
3.关于Ubuntu下启用root用户的问题
虽然知道Ubuntu下root账户是默认禁止的,但是一想到要在那么多命令下前面每条加入sudo
就不痛快,所以想着启用root账户。 首先设置root密码,利用现有管理员帐户在终端执行命令:
sudo passwd root
接着输入密码和root密码,重复密码。于是我们就可以通过
su - root
命令来使用root账户登录了(这里需要注意一点的是,带参数-是为了带入登录者的环境变量和工作目录,不带-也是可以的,不过我觉得应该会碰到一些莫名其妙的问题,稳妥起见,我觉得一般加上-或者-l比较好)下面这张图是有无参数的区别:
可以明显看出不带参数-用root登录之后的工作目录仍是之前用户的工作目录。
4.因为刚刚接触内核这一块,从来没有配置过内核,所以也不知道哪些需要用到哪些不用用到,所以下载了最新版本的内核并没有自己去个性化的配置以及编译,而且书上写了Ubuntu的发布版中包含了预编译的内核,那对于我们新手来讲,是否有还需要再编译一遍内核的必要呢?书上讲了三种编译方式,看完了觉得make defconfig
是新手最容易上手的创建配置命令,但是这样做了跟用发行版本身的预编译没什么差别,于是便没有再去创建自己的配置而后编译。而且,书上还讲了在内核代码树的根目录下有一个.config的文件,保存了当前的配置信息,那么我觉得随着自己的深入学习以后再来更改,不知道是否可以?进到相关目录查看了下,发现里面有一个Kconfig的文件,里面内容很少,如图
但是好像指向了另一个目录source "arch/$SEARCH/Kconfig"
,在这里并没有发现$SEARCH文件夹,在arch里直接看到了Kconfig文件
这个文件里内容比较多,应该是配置文件。这里不是很懂,需要老师指导。
20169212《Linux内核原理与分析》第三周作业的更多相关文章
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...
- 2019-2020-1 20209313《Linux内核原理与分析》第二周作业
2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 《Linux内核原理与分析》第一周作业 20189210
实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...
随机推荐
- WIN7远程桌面连接方法!
WIN7远程桌面连接方法!
- 夺命雷公狗-----React---5--props对象的传递
提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- spring IOC 容器中 Bean 的生命周期
IOC 容器中 Bean 的生命周期: 1.通过构造器或工厂方法创建 Bean 实例 2.为 Bean 的属性设置值和对其他 Bean 的引用 3.调用 Bean 后置处理器接口(BeanPostPr ...
- java中对插入排序的理解以及实例
一.基本思想 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入. 插入排序非常类似于整扑克牌. 在开始摸牌时,左手是空的,牌面朝下放在桌上.接着,一次从桌上摸起一张牌 ...
- listivew 动态刷新单个item
使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据. 继承BaseAdapter,新建ViewHolder类. public class TestListAdapter extends ...
- map函数
概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 语法 array.map(callback[, thisArg]) 参数 callback 原数组中的元素经 ...
- gdb调试正执行的程序
参考,转载:http://biancheng.dnbcw.info/linux/391846.html
- Kanzi入门
1.安装Kanzi. 2.使用Kanzi studio创建工程. Kanzi创建的工程会包含以下目录结构: 其中, Tool_project文件夹中存放的是设计师设计的工程,包含kanzi UI的工程 ...
- eclipse https git
open preferences via application menu Window => Preferences (or on OSX Eclipse => Settings). N ...
- ios设备相关
设备方向 typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) { UIInterfaceOrientationMaskPortrait ...