Linux内核的学习总结(一)
2015-09-01 10:17
281 查看
初次接触Linux的内核源代码,现就所看所学做如下总结:
一、Linux内核模式:
操作系统的内核的结构模式主要分为整体式的单内核模式和层次式的微内核模式。Linux0.11内核则采用单内核模式。单内核模式的内核代码结构紧凑、执行速度快,但层次结构性不强。单内核模式的内核可以粗略的分为三个层次:调用服务的主程序层、执行系统调用的服务层和支持系统调用的底层函数。
二、Linux内核系统的体系结构
Linux内核可以分为5个模块:
进程间调度模块:用于负责控制进程对CPU资源的使用,即使各进程能够公平合理的访问CPU,同时保证内核能及时地执行硬件操作;
内存管理模块:用于确保所有进程能够安全地共享机器主机内存区,同时该模块还支持虚拟内存管理方式;
文件系统模块:用于支持外部设备的驱动和存储,虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的文件系统格式;
进程间通信模块:用于支持多种进程间的信息交换方式。
网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件。
此处需要注意,对于虚拟文件系统的实现是从Linux0.95版实现的,网络接口的支持在0.96版才有。
关系,如上图所示各个模块之间存在着联系的:
![](http://img.blog.csdn.net/20150901101926014?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所有的模块均与进程间调度模块存在依赖关系,因为它们需要依靠进程调度程序来挂起或者重新运行。
此外,进程调度子程序系统需要使用内存管理器来调整特定进程所使用的物理内存空间;进程间通信子系统需要依靠内存管理器来支持共享内存通信机制;虚拟文件系统也会使用网络接口来支持网络文件系统(NFS)。
三、Linux进程控制
对于进程的一些基础知识,在有关操作系统的书上均有讲解,此处不再做讲解,就针对Linux存在的一些特点做如下总结:
(1)在Linux系统中,一个进程可以在内核态下执行也可以在用户态下执行,故Linux内核堆栈与用户堆栈是分开的;用户堆栈用于进程在用户态下临时保存调用函数的参数、局部变量等数据;内核堆栈则含有内核程序执行函数调用时的信息。
(2)在Linux系统中,内核程序通过进程表对进程进行管理,每个进程在进程表中占有一项,进程表项是一个task_struct任务结构指针,定义在头文件include/linux/sched.h中。
(3)在Linux系统中,创建新进程使用fork() 系统调用,所有进程均是通过复制进程0得到的,均是进程0的子进程。
关于Linux的进程讲解,未完待续,,,,,
一、Linux内核模式:
操作系统的内核的结构模式主要分为整体式的单内核模式和层次式的微内核模式。Linux0.11内核则采用单内核模式。单内核模式的内核代码结构紧凑、执行速度快,但层次结构性不强。单内核模式的内核可以粗略的分为三个层次:调用服务的主程序层、执行系统调用的服务层和支持系统调用的底层函数。
二、Linux内核系统的体系结构
Linux内核可以分为5个模块:
进程间调度模块:用于负责控制进程对CPU资源的使用,即使各进程能够公平合理的访问CPU,同时保证内核能及时地执行硬件操作;
内存管理模块:用于确保所有进程能够安全地共享机器主机内存区,同时该模块还支持虚拟内存管理方式;
文件系统模块:用于支持外部设备的驱动和存储,虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的文件系统格式;
进程间通信模块:用于支持多种进程间的信息交换方式。
网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件。
此处需要注意,对于虚拟文件系统的实现是从Linux0.95版实现的,网络接口的支持在0.96版才有。
关系,如上图所示各个模块之间存在着联系的:
所有的模块均与进程间调度模块存在依赖关系,因为它们需要依靠进程调度程序来挂起或者重新运行。
此外,进程调度子程序系统需要使用内存管理器来调整特定进程所使用的物理内存空间;进程间通信子系统需要依靠内存管理器来支持共享内存通信机制;虚拟文件系统也会使用网络接口来支持网络文件系统(NFS)。
三、Linux进程控制
对于进程的一些基础知识,在有关操作系统的书上均有讲解,此处不再做讲解,就针对Linux存在的一些特点做如下总结:
(1)在Linux系统中,一个进程可以在内核态下执行也可以在用户态下执行,故Linux内核堆栈与用户堆栈是分开的;用户堆栈用于进程在用户态下临时保存调用函数的参数、局部变量等数据;内核堆栈则含有内核程序执行函数调用时的信息。
(2)在Linux系统中,内核程序通过进程表对进程进行管理,每个进程在进程表中占有一项,进程表项是一个task_struct任务结构指针,定义在头文件include/linux/sched.h中。
(3)在Linux系统中,创建新进程使用fork() 系统调用,所有进程均是通过复制进程0得到的,均是进程0的子进程。
关于Linux的进程讲解,未完待续,,,,,
相关文章推荐
- linux下常用mysql命令(3)
- Linux文件系统相关权限及正则表达式相关命令grep、egrep的使用说明
- linux下常用mysql命令(2)
- Linux文件系统的特殊权限
- linux中touch命令参数修改文件的时间戳(转)
- linux下常用mysql命令(1)
- linux之cp/scp命令+scp命令详解(转)
- TQ2440 学习笔记—— 9、嵌入式编程基础知识【arm-linux-gcc 选项】
- Linux date命令实现猜测 暨 获得两个月之前的今天 的日期
- Linux命令(1):常用svn命令
- 查看Linux下重要硬件的相关信息
- 用 Python 脚本实现对 Linux 服务器的监控
- linux 文件管理以及其相关指令
- linux 根据进程名查看其占用的端口
- Linux下 Mysql安装的问题记录
- 积攒力量,终会展翅飞翔。Linux学习记录
- 积攒力量,终会展翅飞翔。Linux学习记录
- Linux命令之stty - 显示和修改终端行设置
- 2015年08月25日作业-Linux用户和组管理
- LINUX CENTOS 定时任务 crond