You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 lines
1.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

段:存放的是全局变量和静态变量
栈:系统自动分配释放,函数参数值,局部变量,返回地址等在此
堆:存放动态分配的数据,由开发人员自行管理
进程表会记录进程在内存的位置PID 是多少,以及当前什么状态,内存给它分配了多大使用空间以及属于哪个用户
每个用户态线程通过系统调用创建一个绑定的内核线程Windows NT 即采用这种模型
n 个用户态线程对应 m 个内核态线程。m 通常设置为核数Linux 即采用的这种模型
在 Linux 中,操作系统采用虚拟内存管理技术,使得进程都拥有独立的虚拟内存空间,理由也比较直接,物理内存不够用且不安全(用户不能直接访问物理内存)。Linux 内核看来只有进程而没有线程。Linux所谓的线程其实是与其他进程共享资源的轻量级进程。为什么说是轻量级呢在于它只有一个执行上下文和调度程序所需的信息与父进程共享进程地址空间 。
虚拟内存技术,把进程虚拟地址空间划分成用户空间和内核空间。
在 32 位的操作系统中4GB 的进程地址空间分为,用户空间和内核空间,用户空间为 03G内核地址空间占据 34G
用户不能直接操作内核空间虚拟地址,只有通过系统调用的方式访问内核空间。
线程共享虚拟内存和全局变量等资源,线程拥有自己的私有数据比如栈和寄存器。