OS: 进程的虚拟内存空间,内核进程为什么不直接使用物理内存?

概述

        今天,看了一篇Linux虚拟内存管理的文章,打算写一篇文章来理一下几个概念。

Linux虚拟内存管理:https://xiaolincoding.com/os/3_memory/linux_mem.html

  • 内核进程和普通进程的结构及区别
  • 内核进程的task_struct的mm_struct为什么是null
  • 内核进程为什么不直接使用物理内存

发车

一、内核进程和普通进程的结构及区别(32位Linux操作系统)

首先来看一下

具体的每一个区域的内容这里不做讲解,可以去看我看的文章。

简单介绍几个概念:

1. task_struct:

        task_struct叫进程描述符,每个进程是一个task_struct实例,不要与PCB搞混,PCB是抽象,task_struct是具体实现。(类比Java,PCB是接口,task_struct是实现类,进程是实例对象)

2. mm_struct:

        mm_struct是task_struct中专门描述进程虚拟内存空间的内存描述符。

用户进程:由用户启动的应用程序(如浏览器、终端、编辑器等),是最常见的进程类型。

特点:

  • 拥有自己独立的 mm_struct(虚拟内存描述符),管理专属的用户态虚拟内存空间(代码段、数据段、堆、栈等)。
  • 大部分时间运行在用户态,执行用户编写的代码(如应用逻辑)。
  • 需要访问系统资源(如读写文件、分配内存)时,通过系统调用切换到内核态,由内核代劳。
  • 依赖用户态代码和数据,若用户空间被销毁(如进程退出),进程随之终止。

内核进程:由内核直接创建和管理的「系统级进程」,没有对应的用户态程序。

特点

  • task_struct 中的 mm_struct 字段为 NULL(没有用户态虚拟内存空间),仅使用内核空间的虚拟内存。
  • 全程运行在内核态,执行内核代码(如内存回收、磁盘缓存刷新、处理硬件中断等系统任务)。
  • 不依赖任何用户态资源,由内核直接调度,即使所有普通进程退出,内核线程仍会运行(维持系统基本功能)。

二、内核进程的mm_struct为什么是null

三、内核空间为什么不直接使用物理内存,也要使用虚拟内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值