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