当前位置:首页 > 软件开发 > 正文

linux内核学习 为什么要学习Linux内核

linux内核学习 为什么要学习Linux内核

各位老铁们好,相信很多人对linux内核学习都不是特别的了解,因此呢,今天就来为大家分享下关于linux内核学习以及为什么要学习Linux内核的问题知识,还望可以帮助大...

各位老铁们好,相信很多人对linux内核学习都不是特别的了解,因此呢,今天就来为大家分享下关于linux内核学习以及为什么要学习Linux内核的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

学习Linux内核能找到工作吗

既然是找工作,就应该以终为始,你可以先在招聘求职网站上检索下相关的职位数量,以及相关的职位的具体要求,既然是求职,重要的是企业需要什么样的人,而不能仅仅考虑自己想成为什么样的人,不要闭门造车。

Linus大学时期写出了linux内核,那个最初的版本仅就技术而言,有多厉害

Linux诞生之初是林纳斯花了两月时间写的勉强可以运行且漏洞百出的Linux0.01版本,他写Linux的初衷很简单,只想看看电脑硬件是如何协同运行的,也就是说他想通过程序来玩硬件。文雅一点就是他想学习。

后来玩腻了,也觉得自己写的东西没多大卵用,所以就本着极客精神放到互联网上给大家一起玩,还引入了开源协议。随着玩这个小系统的人越来越多,大量高手都把自己的业余时间与构思添加如Linux中,当Linux颇具规模的时候被各方盯上想收入囊中,但此时的Linux已经深陷开源泥潭,当初的开源协议让Linux根本无法为林纳斯获利。

当Linux1.0版本出来时它的光芒足吸引了大量想得到系统最终控制权且不想交授权费的商人。

加上Linux有全世界顶尖高手的日夜维护,其生态圈已经颇具规模,同时Linux被大量极客玩家塞进各式各样机器里玩,故而到了今天,Linux只是一个内核,允许全世界每一个玩家下载下来自己修改,想怎么玩就怎么玩永远没人问你要授权费连特朗普也不行,由于当初的开源协议,林纳斯虽说贵为生父,可他在开源协议面前也无法说是自己的,他除了获得名声之外自己没从Linux里获得一分钱盈利。

说那个0.01版本有多厉害?其实它只是一个漏洞百出的单片机版本,勉强可以运行而已,并不是现在的支持多CPU,多线程,多任务,多用户。稍有脑洞的程序猿都可以为单片机写一个运行程序,真正厉害的是开源之后的那些极客为Linux写的补丁,已经完全把0.01版本的框架拆得面目全非,林纳斯只是做了一个开头,今天的Linux是全世界极客智慧的结晶。

Linux的内核及其作用

管理进程:内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出),不同进程间通讯(通过信号,管道,或者进程间通讯原语)对整个系统功能来说是基本的,也由内核处理。另外,调度器,控制进程如何共享CPU,是进程管理的一部分。更通常地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU之上的抽象。

管理内存:计算机的内存是主要的资源,处理它所用的策略对系统性能是至关重要的。内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间。内核的不同部分与内存管理子系统通过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。

文件系统:Unix在很大程度上基于文件系统的概念;几乎Unix中的任何东西都可看作一个文件。内核在非结构化的硬件之上建立了一个结构化的文件系统,结果是文件的抽象非常多地在整个系统中应用。另外,Linux支持多个文件系统类型,就是说,物理介质上不同的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,普遍使用的FAT文件系统,或者其他几个文件系统。

设备控制:几乎每个系统操作终都映射到一个物理设备上,除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行。这些代码称为设备驱动。内核中必须嵌入系统中出现的每个外设的驱动,从硬盘驱动到键盘和磁带驱动器。内核功能的这个方面是本书中的我们主要感兴趣的地方。

网络管理:网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程:进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发,系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。

LINUX内核是什么

Linux内核是Linux操作系统的主要组件,也是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源。之所以称为内核,是因为它在操作系统中就像果实硬壳中的种子一样,并且控制着硬件的所有主要功能。

为什么要学习Linux内核

1学习一些操作系统的理论知识,一些概念。比如:进程,内存管理,文件系统等等。

关于这一方面的书籍太多了,自己找一本就行了2学习x86汇编,虽然linux用的是AT&T汇编,但二者只是格式不同而已。

而且学习x86汇编有助于了解x86系统结构。书籍推荐王爽的《汇编语言》,我学的时候用的不是这个,后面看到这本书,才觉得自己做了“苦功了”。

学完大部分汇编指令时,找些汇编程序读读,熟悉这些指令的用法。

不需要有写汇编程序的能力,能读就行了,当然会写更好3赵炯的《Linux内核0.11完全注释》。

这个linux内核版本低,作者也讲得很详细。不过关于x86体系的那一部分,作者讲得很繁琐,这一部分一定要大体看懂,那后面章节的内容就没有多大的问题了。

我先把书通看了一遍,用了1个月的时间。

后来,再返回来一个一个研究,用了2个月。

之所以看这本书,是让自己对内核有个实质的感受,不仅仅只是理论上的东西。

4毛德操的《linux内核情景分析》。linux内核版本2.4.0,这本书很厚,上下两册。

我通读一遍,用了2个月时间。

后来,再返回来一个一个研究,现在已用了2个月,正在研究中。。。。

就我个人觉得,linux内核最难的是内存管理,这2个月我就只大体搞清内存页面的周转,但搞清了这个,就会对内核的整体结构有个大致的了解,因为你已经清楚了用户进程和内核的其它部分是怎样使用内存页面的。

5学习linux内核最需要的是坚持和思考。

这是一个很长的过程,也许你会发现学了linux内核,并不会给你带来什么,我现在就是这样觉得的,感觉自己什么都不会做,真希望有人能我一些建议!不过学习学习也是有好处的,比如看了赵炯的《Linux内核0.11完全注释》后,你再去看UCOS-II,会感觉那太容易了!也许学习linux内核会对将来的工作有所帮助吧!

linux内核由哪几部分组成,简述各部分作用

一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。

1、内存管理

内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。

Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。

2、进程管理

进程管理主要控制系统进程对CPU的访问。当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程。:Linux支持多任务运行,那么如何在一个单CPU上支持多任务呢?这个工作就是由进程调度管理来实现的。

3、进程间通信

进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不用的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。

一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。

4、虚拟文件系统

Linux内核中的虚拟文件系统用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统。

5、网络接口

网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。

如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章