Linux 的系统架构

Linux 系统从应用角度来看,分为内核空间用户空间两个部分。
       内核空间Linux 操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要条件。

一、Linux 内核的主要模块

Linux 的内核主要由 5 个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信

1. 进程调度 SCHED

进程调度指的是系统对进程的多种状态之间转换的策略。
       Linux 下的进程调度有 3 种策略:SCHED_OTHERSCHED_FIFOSCHED_RR

SCHED_OTHER 是用于针对普通进程的时间片轮转调度策略。这种策略中,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行

SCHED_FIFO 是针对运行的实时性要求比较高、运行时间短的进程调度策略。这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会一直运行。

SCHED_RR 是针对实时性要求比较高、运行时间比较长的进程调度策略。这种策略与 SCHED_OTHER 的策略类似,只不过 SCHED_RR 进程的优先级要高得多。 系统分配给 SCHED_RR 进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾

由于存在多种调度方式,Linux 进程调度采用的是“有条件可剥夺”的调度方式。普通进程中采用的是 SCHED_OTHER 的时间片轮循方式,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源

2. 内存管理 MMU

内存管理是多个进程间的内存共享策略。在 Linux 系统中,内存管理的主要概念是虚拟内存

虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。

虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。虚拟内存的大小通常设置为物理内存的两倍。

3. 虚拟文件系统 VFS

Linux 下支持多种文件系统,如 ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、 smb、ncp、iso9660、sysv、hpfs、affs 等。
       目前 Linux 下最常用的文件格式是 ext2ext3
       ext2 文件系统用于固定文件系统和可活动文件系统,是 ext 文件系统的扩展。
       ext3 文件系统是在 ext2增加日志功能后的扩展,它兼容 ext2
       两种文件系统之间可以互相转换,ext2 不用格式化就可以转换为 ext3 文件系统,而且 ext3 文件系统转换为 ext2 文件系统也不会丢失数据。

4. 网络接口

Linux 是在 Internet 飞速发展的时期成长起来的,所以 Linux 支持多种网络接口和协议
       网络接口分为网络协议驱动程序
       网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序
       Linux 支持的网络设备多种多样,几乎目前所有网络设备都有驱动程序。

5. 进程间通信

Linux 操作系统支持多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux 的进程间通信是从 UNIX 系统继承过来的。

Linux 下的进程间的通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等方法

二、Linux 的文件结构

Windows 下的文件组织结构不同,Linux 不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树状的结构, Linux 系统每增加一个文件系统都会将其加入到这个树中

操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。所有一切都从“根”开始,用“ / ”代表,并且延伸到子目录。

DOS/Windows 下文件系统按照磁盘分区的概念分类,目录都存于分区上。Linux 则通过“挂接”的方式把所有分区都放置在 “根” 下各个目录里。一个Linux系统的文件结构如下图所示。

       不同的 Linux 发行版本的目录结构和具体的实现功能存在一些细微的差别。但是主要的功能都是一致的。一些常用目录的作用如下所述。

  █  /etc : 包括绝大多数 Linux 系统引导所需要的配置文件,系统引导时读取配置文件, 按照配罝文件的选项进行不同情况的启动,例如 fstabhost.conf 等;
  █  /lib : 包含 C 编译程序需要的函数库,是一组二进制文件,例如 glibc 等;
  █  /usr : 包括所有其他内容,如 srclocalLinux 的内核就在 /usr/src 中。其下有子目录 /bin ,存放所有安装语言的命令,如 gccperl 等;
  █  /var : 包含系统定义表,以便在系统运行改变时可以只备份该目录,如 cache
  █  /tmp : 用于临时性的存储;
  █  /bin : 大多数命令存放在这里;
  █  /home : 主要存放用户账号,并且可以支持 ftp 的用户管理。系统管理员增加用户时,系统在 home 目录下创建与用户同名的目录,此目录下一般默认有 Desktop 目录;
  █  /dev : 这个目录下存放一种设备文件的特殊文件,如 fd0had 等;
  █  /mnt : 在 Linux 系统中,它是专门给外挂的文件系统使用的,里面有两个文件 cdromfloopy , 登录光驱、软驱时要用到。

  刚开始使用 Linux 的人比较容易混淆的是 Linux 下使用斜杠 “ / ” ,而在 DOS/Windows 下使用的是反斜杠 “ \ ” 。 例如在 Linux 中,由于从 UNIX 集成的关系,路径用 “/usr/src/Linux” 表示,而在 Windows 下则用 “\usr\src\Limix” 表示。

  在 Linux 下更加普遍的问题是字母大小写敏感,例如文件 Hello.c 和文件 hello.cLinux 下不是一个文件,而在 Windows 下则表示同一个文件。

自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构相关推荐

  1. 第19章 Linux电源管理的系统架构和驱动之CPUIdle驱动

    19.3 CPUIdle驱动 目前的ARM SoC(System on Chip)大多支持几个不同的Idle级别,CPUIdle驱动子系统存在的目的就是对这些Idle状态进行管理,并根据系统的运行情况 ...

  2. 国产Linux操作系统(深度系统)增加了微软Microsoft Edge浏览器(Linux版本)

    深度商店应用更新记录汇总(2021-11) 新增应用 序号 状态 应用分类 应用名称 应用类型 1 上架 网络应用 迪普SSLVPN Linux 2 上架 影像编辑 浩辰CAD 2022 Linux ...

  3. Linux 内存管理与系统架构设计

    Linux 提供各种模式(比如,消息队列),但是最著名的是 POSIX 共享内存(shmem,shared memory). Linux provides a variety of schemes ( ...

  4. 第19章 Linux电源管理的系统架构和驱动之CPUFreq驱动

    19.2 CPUFreq驱动 CPUFreq子系统位于drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DVFS(Dynamic Voltage Frequency ...

  5. 把linux制作成内存系统,把内存当硬盘,提速你的linux系统

    场景:电脑内存太大用不了那么多,空着浪费,所以利用起来.内存读写速度高用来缓存或者编译,甚至存临时文件最好不过了-- Windows下有一种叫法叫做内存盘,Linux自然也有,看了Linux中ramd ...

  6. linux 蓝牙 profile,Linux_Linux系统下蓝牙立体声配置A2DP profile,系统配置:Linux debian 2.6.22.6 #7 - phpStudy...

    Linux系统下蓝牙立体声配置A2DP profile 系统配置:Linux debian 2.6.22.6 #7 Mon Sep 3 10:46:00 CST 2007 ppc GNU/Linux ...

  7. Linux系统架构与目录解析 pdf版,Linux系统架构与目录解析读后感1000字

    <Linux系统架构与目录解析>是一本由邱世华著作,电子工业出版社出版的平装图书,本书定价:45.00元,页数:264,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助. < ...

  8. Linux软件包管理和系统网络3

    软件包管理: 软件包管理 安装/查询/卸载 一.软件的类型 A. 源码包tarball 需要编译 所有的包在初始的时候都是源码的,需先解压再编译,因此安装起来比较慢,但是灵活性高,可以自行配置,经过编 ...

  9. 基于Linux的集群系统(一)

    基于Linux的集群系统(一) 集群系统概述 本文是<基于LINUX的集群系统>系列文章的第一篇.作者就集群系统这一概念进行了概述,介绍了集群系统的发展以及国内外主要的集群系统解决方案. ...

最新文章

  1. Spark机器学习(9):FPGrowth算法
  2. Bootstrap框架的基本使用
  3. ubuntu18.04换清华源
  4. pyecharts 应用6 三维曲面图
  5. [**奇文共赏**补充问题] 据说看五遍能懂的人智商 200
  6. iOS开发内存管理总结
  7. Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)
  8. TheChroniclesOfNarnia写作年代
  9. android 卡片行星,卡片详情
  10. 硬科技驱动西咸新区发展新引擎
  11. mysql去重汇总_Mysql常用SQL汇总
  12. java-php-python-爱心公益网站设计与制作计算机毕业设计
  13. proxifier 代理bluestack
  14. UE4蓝图Tick规则
  15. [Unity]VRTK V4的导入和使用
  16. js中在另一个页面打开ppt、word
  17. c语言环境变量的作用,C语言程序的环境变量
  18. c语言程序设计第三版 孩子身高,C语言的那些题(三) ―― 编程计算身高问题
  19. c语言课程设计 学生成绩管理系统
  20. 2日通信微博报:工信部应该在信息标注上牵头

热门文章

  1. table表格首列首行固定
  2. 【CicadaPlayer】初始化ffmpeg及设置ffmpeg日志
  3. Ubuntu支持LinuxONE大型机:为云而生的强强新组合
  4. list index out of range
  5. 怎么把数据文件上传云服务器,怎样把数据上传到云服务器
  6. 常见的状态码1xx、2xx、3xx、4xx、5xx、
  7. STM32F103高级定时器死区时间的计算
  8. AJAX教程系列一:环境安装及第一个ajax程序
  9. srs源码分析3-srs的启动
  10. vue中引入echart图及遇到的问题记录