Linux内核

Linux内核是Linux系统构成中最核心的一个部分,是由5个子系统组成。

进程调度:

  进程调度(SCHED)控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。

  处于中心位置的进程调度,所有其他的子系统都依赖它,因为

  可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。(比如进入阻塞态)

  Linux的进程调度机制比较简单的,是基于优先级的。

内存管理:

  内存管理(Memory management)允许多个进程安全地共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中允许的程序,其代码、数据、堆栈的总量可以超过实际物理内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中(Lazy load 惰性加载机制)。

  必要时,操作系统负责在磁盘和内存交换程序块。内存管理从逻辑上分为硬件无关和硬件有关2个部分。

  硬件无关部分提供了进程的映射和逻辑内存的对换。

  硬件相关部分为内存管理硬件提供了虚拟接口。

虚拟文件系统

  虚拟文件系统(Virtual File System)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口.

  VFS 提供了多大数十种不同的文件系统,VFS其本身可以分为逻辑文件系统和设备驱动程序2个部分。

  逻辑文件系统指Linux所支持的文件系统,如ext2、Fat等。

  设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

/*
了解其支持的文件系统类型,可通过以下命令来查看:
# ls /lib/modules/#版本号#/kernel/fs 1.minix:
是Minix操作系统使用的文件系统,是Linux最先使用的文件系统。它有许多缺点:分区只能小于64MB,只支持短文件名,单一的时间戳,等等。在软盘和动态磁盘领域仍然有用。 2.ext
是对Minix的扩展。已完全被ext2取代,内核最终将不会支持它。 3.ext2
是Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。 4.ext3
是对ext2增加日志功能后的扩展。它向前,向后兼容ext2。意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2 而不用丢失数据(只要重新安装该分区就行了)。我从2001年10月就使用ext3,它简单且稳定。在RedHat7.2和Mandrake8.0,中作为一个选项。强烈推荐使用这种文件系统。 5.xiafs
作为Minix文件系统的一个稳定,安全的扩展,提供基本的最常用的特点。目前已经停止开发和维护了。不太常使用。 6.msdos
是DOS, Windows和一些os/2计算机使用的文件系统。文件名不能超过8个字符,然后跟一个3个字符的后缀。 7.umsdos
是Linux使用的扩展的DOS文件系统。增加了长文件名支持,UID/GID,POSIX权限,特殊文件等而依然保持和DOS文件系统兼容。 8.vfat
是Windows95,Windows NT使用的扩展的DOS文件系统。增加长文件名支持。 9.proc
是一种假的文件系统,用于和内核数据结构接口, 它不占用磁盘空间,参考 man proc。 10.iso9660
是一种针对ISO9660标准的CD-ROM文件系统。自动支持两种扩展(看下面)。 11.High Sierra
是ISO9660标准的前身。Linux自动支持它。Rock Ridge 是Rock Ridge interchange Protocol协议的一个产品,用于进一步向Unix系统描述ISO9660文件系统下的文件。另外提供诸如长文件名,UID/GID,POSIX权限,等信息。Linux自动支持它。 12.hpfs
是OS/2使用的高性能的文件系统。在Linux系统中是只读的,因为缺乏相应的文档资料。 13.sysv
是SystemV/Coherent文件系统在Linux上的实现。它实现了所有的Xenix,SystemV/386,和 Coherent文件系统。 14.nfs
是用于存取远方计算机硬盘的文件系统。 15.smb
是支持SMB协议的网络文件系统,Windows用它来实现工作组共享。 16.ncpfs
是Novell NetWare使用的,支持NCP协议的网络文件系统。 17.Devpts
是一个虚拟的文件系统,一般安装在/dev/pts。为了得到一个虚拟终端,进程打开/dev/ptmx,然后就可使用虚拟终端。 18.fat
不是一个单独的文件系统,而是msdos, umsdos 和vfat 文件系统的常用部分。 19.UFS
是一个广泛使用于各种操作系统的文件系统 20.swap
是一种特殊的分区,用于在内存和硬盘间交换数据的文件系统。 21.raiserfs
是Linux内核2.4.1以后(2001年1 月)支持的,一种全新的日志文件系统。 22.hfs
hfs(=hierarchical files system)是苹果文件系统。 23.ntfs
Windows NT文件系统。
*/

Linux支持的文件系统

网络接口

  网络接口(Network Interface)提供了对各种网络标准的存取和对各种网络硬件的支持。

  网络接口可分为网络协议和网络驱动程序。

  网络协议负责实现每一种可能的网络传输协议。

  网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

进程间通信

  进程间通信(Inter-Process Communication)支持进程间的各种通信机制。

Linux学习笔记:【001】Linux内核分析的更多相关文章

  1. linux学习笔记2 - linux常用命令

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...

  2. Linux学习笔记之Linux相关知识

    [想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...

  3. Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  4. Linux学习笔记之Linux第一课-基本介绍

    Linux简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基 ...

  5. Python学习笔记001——Linux

    Linux文件系统采用树形目录结构,系统中一切皆文件.文件名字母区分大小写 Linux命令使用格式(终端窗口) 命令名 [选项] [参数] 命令名:在命令行输入命令. 备注:命令名字母区分大小写, 1 ...

  6. Linux学习笔记001——win下安装Linux虚拟机

    我研二之前算是一个纯粹的计算机小白,因为某些原因开始接触了计算机方面的知识. Linux系统也就是前几个月才听说,因某些需求需要在Linux环境下运行.纯的Linux系统不太现实, 所以在他人帮助和自 ...

  7. Linux学习笔记32——select()函数分析【转】

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...

  8. Linux学习笔记(21) Linux日志管理

    1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...

  9. Linux学习笔记——查看Linux系统信息的方法

    由于Linux的发行版本比较多,并且有些差异性,所以,分析问题时我们常常需要知道自己的Linux系统的版本信息,以下是我搜集到的一些方法 1:显示电脑以及操作系统的相关信息 qian@ubuntu:~ ...

  10. Linux学习笔记(23) Linux备份

    1. 备份概述 Linux系统需要备份的数据有/root,/home,/var/spool/mail,/etc及日志等其他目录. 安装服务的数据需要备份,如apache需要备份的数据有配置文件.网页主 ...

随机推荐

  1. verilog parameter 位宽问题

    前言 一直以为parameter 的位宽是无限的,其实不然. 流程: 仿真一下就知道啦: 用处: 精准控制位宽理论上会占用更少的内存,其他好像并没有什么卵用,注意不要越界,我这里系统默认32bit位宽 ...

  2. Ionic生成的App安装在手机上后无法联网的解决方案

    在Ionic中使用inappbrowser.themeablebrowser 组件打开网页,刚开始是好的,后来不知添加什么插件,导致了安装在手机上以后没有网络访问权限. 尝试了很多,最后才发现,此时, ...

  3. SuperSocket 案例

    SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作 ...

  4. RequestContextHolder 很方便的获取 request

    在 Spring boot web 中我们可以通过 RequestContextHolder 很方便的获取 request. ServletRequestAttributes requestAttri ...

  5. 栈长这里是生成了一个 Maven 示例项目。

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  6. 让自己的网站实现在线编辑office文档

    我们可以通过Office Web Apps(OWA)来实现在线编辑word,excel,power point, one note,并集成到自己的网站里去.   1 准备工作 1.1 操作系统 安装了 ...

  7. 板载 SPI-FLASH 的烧写方法

    @2018-12-15 [筹划] 通过烧录器(JTAG/SWD)即可方便的烧写板载外部 FLASH [参考] 如何更好地设计面向在板烧录的产品(一)SPI Flash篇 keil将程序装入外部FLAS ...

  8. python列表转字符串

    temp = "".join(sorted(arr[i])) arr[i] = temp

  9. nginx thinkphp只能访问首页

    代码部署到了服务器上,发现无论怎样请求,都是跳转到index/index/index(模块/控制器/方法),最后需要nginx重新地址即可 参考:Linux下Nginx部署Thinkphp5访问任何地 ...

  10. Spring 官方教程:使用 Restdocs 创建 API 文档

    https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247483998&idx=1&sn=6ae5fa795d36b1 ...