当前位置: 首页 > news >正文

男男做的视频网站wordpress 系统

男男做的视频网站,wordpress 系统,网站建设准备期对应网站,网站推广seo蜘蛛屯优化排名来源 #xff1a;头条号Linux学习教程#xff0c;冰凌块儿01前言本文主要讲解什么是Linux内核#xff0c;以及通过多张图片展示Linux内核的作用与功能#xff0c;以便于读者能快速理解什么是Linux内核#xff0c;能看懂Linux内核。拥有超过1300万行的代码#xff0c;Linu… 来源 头条号Linux学习教程冰凌块儿01前言本文主要讲解什么是Linux内核以及通过多张图片展示Linux内核的作用与功能以便于读者能快速理解什么是Linux内核能看懂Linux内核。拥有超过1300万行的代码Linux内核是世界上最大的开源项目之一但是内核是什么它用于什么?02什么是内核内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。03内核还要分种类是的没错。3.1 微内核微内核只管理它必须管理的东西:CPU、内存和IPC。计算机中几乎所有的东西都可以被看作是一个附件并且可以在用户模式下处理。微内核具有可移植性的优势因为只要操作系统仍然试图以相同的方式访问硬件就不必担心您是否更改了视频卡甚至是操作系统。微内核对内存和安装空间的占用也非常小而且它们往往更安全因为只有特定的进程在用户模式下运行而用户模式不具有管理员模式的高权限。3.1.1 Pros可移植性安装占用空间小小内存占用安全3.1.2 Cons通过驱动程序硬件更加抽象硬件可能反应较慢因为驱动程序处于用户模式进程必须在队列中等待才能获得信息进程不能在不等待的情况下访问其他进程3.2 单内核单内核与微内核相反因为它们不仅包含CPU、内存和IPC而且还包含设备驱动程序、文件系统管理和系统服务器调用等内容。单内核更擅长于访问硬件和多任务处理因为如果一个程序需要从内存或运行中的其他进程中获取信息那么它就有一条更直接的线路来访问信息而不需要在队列中等待来完成任务。但是这可能会导致问题因为在管理模式下运行的东西越多如果行为不正常就会有越多的东西导致系统崩溃。3.2.1 Pros更直接地访问程序的硬件流程之间更容易通信如果支持您的设备它应该不需要额外安装就可以工作进程反应更快因为没有等待处理器时间的队列3.2.2 Cons较大安装体积较大内存占用不太安全因为所有操作都在管理模式下运行04混合的内核混合内核能够选择在用户模式下运行什么以及在管理模式下运行什么。通常情况下设备驱动程序和文件系统I/O将在用户模式下运行而IPC和服务器调用将保持在管理器模式下。这是两全其美但通常需要硬件制造商做更多的工作因为所有驱动程序的责任都由他们来承担。它还可能存在一些与微内核固有的延迟问题。4.1 Pros开发人员可以选择什么在用户模式下运行什么在管理模式下运行比单片内核更小的安装占用空间比其他型号更灵活4.2 Cons会遭受与微内核相同的进程延迟设备驱动程序需要由用户管理(通常)05Linux内核文件在哪里Ubuntu中的内核文件存储在/boot文件夹中称为vmlinux -version。vmlinuz这个名字来自于unix世界早在60年代他们就把内核简单地称为“unix”所以当内核在90年代首次开发时Linux就开始把内核称为“Linux”。当开发虚拟内存以便更容易地进行多任务处理时将“vm”放在文件的前面以显示内核支持虚拟内存。有一段时间Linux内核被称为vmlinux但是内核变得太大无法装入可用的引导内存因此压缩了内核映像并将末尾的x更改为z以显示它是用zlib压缩的。并不总是使用相同的压缩通常用LZMA或BZIP2替换一些内核简单地称为zImage。版本号将采用A.B.C.格式D在。B可能是2.6,C是您的版本D表示您的补丁或补丁。在/boot文件夹中还有其他非常重要的文件称为initrd.img-version、system.map-version,  config-version。initrd文件用作一个小RAM磁盘用于提取和执行实际的内核文件。这个系统。map文件用于内核完全加载之前的内存管理配置文件告诉内核在编译内核映像时要加载哪些选项和模块。06Linux内核体系结构因为Linux内核是单片的所以它比其他类型的内核占用空间最大复杂度也最高。这是一个设计特性在Linux早期引起了相当多的争论并且仍然带有一些与单内核固有的相同的设计缺陷。为了解决这些缺陷Linux内核开发人员所做的一件事就是使内核模块可以在运行时加载和卸载这意味着您可以动态地添加或删除内核的特性。这不仅可以向内核添加硬件功能还可以包括运行服务器进程的模块比如低级别虚拟化但也可以替换整个内核而不需要在某些情况下重启计算机。想象一下如果您可以升级到Windows服务包而不需要重新启动……07内核模块如果Windows已经安装了所有可用的驱动程序而您只需要打开所需的驱动程序怎么办?这本质上就是内核模块为Linux所做的。内核模块也称为可加载内核模块(LKM)对于保持内核在不消耗所有可用内存的情况下与所有硬件一起工作是必不可少的。模块通常向基本内核添加设备、文件系统和系统调用等功能。lkm的文件扩展名是.ko通常存储在/lib/modules目录中。由于模块的特性您可以通过在启动时使用menuconfig命令将模块设置为load或not load或者通过编辑/boot/config文件或者使用modprobe命令动态地加载和卸载模块轻松定制内核。第三方和封闭源码模块在一些发行版中是可用的比如Ubuntu默认情况下可能无法安装因为这些模块的源代码是不可用的。该软件的开发人员(即nVidia、ATI等)不提供源代码而是构建自己的模块并编译所需的.ko文件以便分发。虽然这些模块像beer一样是免费的但它们不像speech那样是免费的因此不包括在一些发行版中因为维护人员认为它通过提供非免费软件“污染”了内核。内核并不神奇但对于任何正常运行的计算机来说它都是必不可少的。Linux内核不同于OS X和Windows因为它包含内核级别的驱动程序并使许多东西“开箱即用”。希望您能对软件和硬件如何协同工作以及启动计算机所需的文件有更多的了解。08Linux 内核学习经验总结开篇学习内核每个人都有自己的学习方法仁者见仁智者见智。以下是我在学习过程中总结出来的东西对自身来说我认为比较有效率拿出来跟大家交流一下。内核学习一偏之见疏漏难免恳请指正。为什么写这篇博客刚开始学内核的时候不要执着于一个方面不要专注于一个子系统就一头扎到实际的代码行中去因为这样的话牵涉的面会很广会碰到很多困难容易产生挫败感一个函数体中假设刚开始的时候正在学习某个方面的某个具体的功能函数很可能掺杂着其他各个子系统方面设计理念多是大量相关的数据结构或者全局变量用于支撑该子系统的管理工作下相应的代码实现这个时候看到这些东西纷繁芜杂是没有头绪而且很不理解的会产生很多很多的疑问这个时候如果对这些疑问纠缠不清刨根问底那么事实上就是在学习当前子系统的过程中频繁的去涉足其他子系统这时候注意力就分散了而事实上等了解了各个子系统后再回头看这些东西的话就简单多了而且思路也会比较清晰。所以要避免 “只见树木不见森林”不要急于深入到底层代码中去不要过早研究底层代码。我在大二的时候刚开始接触内核就犯了这个错误一头扎到内存管理里头去看非常底层的实现代码虽然也是建立在内存管理的设计思想的基础上但是相对来说比较孤立因为此时并没有学习其它子系统应该说无论是视野还是思想都比较狭隘所以代码中牵涉到的其它子系统的实现我都直接跳过了这一点还算聪明当然也是迫不得已的。我的学习方法刚开始我认为主要的问题在于你知道不知道而不是理解不理解某个子系统的实现采用了某种策略、方法而你在学习中需要做的就是知道有这么一回事儿然后才是理解所描述的策略或者方法。根据自己的学习经验刚开始学习内核的时候我认为要做的是在自己的脑海中建立起内核的大体框架理解各个子系统的设计理念和构建思想这些理念和思想会从宏观上呈献给你清晰的脉络就像一个去除了枝枝叶叶的大树的主干一目了然当然肯定还会涉及到具体的实现方法、函数但是此时接触到的函数或者方法位于内核实现的较高的层次是主要函数已经了解到这些函数针对的是哪些设计思想实现了什么样的功能达成了什么样的目的混个脸熟的说法在这儿也是成立的。至于该主函数所调用的其它的辅助性函数就等同于枝枝叶叶了不必太早就去深究。此时也就初步建立起了内核子系统框架和代码实现之间的关联关联其实很简单比如一看到某个函数名字就想起这个函数是针对哪个子系统的实现了什么功能。我认为此时要看的就是LKD3这本书算是泛泛而谈主要就是从概念设计大的实现方法上描述各个子系统而对于具体的相关的函数实现的代码讲解很少涉及(对比于ULK3此书主要就是关于具体函数代码的具体实现的深入分析当然你也可以看但是过早看这本书会感觉很痛苦很枯燥无味基本上都是函数的实现)很少但不是没有这就很好满足我们当前的需求还避免我们过早深入到实际的代码中去。而且本书在一些重要的点上还给出了写程序时的注意事项算是指导性建议。主要的子系统包括内存管理进程管理和调度系统调用中断和异常内核同步时间和定时器管理虚拟文件系统块I/O层设备和模块。这里的先后顺序其实就是LKD3的目录的顺序。我学习的时候是三本书交叉着看的先看LKD3专于一个子系统主要就是了解设计的原理和思想当然也会碰到对一些主要函数的介绍但大多就是该函数基于前面介绍的思想和原理完成了什么样的功能该书并没有就函数本身的实现进行深入剖析。然后再看ULK3和PLKA上看同样的子系统但是并不仔细分析底层具体函数的代码只是粗略地、不求甚解地看甚至不看。因为有些时候在其中一本书的某个点上卡壳了不是很理解了在另外的书上你可能就碰到对同一个问题的不同角度的描述说不准哪句话就能让你豁然开朗如醍醐灌顶。我经常碰到这种情况。并不是说学习过程中对一些函数体的实现完全就忽略掉只要自己想彻底了解其代码实现没有谁会阻止你。我是在反复阅读过程中慢慢深入的。比如VFS中文件打开需要对路径进行分析需要考虑的细节不少(.././之类的)但是其代码实现是很好理解的。再比如CFS调度中根据shedule latency、队列中进程个数及其nice值(使用的是动态优先级)计算出分配给进程的时间片没理由不看的这个太重要了而且也很有意思。ULK3也会有设计原理与思想之类的概括性介绍基本上都位于某个主题的开篇段落。但是更多的是对支持该原理和思想的主要函数实现的具体分析同样在首段一句话综述函数的功能然后对函数的实现以1、2、3或者a、b、c步骤的形式进行讲解。我只是有选择性的看有时候对照着用source  insight打开的源码确认一下代码大体上确实是按书中所描述的步骤实现的就当是增加感性认识。由于步骤中掺杂着各种针对不同实现目的安全性、有效性检查如果不理解就先跳过。这并不妨碍你对函数体功能实现的整体把握。PLKA介于LKD3和ULK3之间。我觉得PLKA的作者看照片真一德国帅小伙技术如此了得肯定看过ULK无论他的本意还是有意总之PLKA还是跟ULK有所不同对函数的仔细讲解都做补充说明去掉函数体中边边角角的情况比如一些特殊情况的处理有效性检查等而不妨碍对整个函数体功能的理解这些他都有所交代做了声明而且就像LKD3一样在某些点上也给出了指导性编程建议。作者们甚至对同一个主要函数的讲解的着重点都不一样。这样的话对我们学习的人而言有助于加深理解。另外我认为很重要的一点就是PLKA针对的2.6.24的内核版本而ULK是2.6.11LKD3是2.6.34。在某些方面PLKA比较接近现代的实现。其实作者们之所以分别选择11或者24都是因为在版本发行树中这两个版本在某些方面都做了不小的变动或者说是具有标志性的转折点这些信息大多是在书中的引言部分介绍的具体的细节我想不起来了。Intel V3针对X86的CPU本书自然是系统编程的权威。内核部分实现都可以在本书找到其根源。所以在读以上三本书某个子系统的时候不要忘记可以在V3中相应章节找到一些基础性支撑信息。在读书过程中会产生相当多的疑问这一点是确信无疑的。大到搞不明白一个设计思想小到不理解某行代码的用途。各个方面各种疑问你完全可以把不理解的地方都记录下来(不过我并没有这么做没有把疑问全部记下来只标记了很少一部分我认为很关键的几个问题)专门写到一张纸上不对一个本上我确信会产生这么多的疑问不然内核相关的论坛早就可以关闭了。其实大部分的问题其中很多问题都是你知道不知道有这么一回事的问题都可以迎刃而解只要你肯回头再看书读百遍其义自现。多看几遍前前后后的联系明白个七七八八是没有问题的。我也这么做了针对某些子系统也看了好几遍切身体会。当你按顺序学习这些子系统的时候前面的章节很可能会引用后面的章节就像PLKA的作者说的那样完全没有向后引用是不可能的他能做的只是尽量减少这种引用而又不损害你对当前问题的理解。不理解没关系跳过就行了。后面的章节同样会有向前章节的引用不过这个问题就简单一些了  你可以再回头去看相应的介绍当时你不太理解的东西很可能这个时候就知道了它的设计的目的以及具体的应用。不求甚解只是暂时的。比如说内核各个子系统之间的交互和引用在代码中的体现就是实现函数穿插调用比如你在内存管理章节学习了的内存分配和释放的函数而你是了解内存在先的在学习驱动或者模块的时候就会碰到这些函数的调用这样也就比较容易接受不至于太过茫然再比如你了解了系统时间和定时器的管理再回头看中断和异常中bottom half的调度实现你对它的理解就会加深一层。子系统进行管理工作需要大量的数据结构。子系统之间交互的一种方式就是各个子系统各自的主要数据结构通过指针成员相互引用。学习过程中参考书上在讲解某个子系统的时候会对数据结构中主要成员的用途解释一下但肯定不会覆盖全部成员比较多的情况例如task_struct对其它子系统基于某个功能实现的引用可能解释了也可能没做解释还可能说这个变量在何处会做进一步说明。所以不要纠结于一个不理解的点上暂且放过回头还可以看的。之间的联系可以在对各个子系统都有所了解之后再建立起来。其实我仍然在强调先理解概念和框架的重要性。等我们完成了建立框架这一步就可以选择一个比较感兴趣的子系统比如驱动、网络或者文件系统之类的。这个时候你再去深入了解底层代码实现相较于一开始就钻研代码更容易一些而且碰到了不解之处或者忘记了某个方面的实现此时你完全可以找到相应的子系统因为你知道在哪去找查漏补缺不仅完成了对当前函数的钻研而且可以回顾、温习以前的内容融会贯通的时机就在这里了。《深入理解linux虚拟内存》(2.4内核版本)LDD3《深入理解linux网络技术内幕》几乎每一个子系统都需要一本书的容量去讲解所以说刚开始学习不宜对某个模块太过深入等对各个子系统都有所了解了再有针对性的去学习一个特定的子系统。这时候对其它系统的援引都可以让我们不再感到茫然、复杂不知所云。比如LDD3中的以下所列章节构造和运行模块并发和竞态时间、延迟及延缓操作,分配内存中断处理等都属于驱动开发的支撑性子系统虽说本书对这些子系统都专门开辟一个章节进行讲解但是详细程度怎么能比得上PLKAULK3LKD3这三本书看完这三本书你会发现读LDD3这些章节的时候简直跟喝白开水一样太随意了因为LDD3的讲解比之LKD3更粗略。打好了基础PCI、USB、TTY驱动块设备驱动网卡驱动需要了解和学习的东西就比较有针对性了。这些子系统就属于通用子系统了解之后基于这些子系统的子系统的开发—驱动(需进一步针对硬件特性)和网络(需进一步理解各种协议)—相对而言其学习难度大大降低学习进度大大加快学习效率大大提升。说着容易做来难。达到这样一种效果的前提就是必须得静下心来认真读书要看得进去PLKAULK3厚得都跟砖头块儿一样令人望之生畏如果没有兴趣没有热情没有毅力无论如何都是不行因为需要时间需要很长时间。我并不是说必须打好了基础才可以进行驱动开发只是说打好了基础的情况下进行开发会更轻松更有效率而且自己对内核代码的驾驭能力会更强大。这只是我个人见解我自己的学习方式仅供参考。语言PLKA是个德国人用德语写的后来翻译成英文又从英文翻译成中文我在网上书店里没有找到它的纸质英文版所以就买了中文版的。ULK3和LKD3都是英文版的。大牛们写的书遣词造句真的是简洁易懂看原版对我们学习计算机编程的程序员来说完全不成问题最好原汁原味。如果一本书确实翻译地很好我们当然可以看中文版的用母语进行学习理解速度和学习进度当然是很快的不作他想。看英文的时候不要脑子里想着把他翻译成中文没必要。API感想“比起知道你所用技术的重要性成为某一个特别领域的专家是不重要的。知道某一个具体API调用一点好处都没有当你需要他的时候只要查询下就好了。”这句话源于我看到的一篇翻译过来的博客。我想强调的就是这句话针应用型编程再合适不过但是内核API就不完全如此。内核相当复杂学习起来很不容易但是当你学习到一定程度你会发现如果自己打算写内核代码到最后要关注的仍然是API接口只不过这些API绝大部分是跨平台的满足可移植性。内核黑客基本上已经标准化、文档化了这些接口你所要做的只是调用而已。当然在使用的时候最好对可移植性这一话题在内核中的编码约定烂熟于心这样才会写出可移植性的代码。就像应用程序一样可以使用开发商提供的动态库API或者使用开源API。同样是调用API不同点在于使用内核API要比使用应用API了解的东西要多出许多。当你了解了操作系统的实现—这些实现可都是对应用程序的基础性支撑啊—你再去写应用程序的时候应用程序中用到的多线程定时器同步锁机制等等等等使用共享库API的时候联系到操作系统从而把对该API的文档描述同自己所了解到的这些方面在内核中的相应支撑性实现结合起来进行考虑这会指导你选择使用哪一个API接口选出效率最高的实现方式。对系统编程颇有了解的话对应用编程不无益处甚至可以说是大有好处。设计实现的本质知道还是理解操作系统是介于底层硬件和应用软件之间的接口其各个子系统的实现很大程度上依赖于硬件特性。书上介绍这些子系统的设计和实现的时候我们读过了也就知道了如果再深入考虑一下为什么整体架构要按照这种方式组织为什么局部函数要遵循这样的步骤处理知其然知其所以然如果你知道了某个功能的实现是因为芯片就是这么设计的CPU就是这么做的那么你的疑问也就基本上到此为止了。再深究就是芯片架构方面的设计与实现对于程序员来讲无论是系统还是应用程序员足迹探究到这里已经解决了很多疑问因为我们的工作性质偏软而这些东西实在是够硬。比如ULK3中讲解的中断和异常的实现究其根源那是因为Intel x86系列就是这么设计的去看看Intel  V3手册中相应章节介绍都可以为ULK3中描述的代码实现方式找到注解。还有时间和定时器管理同样可以在Intel V3  对APIC的介绍中获取足够的信息操作系统就是依据这些硬件特性来实现软件方法定义的。又是那句话不是理解不理解的问题而是知道不知道的问题。有时候知道了就理解了。在整个学习过程中知道理解知道理解知道……交叉反复。为什么开始和结尾都是知道而理解只是中间步骤呢世界上万事万物自有其规律人类只是发现而已实践是第一位的实践就是知道的过程实践产生经验经验的总结就是理论理论源于实践理论才需要理解。我们学习内核深入研究搞来搞去又回到了芯片上芯片是物质的芯片的功用基于自然界中物质本有的物理和电子特性。追本溯源此之谓也。动手写代码纸上得来终觉浅绝知此事要躬行。只看书是绝对不行的一定要结合课本给出的编程建议自己敲代码。刚开始就以模块形式测试好了或者自己编译一个开发版本的内核。一台机器的话使用UML方式调试内核控制路走到哪一步单步调试看看程序执行过程比书上的讲解更直观明了。一定要动手实际操作。参考书LDD3          Linux Device Driver 3rdLKD3          Linux Kernel Development 3rdULK3          Understanding the Linux Kernel 3rdPLKA          Professional Linux Kernel ArchitectureUML            User Mode LinuxIntel V3       Intel? 64 and IA-32 Architectures Software Developer’s Manual  Volume 3 (3A, 3B 3C): System Programming Guide作者在写书的时候都是以自己的理解组织内容从自己的观点看待一个主题关注点跟作者自身有很大的关系。出书的时间有先后后来人针对同一个主题想要出书而又不落入窠臼最好有自己的切入方式从自己的角度讲解相关问题这才值得出这本书千篇一律是个掉价的行为书就不值钱了。尽信书不如无书。        http://lwn.net/Articles/419855/ 此处是一篇关于LKD3的书评指出了其中的错误当你读完的时候不妨去找找看一下自己在其中所描述的地方有什么特别的印象。        http://lwn.net/Articles/161190/此处是一篇对ULK3的介绍我认为其中很关键的几句话就可以给本书定位    Many of the key control paths in the kernel are described, step by step;一步一步地讲述内核控制路径的实现。The level of detail sometimes makes it hard to get a sense for the big  picture, but it does help somebody trying to figure out how a particular function works.对代码讲解的详细程度有时候很难让读者把握住它的主旨大意但是确实有助于读者理解一个特定的函数到底是如何工作的。Indeed, that is perhaps the key feature which differentiates this book. It is  very much a “how it works” book, designed to help people understand the  code.事实上这也正是本书与众不同的地方。更像一个“如何工作”的书帮助读者理解代码实现。It presents kernel functions and data structures, steps the reader through them, but does not, for example, emphasize the rules for using them.  UTLK is a study guide, not a programming manual.本书描述了内核函数和数据结构引导读者穿行于其间但是并没有着重强调使用它们的法则。UTLK是一本学习指南而不是编程手册。这几句话对本书的描述非常到位。基于此作为指导性原则我们就可以很有效率地使用它了。看一本技术书籍书中的序言部分绝对是首先应该翻阅的其次就是目录。我发现在阅读过程中我会频繁的查看目录甚至是喜欢看目录。结尾兴趣的力量是无穷的。兴趣能带来激情如果工作可以和兴趣结合到一起工作起来才会有热情那么工作就不只是工作了更是一种享受。Linux我的兴趣我的动力我的方向我的未来来源网址转载请保留blog.chinaunix.net/uid-24669930-id-4039377.htmlhttps://www.linuxrumen.com/rmxx/1406.htmlEND#推荐阅读    专辑|Linux文章汇总    专辑|程序人生    专辑|C语言嵌入式Linux微信扫描二维码关注我的公众号
http://www.pierceye.com/news/722634/

相关文章:

  • 网站建设合同 附件上海网站制作费用
  • 知名的环保行业网站开发开发一个app难吗
  • 律师网站建设方案网站企业制作
  • 基础建设期刊在哪个网站可以查做网站咨询
  • 万网个人网站备案查询甘肃建设银行网站
  • 网站建设有什么费用wordpress国外主题网站
  • 手机网站下拉菜单代码com域名代表什么
  • 网站右侧信息跟随左侧菜单栏变化好牛网站建设
  • 手机网站pc网站免费国外服务器租用
  • 商城网站建设服务wordpress手机导航三横拦
  • app设计欣赏网站长沙制作公园仿竹护栏
  • 景泰县做网站网站建设上市
  • 电子商务网站开发课题简介php mysql网站开发...
  • 如何提升网站alexa排名wordpress加联系方式
  • 餐厅网站模版wordpress linux
  • 网站seo优化怎么做mes系统
  • 江津网站建设公司做外贸去哪个网站找客户
  • 网站建设-部署与发布wordpress怎么代码高亮
  • 自己做的网站本地虚拟上传wordpress 不能评论
  • 百度贴吧网站开发需求分析怎么免费自己做推广
  • 网站怎么访问自己做的网页中国园林网
  • 郑州服装网站建设做营销型网站用那个cms好
  • 网站登录页面模板下载wordpress添加随机图片
  • 贵阳网站建设哪家便宜关键词林俊杰mp3在线听
  • 怎么看网站是哪个系统做的怎么自己建网站赚钱
  • 茶叶建设网站的优势小学网站模板
  • 铜川免费做网站公司个人博客页面
  • 织梦网站安装出现404 not found商务网站设计素材
  • 石家庄seo网站排名合肥做网站价格
  • 盘锦市城乡建设厅网站区域代理加盟项目