Understanding linux kernel第一章

本文是《Understanding Linux kernel》第一章的概要,介绍了Linux与其他类Unix内核的比较,硬件支持,内核版本,操作系统基本概念,如多用户、用户和组、进程、内核架构。重点讲解了内核的基本任务、文件系统、进程模型、线程管理和内存管理。内容涵盖了内核的文件处理系统调用、同步机制,如信号量、自旋锁等,以及信号和线程间通信。
摘要由CSDN通过智能技术生成

发现逐句翻译实在是太花时间,况且我的本意也不是出版一本书。改写成摘要吧。顺便解释一些专有名字,以防日后遗忘。

1. 介绍

Linux最初是在1991年被Linus Torvalds开发出来的,当时运行在试用了Intel 80386处理器的IBM个人电脑上。那年代能买得起这电脑,看来家里是不差钱的。
Linux是完全兼容Unix的,也就是说很多Unix程序可以直接搬到Linux上执行。
一般来说不同的Linux发行版会吧Linux内核代码放在/usr/src/linux,此书之后的路径都在此目录内。存疑

1.1 Linux和其他“类Unix”内核比较

类Unix简而言之就是能跑Unix程序的
原书说了一堆屁话,总而言之,说了些Linux,或者说类Unix内核的“卖点”:

  • 虚拟内存Virtual memory,简单来说,避免应用程序直接去写内存真实地址,还能征用磁盘空间冒充一下RAM
  • 虚拟文件系统Virtual filesystem,VFS。当程序读写磁盘时,不用考虑文件系统是FAT还是NTFS还是exFAT等等。
  • 轻量级进程Lightweight processes,我猜应该是fork吧!
  • Unix信号signal,进程间通信,典型的例子有SIGSEGV、SIGBUS、SIGILL和SIGFPE
  • 线程间通信SVR4 interprocess communications,IPC。例如管道pipe,消息队列message queue
  • 支持SMP架构的cpu,应该常见个人cpu都是SMP的吧。(SMP Symmetric Multiprocessor对称多处理,即多核CPU中每个核地位一样,众生平等,与之相对的是多核CPU中有某个核是老大,他能干一些其他小弟不能干的事情)

之后举了些例子,和其他内核比较,太细致,目前来说没意义。我就简单附上他的特点吧,具体意思不解释了。

  • Linux是微内核而不是宏内核。
  • Linux可以动态地加载一些模块module,在写驱动的时候应用得很多,比如一个设备没有显卡,那它就可以不用加载显卡驱动模块了。
  • Kernel threading不是很理解原文,先不写了
  • Multithreaded application support,也不是很理解
  • 抢占式内核preemptive kernel,貌似不是默认编译选项。
  • Multiprocessor support即之前说过的SMP支持
  • 文件系统,即之前说过的虚拟文件系统特性
  • Streams,不知道原文说些什么
    Linux还有些其他优点
  • 免费
  • 随意修改
  • 对硬件性能要求不高
  • 性能很屌
  • 写linux的人都很屌
  • 内核很小
  • 兼容性好
  • 支持好,意思是你有问题报告给他们开发小组,他们会迅速回应。这里的问题是指系统bug等问题,如果你不会用还是别问他们了。

原文说了一堆,总而言之就是linux好炸了。

1.2 硬件支持

写得没什么意义,总之支持很多cpu架构。

1.3 Linux版本

写了一堆内核版本号的规则,不是很有意思。
本书的内核是2.6.11

1.4 操作系统基本概念

  • 内核既是操作系统。
  • 内核有2个基本任务:
    • 处理好硬件
    • 给用户程序user program一个运行的环境
  • Linux内核不允许用户程序直接执行一些敏感操作(例如开关机,从硬件获取一些信息,比如tcpip的帧是从以太网获得,进一步说是从phy芯片获得),而是提交请求给内核,内核评估之后再决定是否执行。因此对于cpu来说有两种模式,user模式和kernel模式。因为在任意一瞬间,一个cpu的核心只能正在跑一个程序,要么user app,要么由于收到了user的请求正在跑kernel。这种机制也已经有了硬件的支持。

1.4.1 多用户

说简单点,允许一个操作系统同时被多个用户登录,而用户之间不会互相影响。

1.4.2 用户和组

用户是通过UID,User ID来区分的,是一串数字。通过组来分配资源。比如某个文件可以被某一群用户,也就是组,访问,而不在这组里的用户就不能。
用户里面的大哥叫superuser,他可以为所欲为。

1.4.3 进程Process

进程就是一个程序的运行实例。相当于打一个游戏多开,那每一个游戏窗口就是这个游戏程序的一个运行实例,就是进程。原书这里还黑了一下win98,说它不是multiuser操作系统。
还说到Linux是分时操作系统,每个进程在一段时间内都有平等的运行时间。

1.4.4 内核架构

就如之前所说,大多数Unix内核都是宏内核:所有的内核层都是和内核本身交织在一起,而且都是在内核态运行。说人话,宏内核大包大揽了很多本来可以不必它来完成的事情,如驱动,文件系统等等。而微内核只含有一些非常必要的功能,剩余的都剥离出去到user space,有需求的时候再来请求内核就是了。
微内核缺点就是理论上速度会有些慢,因为乱七八糟的操作都要请求内核,而cpu切换user态和kernel态是需要时间的。宏内核把很多活儿都放在内核态,切换的次数自然会少一些,而且同为内核态的进程互相交流效率也会比较高。但是就编程而言,微内核由于倾向于把不同功能的内核层分离,代码相互之间不依赖,会便于理解和开发。而且微内核对于RAM的使用也会更有效率。(强行洗白)
为了让不同内核程序分离,Linux用了module这玩意儿,module可以在kernel运行的时候加载或卸载。

1.5 Unix文件系统概述

Unix操作系统设计其实是围绕它的操作系统进行的,接下来看看主要特点,之后会用到。

1.5.1 文件Files

Unix文件用字节流构成的一个信息容器。(请告诉我哪种文件系统不是这样?)内核不会参与到如何解释一个文件的内容。Many programming libraries implemen

为了透彻理解Linux的工作机理,以及为何它在各种系统上能顺畅运行,你需要深入到内核的心脏。cPu与外部世界的所有交互活动都是由内核处理的,哪些程序会分享处理器的时间,以什么样的顺序来分享。内核不遗余力地管理有限的内存,以使数以千计的进程有效地共享系统资源。内核还精心组织数据传送,使得 cPu不再受限于慢速硬盘。 《深入理解Linux内核》第三版将引领你畅游内核中用到的最主要数据结构、算法和编程技巧。如果你的确想了解计算机内部的实现机理,那么作者透过现象探寻本质,提供了颇有价值的深入分析。本书针对具体的Intel平台,讨论了其重要特征,逐行剖析了相关的代码片段。但是,本书涵盖的内容不仅仅局限于代码的机理,还解释了Linux运作方式的理论支撑。 本书第三版涵盖Linux 2.6,从中可以看到几乎内核每个子系统都有相当大的变化,首当其冲的是内存管理和块设备部分。本书集中讨论了如下内容: 内存管理,包括文件缓冲、进程交换以及直接内存访问(DMA) 虚拟文件系统层和第二及第三扩展文件系统 进程创建及调度   信号、中断及设备驱动程序的主要接口   定时   内核中的同步   进程间通信(IPC)   程序执行   本书将使你熟悉Linux所有的内在工作机理,但本书不仅仅是一种学术演练。你将了解到什么条件会促使Linux产生最佳性能,你还会看到,Linux 在各种环境下如何满足进程调度、文件访问及内存管理期间系统提出的快速响应要求。本书有助于你充分展现Linux系统的魅力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值