Linux学习笔记:【001】Linux内核分析
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内核分析的更多相关文章
- linux学习笔记2 - linux常用命令
转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...
- Linux学习笔记之Linux相关知识
[想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...
- Linux学习笔记之Linux启动引导过程
早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...
- Linux学习笔记之Linux第一课-基本介绍
Linux简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基 ...
- Python学习笔记001——Linux
Linux文件系统采用树形目录结构,系统中一切皆文件.文件名字母区分大小写 Linux命令使用格式(终端窗口) 命令名 [选项] [参数] 命令名:在命令行输入命令. 备注:命令名字母区分大小写, 1 ...
- Linux学习笔记001——win下安装Linux虚拟机
我研二之前算是一个纯粹的计算机小白,因为某些原因开始接触了计算机方面的知识. Linux系统也就是前几个月才听说,因某些需求需要在Linux环境下运行.纯的Linux系统不太现实, 所以在他人帮助和自 ...
- Linux学习笔记32——select()函数分析【转】
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...
- Linux学习笔记(21) Linux日志管理
1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...
- Linux学习笔记——查看Linux系统信息的方法
由于Linux的发行版本比较多,并且有些差异性,所以,分析问题时我们常常需要知道自己的Linux系统的版本信息,以下是我搜集到的一些方法 1:显示电脑以及操作系统的相关信息 qian@ubuntu:~ ...
- Linux学习笔记(23) Linux备份
1. 备份概述 Linux系统需要备份的数据有/root,/home,/var/spool/mail,/etc及日志等其他目录. 安装服务的数据需要备份,如apache需要备份的数据有配置文件.网页主 ...
随机推荐
- BZOJ4818 [SDOI2017] 序列计数 【矩阵快速幂】
题目分析: 一个很显然的同类项合并.注意到p的大小最大为100,考虑把模p意义下相同的求出来最后所有的减去没有质数的做矩阵快速幂即可. 代码: #include<bits/stdc++.h> ...
- 【XSY2808】董先生的休闲方案 组合数学
题目描述 有\(n\)个方案,编号为\(1\ldots n\). 最开始你不知道每个方案的编号. 你要按顺序提出这些方案. 每一个时刻你要做以下事情: 如果你阅读过下一个方案,就提出这个方案. 否则随 ...
- MT【277】华中科技大学理科实验班选拔之三次方程
(2015华中科技大学理科实验班选拔)已知三次方程$x^3+ax^2+bx+x=0$有三个实数根.(1)若三个实根为$x_1,x_2,x_3$,且$x_1\le x_2\le x_3,a,b$为常数, ...
- Codeforces Round #429 (Div. 1) C. On the Bench(dp + 组合数)
题意 一个长度为 \(n\) 的序列 \(A\) ,定义一个 \(1\) 到 \(n\) 的排列 \(p\) 是合法的,当且仅当 \(\forall i \in [1, n − 1], A_{p_i} ...
- [luogu4072][bzoj4518][SDOI2016]征途【动态规划+斜率优化】
题目分析 Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜.所以,一段路 ...
- rt-thread之串口设备的配置流程
@2019-01-30 [小记] > rt-thread 工程启动之后先是进入函数 rtthread_startup 做一些系统运行前的基础工作,主要有: * 板级硬件初始化 * 系统定时器初始 ...
- luogu5010 HMR的LIS III (dp+线段树)
这个东西和最长上升子序列很像 考虑如果已经知道每个位置为开头的LIS长度和个数 f[i],我可以扫一遍 判断这个个数和K的大小,找到第一个长度=len而且个数<K的,这个位置就是要选的 然后K- ...
- C++类相关
本文打算通过一些小例子来说明几个关键的知识点. 一:成员函数相关 #include <iostream> using namespace std; class D { public: vo ...
- NOIP2018凉凉记
首先声明一下,我去不了TG,因为我太菜了GD的某教授把我打到PJ了…… 虽然就我这实力普及都不一定1= 不管了,这次是普及,就当扎实基础了.反正HF的 $\text{hhz}$ 也考PJ,见个面多好啊 ...
- (转)喜马拉雅2018 Java面试题目
背景:将网上的题目整理下. java基础 1:hashTable hashMap ConcurrentHashMap 的区别.数据结构.线程安全 2:equals和==区别, 重写equals一定要重 ...