一、进程调度模块

  Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。

【进程创建】:

  在Linux环境编程时,一般采用fork()/vfork()函数(fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中;vfork是 创建一个子进程,并和父进程的内存数据share一起用)来创建新的进程,当然,那是在用户空间的函数,它会调用内核中的clone()系统调用,由clone()函数继续调用do_fork()完成进程的创建。

fork()/vfork()/_clone--->clone()--->do_fork()--->copy_process()

【进程撤销】:

  进程终止后,需要通知内核以便内核释放进程所拥有的资源,包括内存、打开文件以及其他资源,如信号量。进程终止的一般方式是调用exit()库函数,该函数释放C函数库所分配的资源,执行编程者所注册的每个函数,并结束从系统回收进程的那个系统调用。

【进程切换】:

  进程切换又称为任务切换、上下文切换。它是这样一种行为,为了控制进程的执行,内核挂起当前在CPU上运行的进程,并恢复以前挂起的某个进程的执行。
  在本质上,每个进程切换由两部分组成:

  • 切换页全局目录以安装一个新的地址空间;
  • 切换内核态堆栈和硬件上下文,因为硬件上下文提供了内核执行新进程所需要的所有信息,包括CPU寄存器,主要有switch_to()函数完成。

【进程调度】:

  现代的Linux中,调度算法可以在固定时间内(与可运行进程数量无关)选中要运行的进程。首先,我们必须知道进程可以分为实时进程与普通进程。每个LInux进程总是按照如下的调度类型被调度:先进先出的实时进程、时间片轮转的实时进程、普通的分时进程。调度算法根据进程是普通进程还是实时进程而有很大不同。


二、进程间通信模块

  进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不同的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制
  进程间通信模块保证了Linux支持多种进程间通信机制,包括管道、命名管道、消息队列、信号量和共享内存等。


三、内存管理模块

  Linux的内存管理模块采用先进的虚拟存储机制,实现对多进程的存储管理。它提供了十分可靠的存储保护措施,对进程赋予不同的权限,用户不能直接访问系统的程序和数据,保证了系统的安全性。同时,为每个用户进程分配一个相互独立的虚拟地址空间。


四、文件系统模块

  Linux 的文件系统模块采用先进的虚拟文件系统(VFS)技术,屏蔽了各种文件系统的差别,为处理各种不同的文件系统提供了统一的接口,支持多种不同的物理文件系统达90多种。同时,Linux把各种硬件设备看作一种特殊的文件来处理,用管理文件的方法管理设备,非常方便、有效。


五、网络接口模块

  Linux具有最强大的网络功能。网络接口模块通过套接字(Socket)机制实现计算机之间的网络通信,并采用网络层次模型提供对多种网络协议和网络硬件设备的支持。
  网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序

参考:https://blog.csdn.net/wllen_/article/details/81255083
https://blog.csdn.net/lianghe_work/article/details/47775971
https://blog.csdn.net/joqian/article/details/8817204

Linux内核的五大模块相关推荐

  1. linux内核五大部分,Linux内核的五大模块

    IIS 图片加载不出来 如何为IIS增加svg和woff格式文件的支持 在我们新版的TopFlow中,使用了最新的bootstrap框架,此框架使用了字体文件来显示矢量的图标,为了能在IIS上正常显示 ...

  2. linux 内核可装载模块 版本检查机制

    为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可装载模块这一特性.内核可装载模块就是可在内核运行时加载到内核的一组代码.通常 , 我们会在两个版本不同的内核上装载同一模块失败,即使 ...

  3. 自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构

    Linux 的系统架构 Linux 系统从应用角度来看,分为内核空间和用户空间两个部分.        内核空间是 Linux 操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的.丰富并且 ...

  4. linux内核主要功能模块不包括,嵌入式linux(贺丹丹等编著)课后习题答案

    第八章 一.填空题. 1.ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile.配置文件和配置工具. 2.配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中 ...

  5. 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(一)

    从 2.4 到 2.6:Linux 内核可装载模 块机制的改变对设备驱动的影响 <?xml:namespace prefix = o ns = "urn:schemas-microso ...

  6. Linux内核编译与模块编程

    写在前面的话: 作为一个做完这个实验的软工狗.表示心里几经波澜 , 一招不慎可能全盘皆输,从头再来. 我也不多说什么,做过这个实验的人,我们相视一笑吧. :) 我把整个过程分享在下面,包括我碰到的问题 ...

  7. Linux 内核的五大创新

    在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来.Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大物. 撇开营销和模 ...

  8. linux内核可装载模块(lkm)传参机制 module_param()/module_param_string()

    对于如何向模块传递参数,Linux kernel 提供了一个简单的框架.其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量. 使用下面的宏时需 ...

  9. Linux内核编译出来模块过大

    问题原因:内核调试信息编进了模块 一开始编译出来的大小: 解决方案:编译选项Kernel Hacking中去掉Kernel  debbugging选项,重新编译安装内核 重新编译安装之后得大小

最新文章

  1. 【Kaggle Learn】Python 5-8
  2. Struts 为什么使用插件
  3. 子网划分为什么全0全1子网号不能使用?CIDR为什么能使用全0全1子网号?
  4. windows命名管道
  5. linux下实现内存监视,shell脚本来监视Linux上的内存使用情况
  6. 全球第一张中文网络协议分析图——By 成都科来软件
  7. 屏幕录制 gif android,分享 Android 手机屏幕录制并制玉成 GIF 演示图片
  8. Houdini分布式解算渲染,HQueue配置。
  9. sklearn:OneHotEncoder的简单用法
  10. 将assets文件转为byte[]
  11. docker-the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winp
  12. css绘制三角形以及梯形
  13. 【YOLOX 论文+源码解读】YOLOX: Exceeding YOLO Series in 2021
  14. python函数——Bunch配置加载
  15. sigmoid函数导数的硬件实现(verilog)
  16. 拉格朗日乘数和KTT条件
  17. VMware软件安装与完全卸载
  18. 如何让多个word文档合并成一个
  19. js实现图片裁剪效果
  20. 关于自己在大学的一些经历

热门文章

  1. linux中各目录的意思,linux各个目录的意思?
  2. MVC模式计算两个正数的代数平均值与几何平均值
  3. java简单通讯录实现
  4. 如何恢复vscode的默认配置_VS恢复默认设置的2种方法
  5. 阿里云绑定解绑第三方支付宝,淘宝账号
  6. 手把手教你调试构建一个Vue/小程序商城项目源码
  7. NFS的soft和hard模式
  8. 论强势文化的属性---来自心灵的呼唤
  9. 【caffe】caffe结构解析(二)
  10. el+vue实战 ② 在el-table中的每一行加上头像/图片;去掉div标签自动换行问题;el-table表格中实现字数限制,只显示一行