精华内容
下载资源
问答
  • Linux体系结构

    千次阅读 2018-10-18 22:13:14
    为便于更好的了解Linux系统的体系结构,先介绍常用的windows系统的体系结构。  Windows系列操作系统采用微内核体系结构,模块化设计,将对象分为用户模式层和内和模式层。用户模式层由一组组价(子系统)构成,将...

    为便于更好的了解Linux系统的体系结构,先介绍常用的windows系统的体系结构。

           Windows系列操作系统采用微内核体系结构,模块化设计,将对象分为用户模式层和内和模式层。用户模式层由一组组价(子系统)构成,将与内核模式组件有关的必要信息与其最终用户和应用程序隔离开来。内核模式层有权访问系统数据和硬件,能直接访问内存,并在被保护的内存区域中执行。

    Linux

             Linux操作系统是采用单内核模式的操作系统,内核代码结构紧凑,执行速度快。内核是Linux操作系统的主要部分,它可实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,为核外的所有程序提供运行环境。

            Linux采用分层设计,它包括4个层次。每层只能与它相邻的层通信,层次间具有从上到下的依赖关系,靠上的层依赖于靠下的层,但靠下的层并不依赖于靠上的层。各层系统介绍如下。

    • 用户应用程序层:

             位于整个系统的最顶层,是Linux系统上运行的应用程序集合,常见的用户应用程序有字处理应用程序、多媒体处理应用程序、网络应用程序等。
    • 操作系统服务:

             位于用户应用程序与系统内核之间,主要是指那些为用户提供服务且执行操作系统部分功能的程序,为应用程序提供系统内核的调用接口。X窗口系统、Shell命令解释系统、内核编程接口等就属于操作系统服务子系统。这一部分也称为系统程序。
    • Linux内核:

              靠近硬件的是内核,即Linux操作系统常驻内存部分。Linux内核是整个操作系统的核心,由它实现对硬件资源的抽象和访问调度。它为上层调用提供了一个统一的虚拟机器接口,在编写上层程序的时候不需要考虑计算机使用何种类型的物理硬件,也不需要考虑临界资源问题。每个上层进程执行时就像它是计算机上的唯一进程,独占了系统的所有内存和其他硬件资源。但实际上,系统可以同时运行多个进程,由Linux内核保证和进程对临界资源的安全使用。所有运行在内核之上的程序可分为系统程序和用户程序两大类,但他们统统运行在用户模式之下。内核之外的所有程序必须通过系统调用才能进入操作系统的内核。
    • 硬件系统:

              包含Linux所使用的所有物理设备,如CPU、内存、硬盘和网络设备等。
    展开全文
  • 0 引言 学习嵌入式Linux,之前也说过...1 Linux体系结构 Linux体系分为两大块:内核空间(系统调用接口、内核、平台支持代码、硬件支持)、用户空间(用户应用、C库),之所以这样划分是有一定道理的。原因如下:...

    目录

    0 引言

    1 Linux体系结构

    2 Linux内核结构

    3 Linux内核源码目录结构

    4 小结


    0 引言

    学习嵌入式Linux,之前也说过,包括几部分:应用开发、驱动开发、内核开发,我们后面的大部分博文都会围绕在Linux驱动开发展开,但是Linux内核有和驱动开发相关联的东西,所以,本博文主要对Linux内核进行提纲挈领,有个总体的认知,内容包括:Linux体系结构、Linux内核结构、Linux内核源码目录结构。

    1 Linux体系结构

    Linux体系分为两大块:内核空间(系统调用接口、内核、平台支持代码、硬件支持)、用户空间(用户应用、C库),之所以这样划分是有一定道理的。原因如下:

    1)架构分层,开发高效:将Linux底层和应用分开了,应用开发的工程师做自己的应用开发,底层硬件驱动工程师做自己的驱动开发,在大型项目中,各司其职,协作效率高。

    2)保护内核,安全第一:Linux内核是整个Linux体系结构的核心,其主要做的事就是进程调度、内存管理、虚拟文件系统、网络接口等等,这些很多涉及到硬件的直接操作,要是我们随便上一个应用都能直接对底层调用,那就容易乱套了,稍微一个应用崩溃,可能整个系统都不稳定了。很多CPU都有不同的工作模式限定可以执行的指令或访问的寄存器不同,像ARM有7种模式,X86有Ring0-3 4个不同的级别权限,Android应用更是放在JVM(Java虚拟机)上运行,远离底层。

    2 Linux内核结构

    此处说的Linux内核结构,就是第一节内容中Linux体系结构中内核空间的Kernel,内核的结构如下图所示,各模块简介如下,我们主要关注的其实是Device Drivers设备驱动,其他部分内核已经是做好了的,现阶段了解即可。

    1)System Call Interface:SCI层,为用户空间提供一套标准的系统调用函数访问Linux内核;

    2)Process Management:PM进程管理,内核通过SCI来提供一个API用于创建进程(fork、exec),停止进程(kill、exit),进程间通信(signal等),进程调度;

    • 进程实际是某特定应用程序的一个运行实体,在 Linux 系统中,能够同时运行多个进程,Linux 通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度” ,完成调度的程序称为调度程序。
    • 进程调度控制进程对CPU的访问,当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
    • 通过多任务机制,每个进程可认为只有自己独占计算机,从而简化程序的编写。每个进程有自己单独的地址空间,并且只能由这一进程访问,这样,操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成的危害。 为了完成某特定任务,有时需要综合两个程序的功能,例如一个程序输出文本,而另一个程序对文本进行排序。为此,操作系统还提供进程间的通讯机制来帮助完成这样的任务。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。

    3)Memory Management:MM内存管理,用于控制多进程安全的共享内存;

    对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。Linux 将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。

    4)Vitual File System:VFS虚拟文件系统,其隐藏了不同种文件系统的具体细节,为文件操作提供了统一的接口,在用户和文件系统之间提供了一个交换层。VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

    5)Network Stack:网络协议栈,提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。众所周知,TCP/IP 协议是 Internet 的标准协议,同时也是事实上的工业标准。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

    6)Arch:包含了硬件原厂提供的代码,Linux内核用在不同的处理器上,底层硬件是不同的,具体就体现在这里。

    7)Device Drivers:设备驱动,Linux 内核中有大量代码是在驱动程序部分,设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。该部分是后期要重点研究的内容,Linux驱动一般分为网络设备、块设备、字符设备、杂项设备。

    3 Linux内核源码目录结构

    目前Linux内核最新到了5.11.16版本,就下载了这个版本看下目录结构,压缩包112.2MB,解压出来将近1个GB了。

    可以看到,功能相关的文件放在了不同的子目录下:

    【arch目录】:平台目录,内核所能支持的所有CPU架构,如ARM、X86等都有对应的子目录,每个子目录下又有boot(系统引导)、mm(内存管理)、kernel(相关内核特性实现方式,如信号处理)、lib(硬件相关的库函数)、tools(生成镜像的工具);

    【block目录】:部分块设备驱动程序;

    【certs目录】:与认证和签名相关代码;

    【crypto目录】:加密压缩CRC校验;

    【Documentation目录】:内核使用说明文档;

    【drivers目录】:设备驱动

    【fs目录】:各种文件系统的实现代码;

    【include目录】:通用的头文件;

    【init目录】:内核初始化和启动代码;

    【ipc目录】:进程间通信实现的代码;

    【kernel目录】:Linux核心功能代码,程序调度、进程控制等

    【lib目录】:通用库代码;

    【mm目录】:内存管理相关代码;

    【net目录】:各种网络协议实现;

    【samples目录】:内核编程的范例;

    【scripts目录】:配置裁剪内核的工具脚本;

    【security目录】:不同的Linux安全模式相关代码;

    【sound目录】:音频设备驱动程序;

    【tools目录】:.c编译成目标文件,连接合成可运行的内核镜像文件等工具;

    【usr目录】:用于打包和压缩的CPIO等;

    【virt目录】:内核虚拟机;

    4 小结

    以上可以看到Linux的内核文件相当之多,代码量惊人,我们学习的时候不要直接扎进去看源码,这要是看完估计头发都白了,人生苦短啊,大部分代码已经是写好了的,Linux裁剪后编译的镜像可能也就几个MB,其中大部分代码也是不需要修改的,我们做Linux驱动开发,焦点在于Driver部分:函数的调用、驱动的协议等。

    Linux开发之路就在前方,朋友们一起肝起来吧!

     

    【参考】:

    https://www.kernel.org

    https://www.linuxprobe.com/linux-system-structure.html

    http://www.360doc.com/content/18/0412/15/11935121_745034658.shtml

    https://www.bilibili.com/read/cv6232273/

     

    作于202104241425,已归档

    ———————————————————————————————————

    本文为博主原创文章,转载请注明出处!

    若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

    祝君升职加薪,鹏程万里!

    展开全文
  • 总结:Linux体系结构和内核结构区别

    千次阅读 2017-04-01 17:01:02
    有时候面试的时候被问到linux体系结构的时候(就是linux系统是怎么构成的)时,我们可以参照下面的图回答:从大的方面讲,linux体系结构可以分为两块:  1、用户空间:用户空间又包含了用户的应用程序和c库  2、...

    有时候面试的时候被问到linux体系结构的时候(就是linux系统是怎么构成的)时,我们可以参照下面的图回答:从大的方面讲,linux体系结构可以分为两块:

          1、用户空间:用户空间又包含了用户的应用程序和c库

          2、内核空间:内核空间又包括系统调用,内核以及平台架构相关的代码



    而linux体系结构要分为用户空间和内核空间的原因是:

       1)、现代cpu实现了不同的工作模式,不同模式下cpu可以执行的指令和访问的寄存器不同。

       2)、linux从cpu的角度出发,为了保护内核的安全,把系统分成了两部分。

    用户空间和内核空间是程序执行的两种不同的状态,我们可以通过系统调用和硬件中断来完成用户空间到内核空间的转移。

    linux内核结构:


    展开全文
  • 1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 (2)内核空间...

    1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块:

    1)用户空间:用户空间中又包含了,用户的应用程序,C

    2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码


     2.Linux体系结构要分成用户空间和内核空间的原因:

        1)现代CPU通常都实现了不同的工作模式,

         以ARM为例:ARM实现了7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同:

    (1)用户模式 usr (2)系统模式  sys(3)管理模式 svc(4)快速中断  fiq(5)外部中断  irq(6)数据访问终止 abt(7)未定义指令异常;以(2)X86为例:X86实现了4个不同级别的权限,Ring0—Ring3 ;Ring0下可以执行特权指令,可以访问IO设备;Ring3则有很多的限制    

        2)所以,Linux从CPU的角度出发,为了保护内核的安全,把系统分成了2部分;

        3.用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断“来完成用户空间到内核空间的转移

        4.Linux的内核结构(注意区分LInux体系结构和Linux内核结构)



    展开全文
  • 1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 (2)内核空间:...
  • Linux体系结构、Linux内核架构

    千次阅读 2018-02-02 21:01:53
    Linux体系结构 Linux由用户空间和内核空间两部分组成。 现代CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式: 用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中止...
  • 1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 (2)内核空间:...
  • 一、Linux体系结构    1、 当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照上图这么回答:  从大的方面讲,Linux体系结构可以分为两块:(1)用户空间(2)内核空间
  • 前一节内容大概介绍了一下Linux的历史由来,各大Linux发行厂商都是基于GNU项目下的所有开源软件,来构建各自己的Linux发行版本,一个完整的Linux发行版本大概可以分为以下四个层次结构:   Base System => X ...
  • Linux体系结构(三): X Window架构

    千次阅读 2013-09-17 09:39:23
    上一节提到如果想要使Linux系统能够开启图形化桌面,需要有X层协议的支持,而X协议的具体实现是由专门的GNU项目来做的,在以前,实现此协议的GNU项目是XFree86,而如今,已经被Xorg所代替,也许将来Xorg也会完全被...
  • Linux体系结构结构

    2020-04-30 16:17:30
    Linux体系结构 从大的方面讲,Linux 体系结构可以分为两块: 用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。 内核空间(Kernel Space) :内核空间又包括系统...
  • linux内核体系结构

    千次阅读 2013-07-22 16:28:30
    linux内核第一记 1.linux体系结构 从上图可知,Linux分为:用户空间和内核空间。内核空间和用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。 www.2cto.com  2....
  • Linux体系结构

    千次阅读 2019-09-13 17:13:32
    Linux体系结构主要分为用户态(用户上层活动)和内核态,在 Linux 启动的时候,首先会启动内核,内核从本质上看是一段管理计算机硬件设备的程序。 内核为上层应用程序提供了访问的接口,即系统调用,是一种不能...
  • Linux网络体系结构

    千次阅读 2009-06-26 18:39:00
    一 内核结构 按功能,Linux内核可以划分为5个不同的部分,每一部分处理一项明确的功能,同时又向其他内核组件提供... 1进程管理2内存管理3文件系统4设备驱动程序5网络 二 网络体系结构 先来看一下Linux网络体系结构
  • Linux --- Linux体系结构

    千次阅读 2019-05-02 12:54:04
    Linux体系结构 uname -a 如果想在Windows里面跑linux 指令 安装 cigwin 查看所有系统调用 man 2 syscalls 其中的2 代表要查的是系统调用 3 代表公共库函数 例如:ls -lrt which ls 查看文件指令 ls cat ...
  • Linux内核体系结构

    千次阅读 2012-01-03 00:23:17
     图2是Linux系统的层次结构: 图2 Linux系统层次结构  最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。GNU C Library (glibc)也在这
  • Linux 计时体系结构

    千次阅读 2011-07-15 14:47:35
    <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm ... Linux必定执行与定时相关的操作。例如,内核周期性地:更新自系统启动以来所经过的时间。更新时间和日期。确定当前进程在每CPU上已经运行了多长时间,如
  • 深入Linux PAM 体系结构

    2012-04-09 17:41:58
    深入Linux PAM 体系结构:  http://linux.chinaitlab.com/tool/530218.html    了解和配置 PAM:  http://www.ibm.com/developerworks/cn/linux/l-pam/
  • [Linux]基本体系结构

    2019-10-01 23:21:38
    Linux体系结构 一个完整的操作系统由内核、命令解释层、文件系统等部分组成 内核 执行最底层的任务,保证系统正常运行,协调多个并发进程,管理进程内存。 主要组成模块: 文件系统驱动模块 硬件设备驱动模块 ...
  • Linux内核体系结构 Linux内核模式 操作系统内核结构模式分为整体式的单内核结构和层次式的微内核结构。 Linux0.11为单内核结构,后期的Linux一如既往的是单内核结构,但是其吸收的微内核结构的优点。 单内核机构中...
  • 如图,显示了 Linux 操作系统的体系结构。 # Linux 操作系统的组成 内核的接口被称为系统调用(system call),公用函数库建立在系统调用接口上,应用程序既可使用公用函数库,也可使用系统调用。shell 是一个特殊的...
  • Linux 文件系统体系结构

    千次阅读 2013-10-29 22:46:31
  • 如何查看linux系统的体系结构

    万次阅读 多人点赞 2019-05-23 18:45:53
    拿到一块开发板,有时候想快速的知道它的体系结构或者叫系统架构,linux上提供了比较多的方法来判断。下面列几种相对常见一些的 uname命令 uname -a 不是最直观的,但是也是一个不错的命令。 nvidia@tegra-...
  • Linux内核的概念体系结构

    千次阅读 2009-07-22 19:12:00
    Linux内核的概念体系结构译自《Conceptual Architecture of the Linux Kernel》作者:Ivan Bowman January 1998 For Ric Holt刘建文略译(http://blog.csdn.net/keminlau) KEY:操作系统 软件工程 体系结构 2.3 ...
  • 如何查看linux系统的体系结构

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,472
精华内容 54,988
关键字:

linux体系结构

linux 订阅