进程

1.c语言和cpp语言中,
这个不是内存,

%p 
  1. 进程认为自己是独占空间的,实际上不是这样子的。

  2. pcb中存了一个内存空间,进程地址空间

  3. 页表是进程内存管理的核心部分,它管理了进程虚拟内存到物理内存的映射关系。通过页表,操作系统可以为每个进程提供独立的虚拟地址空间,并实现内存分页和虚拟内存等功能。在进程切换时,操作系统需要根据PCB中的页表指针加载正确的页表,确保当前进程能够正确访问自己的内存。

  4. 虚拟地址也叫线性地址,并且具有拦截的功能,不然恶意软件入侵的内存。

  5. 内存隔离:不同进程有各自独立的页表,进程之间的地址空间相互独立,保证了内存的安全和隔离性。

  6. 写时拷贝,就是父进程拷贝一份到子进程,只有遇到需要修改的时候才会真的在物理内存中开辟一个空间

  7. 进程=内核数据结构+进程对应的代码和数据

  8. 地址空间的存在,可以更加方便的进行进程和进程的数据代码的解耦,保证代码的独立性的特征

  9. linux中代码在磁盘就有逻辑地址,加载进物理内存中,就会有物理地址。

  10. PCB 和 mm_struct
    在操作系统中,进程是系统执行任务的基本单位,而每个进程都需要一些结构来记录和管理它的状态。在 Linux 内核中,PCB(Process Control Block,进程控制块)和mm_struct是两个关键的结构体,它们共同协作来完成对进程的管理。

  11. PCB(进程控制块)
    PCB 是操作系统中保存进程全部关键信息的数据结构。在 Linux 中,PCB 通过 task_struct 结构体实现,它包含了进程的状态、控制信息以及与系统资源交互的细节。具体包括:
    进程ID:唯一标识一个进程的进程号 (PID)。
    进程状态:如运行、睡眠、停止等。
    调度信息:进程的优先级、调度策略等。
    CPU上下文:保存进程的寄存器、程序计数器等信息,确保进程在上下文切换后能够继续运行。
    内存管理信息:通过指向 mm_struct 的指针,关联该进程的内存布局。
    文件描述符表:记录进程打开的文件和设备。

  12. mm_struct

mm_struct 是 Linux 内核中专门用于描述进程内存布局的结构体。它包含了进程虚拟地址空间的详细信息,包括:

代码段、数据段、堆和栈的起始地址和大小。
虚拟内存区域的划分和管理。
页表信息,用于内存地址的转换。
内存映射文件、共享内存等资源。
每个进程都有自己的 mm_struct,其中保存了该进程的内存使用情况。PCB 中的 task_struct 会通过指针链接到该结构。

posted @   zhudachang  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示