Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
Linux内核分析(四)
两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
在http://www.cnblogs.com/wrjvszq/p/4257164.html一文我们提到过linux由七个部分构成,最重要的四个子系统是内存管理子系统、进程管理子系统、网络子系统、虚拟文件系统、上次我们已经对内存管理子系统进行了分析(谈不上分析,只是个简单了解)。
所以今天我们会分析到以下内容:
1. Linux进程管理子系统
2. Linux网络子系统
3. 虚拟文件系统
4. Linux设备驱动简介
l Linux进程管理子系统
在进程管理中最重要的就是进程的调度和进程的通信下面我们一一分析。
1. 进程调度
进程调度使得多个进程增长CPU中“微观串行,宏观并行”的进行执行。进程调度处于系统的中心位置,内核中其他子系统都依赖于它。
a) 进程调度意义
进程调度使得多个进程增长CPU中“微观串行,宏观并行”的进行执行。进程调度处于系统的中心位置,内核中其他子系统都依赖于它。
b) 进程的状态切换
Linux的进程在几个状态间进行切换,如下图展现了其切换关系。

c) 进程调度策略
Linux中常见的有以下
1) SCHED_OTHER 分时调度策略。
2) SCHED_FIFO实时调度策略,先到先服务
3) SCHED_RR实时调度策略,时间片轮转
2. 进程通信
Linux支持进程间的多种通信机制,可以通过这些通信机制进行多个进程、多资源的互斥访问、进程间的同步和消息传递。
a) linux进程间通信方式
1) 管道:分为有名管道(用于同一系统间的任意进程)和无名管道(用于父子进程)
2) 信号量
3) 信号
4) 消息队列
5) 共享内存
6) 套接字(socket)
l Linux网络子系统
Linux网络子系统提供了对各种网络标准的存取和各种硬件的支持。下图是其整体结构。其可以分为协议层和网络驱动程序,其中网络协议主要负责实现每一种可能的网络传输协议,而网络驱动程序负责与硬件通信。

l Linux虚拟文件系统
Linux虚拟文件系统(VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,它是对各种文件系统的一个抽象,其实使用超级块super block存放文件系统相关信息,使用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息,其整体架构如下。

l Linux设备驱动简介
上面的介绍很简单,仅仅是对这些子系统的概念什么的进行了简介,下面我们对linux设备驱动进行简单介绍。
1. 设备驱动分类
Linux分为下面三种基本设备。
a) 字符设备
是一种按照字节来访问的设备,字符设备适用于大多数的简单硬件。常见的LED、按键等
b) 块设备
是一种以块(通常为512字节)为最小访问单位的设备,常见的硬盘、SD卡等。但在linux中对块没有大小限制,可以访问任意数目的字节。
c) 网络设备
用来负责发送和接收报文的设备,比如网卡。
今天的简单分析就先到这里,我以后会慢慢的伴随着驱动的开发去分析内核,感谢大家的关注。
Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介的更多相关文章
- linux内核分析之内存管理
1.struct page /* Each physical page in the system has a struct page associated with * it to keep tra ...
- [转]linux内核分析笔记----内存管理
转自:http://blog.csdn.net/Baiduluckyboy/article/details/9667933 内存管理,不用多说,言简意赅.在内核里分配内存还真不是件容易的事情,根本上是 ...
- linux内核分析之进程地址空间【转】
转自:http://blog.csdn.net/bullbat/article/details/7106094 版权声明:本文为博主原创文章,未经博主允许不得转载. 本文主要介绍linux内核中进程地 ...
- linux内核分析之进程地址空间管理
1.struct task_struct 进程内核栈是操作系统为管理每一个进程而分配的一个4k或者8k内存大小的一片内存区域,里面存放了一个进程的所有信息,它能够完整的描述一个正在执行的程序:它打开的 ...
- linux内核学习之进程管理------task_struct结构体
struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct t ...
- LINUX内核分析第八周学习总结:进程的切换和系统的一般执行过程
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.进程切换的关 ...
- Linux内核分析(三)----初识linux内存管理子系统
原文:Linux内核分析(三)----初识linux内存管理子系统 Linux内核分析(三) 昨天我们对内核模块进行了简单的分析,今天为了让我们今后的分析没有太多障碍,我们今天先简单的分析一下linu ...
- Linux内核分析 - 网络[十四]:IP选项
Linux内核分析 - 网络[十四]:IP选项 标签: linux内核网络structsocketdst 2012-04-25 17:14 5639人阅读 评论(1) 收藏 举报 分类: 内核协议栈 ...
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
随机推荐
- SQL Server :理解DCM页
原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...
- oracle迁移mysql数据库注意(转)
oracle转mysql修改: 1. substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_c ...
- 入门git
入门git 0x01前言 既然没有华丽的出场,那就平凡的分享,首先我要说明一点本篇文章针对Git初学者,对我自己学Git的资源的整合,其实本篇索引应该在我写Git系列文章的时候就紧跟着放上索引的, ...
- android实现应用程序仅仅有在第一次启动时显示引导界面
概述 SharedPreferences的使用很easy,可以轻松的存放数据和读取数据.SharedPreferences仅仅能保存简单类型的数据,比如,String.int等.通常会将复杂类型的数据 ...
- ubuntu下安装wine
直接在终端里面输入“sudo apt-get install wine”不要引号,即可安装wine.至于使用它,终端命令就是“wine ....”举个例子,你现在要运行魔兽, 然后你的魔兽的文件夹的位 ...
- js匀速运动停止条件
匀速运动,怎么让它到达指定位置时停止呢? 原理: 1,物体和目标的差值距离小于等于速度时,即停止 2,接着让物体移动位置等于目标位置 示例:匀速运动停止 html部分 <input type=& ...
- drools6 基本使用 -- 2
续drools6 基本使用1 http://blog.csdn.net/cloud_ll/article/details/26979355 8. 创建src/main/test folder.把dro ...
- CC2530存储空间——Code
硬件平台:CC2530-F256 开发环境:IAR 8051(版本号 8.10) 參考: .<CC2530 User's Guide.pdf>(swru191c) .<IAR C/C ...
- [ACM] poj 3468 A Simple Problem with Integers(段树,为段更新,懒惰的标志)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 55273 ...
- [LeetCode257]Binary Tree Paths
题目: Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree ...