免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yejia80550708
打印 上一主题 下一主题

[实践] 【好书推荐】奔跑吧 linux 内核 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2017-11-20 10:00 |只看该作者
学习学习。真想回答,但实在是不会。

论坛徽章:
43
15-16赛季CBA联赛之上海
日期:2020-11-04 09:36:5515-16赛季CBA联赛之北控
日期:2018-10-29 18:20:3415-16赛季CBA联赛之北京
日期:2018-10-06 21:39:5715-16赛季CBA联赛之天津
日期:2018-08-09 10:30:41ChinaUnix元老
日期:2018-08-03 17:26:00黑曼巴
日期:2018-07-13 09:53:5415-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:4315-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之江苏
日期:2019-02-20 09:53:3319周年集字徽章-庆
日期:2019-08-27 13:23:2515-16赛季CBA联赛之广夏
日期:2019-09-03 18:29:06
12 [报告]
发表于 2017-11-22 09:33 |只看该作者
这个真的不知道,学习下吧。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
13 [报告]
发表于 2017-11-24 14:18 |只看该作者
一切都是文件这个特有感触,在树莓派上要给 gpio 输出高电平就给相应的 gpio 文件写入 1 就可以,低电平反之,硬件控制太简单了

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
14 [报告]
发表于 2017-11-28 22:19 |只看该作者
1.linux内核有哪几大模块?
这个比较固定了。内存管理,进程管理,文件系统,网络,驱动,锁?。

内存管理又可分为:
a. 内核自身(内核态)的管理,可以认为是为管理内存而做的工作,有点类似meta data的意思,如分段,分页,slab/slub/slob,buddy,tlb之类。
b. 进程的虚拟内存管理,主要是进程地址空间的管理,如进程内存区域的分配,映射,缺页的处理。
c. 在一个就是各种cache,如内核的一些基本常用的结构都会有个pool,还有就是页缓存和块缓存加速磁盘访问,但是感觉这2个和前面的还不一样,放到一起不知道合适不。。

进程管理可分为:进程/线程的创建/撤销/复制/通信/调度。
文件系统可分为:
a. 虚拟文件系统(vfs)主要是提供一个抽象层,屏蔽不同文件系统差异,提供统一的视图(open,close, read, write..)
b. 具体的文件系统, 如ext2/3/4,fat16/32,btrfs。。。
c. 还有一个就是类似proc这个pseudo 文件系统,sysfs也有点类似,但是感觉放到driver那里合适一点

网络应该主要是各种的协议栈,传输层(tcp/udp), 网络层(ip),route,设备接口(link),sock和各种的网络设备(eth,tun,geneve,ifb。。。)

驱动感觉东西更多,char/block 设备,bus, driver,sysfs,以及其他各种设备的driver。

锁虽然单独做为一个有点勉强,但是还是很重要的,主要各种的同步(spinlock,memory  barrier,rcu,semaphore, rw lock..)和delay(softirq, tasklet, wrok queue)的机制吧


2.     cache 在 Linux 内核中有哪些应用?(一两个例子即可)
这个在上面提了一下,如页缓存和块缓存,其目的当然是通过把一部分磁盘的数据放到内存里加速对磁盘的访问,减小内存和磁盘访问速度的差距,后台会有内核线程去sync data到磁盘。页缓存page cache应该是为了优化file IO,块缓存buffer cache是为了优化block IO,以前好像是2套不同的实现,但是现在好像同一了。

3.   cache coherency 和 memoryconsistency 有什么区别?
cache coherency主要是因为多核cpu一般都有自己的cache,但是memory确实共享的,所以当同一份数据(memory上的)在cache上有多个copy时需要确保 他们不能乱掉,有些协议如mesi就是控制这个的。
memory consistency 主要是因为程序并发,如多cpu或多线程访问同一数据,做不同的操作,如果没有控制,那么最后的数据就不可预测,出现了inconsistency。还有就是因为compiler 的优化,或cpu 执行时的乱序也可能导致inconsistency,Linux kernel里头的spinlock,semaphore,barrier,mfence之类的就是实现这个目的。
个人理解,cache coherency 更多的硬件去实现的,memory consistency跟我们关系更密切一点,内核的各种锁,屏障。。(说句题外话,你们是怎么研究锁的,感觉看了实现代码也就那样,不知道哪里该加哪里不该加,没有机会去实现总是感觉玄而又玄。。)

4.     如何理解Linux一切皆是文件?
个人理解就是在linux,不但文件可以是文件,其他的所有东西也可以用文件来表示。
比如一个设备/dev/sda就是代表系统里的一个disk,/dev/cdrom就是光驱,对这个文件的操作就是对设备的操作。
比如我想查看当前系统cpu的一些信息,那我就可以去操作(读)/proc/cpuinfo。
在比如我想产生随机数,那我就可以去读/dev/random。
总之,这样的好处就是统一了操作接口,打开一个文件生成fd,然后对fd进行读写或其他的操作。
但是我觉得有一点不好的(或不统一的)是网络设备有点特殊,为什么网卡在/dev/下没有设备?网络发送或接受数据要通过一个特殊的socket描述符去做,虽然也是一个fd,但是感觉就不统一了。其他个人理解,为什么不能把stream socket 当成一个char 设备,datagram socket当成一个block设备?(可能理解的不对)

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
15 [报告]
发表于 2017-12-11 11:10 |只看该作者
关于Coherence与Consistency的区别,知乎上的这个帖子说的比较清楚。
https://www.zhihu.com/question/25252397
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP