进程的空间模型及其代码验证

本文介绍了VFS虚拟文件系统如何提供文件系统抽象,使程序对不同底层文件系统透明。同时讲解了栈区、共享库、堆区和静态存储区的功能及其在C++中的使用,以及内存管理的重要性。

VFS虚拟文件系统VFS 提供了一个抽象的文件系统模型,包括文件、目录、文件属性等概念,使得应用程序可以通过通用的系统调用(如open、read、write等)来访问文件,而无需关心底层文件系统的类型,比如 ext4、NTFS、FAT32 等。这种设计使得操作系统更加灵活,能够支持多种文件系统,并且可以方便地扩展和添加新的文件系统 。

栈区 由系统自己分配,存放局部变量、形参等

共享库:存放动态链接的共享库。

堆区:由用户自己分配,通过malloc或者new来申请,通过free或delete来释放,一定要释放,否则会造成内存泄露。存放各种数据结果、对象、数组等。

.bss:存放未初始化的全局变量和静态量。

.data:存放已初始化的全局变量和静态量。

.rodata:存放常量字段和字符串,如

const int a = 42;  // 整数常量
const double pi = 3.14159;  // 浮点数常量
const char ch = 'A';  // 字符常量
const char myString[] = "Hello, World!";   // 字符数组表示的字符串
std::string cppString = "Hello, World!";    // C++ 字符串类

.txt:存放函数体的二进制代码

代码验证

#include <iostream>

using namespace std;

void max(int stack_a)
{
    cout << "stack_a:" << &stack_a << endl;
    return;
}

void min(double satck_b)
{
    cout << "satck_b:" << &satck_b << endl;
    return;
}

int bss;

int data = 10;

const int rodata = 9;

int main()
{
    int *heap_p = (int *)malloc(sizeof(int));
    int *heap_q = (int *)malloc(sizeof(int));
    cout << "heap_p:" << heap_p << endl;
    cout << "heap_q:" << heap_q << endl;

    cout << "bss:" << &bss << endl;
    cout << "data:" << &data << endl;
    cout << "rodata:" << &rodata << endl;

    min(6.0);
    max(5);
    // min(6.0);
    cout << "预期顺序是:a>b>q>p>bss>data>rodata" << endl;

    free(heap_p);
    free(heap_q);

    return 0;
}

输出结果:

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值