*** 作系统作业一:探测进程相对位置

 *** 作系统作业一:探测进程相对位置,第1张

课堂作业

一般 *** 作系统中,进程的每个段内部地址均连续,但段与段的相对次序可能不同。


用C/C++语言写一个小程序,探测一个 *** 作系统中进程的各段的相对位置(输出次序即可)
代码 C语言

#include 
#include 
#include 
int i = 5, j;
int stack,BSS,data,code,heap;
void subfunc(int a)
{
    stack = &a;//stack
}
int main(void)
{
    int tmp = i - 1;
    char *p = "abcde";
    int a[5];
    
    data = &i;
    BSS = &j;
    
    p = malloc(sizeof(a) / sizeof(a[0]));
	heap = p;//heap
    for (; tmp >= 0; tmp--)
    {
    	p[tmp] = a[tmp];
	}
	code =  main;//code
    subfunc(tmp);
    free(p);
    int sor[5],N[5];
    sor[0] = stack;
    sor[1] = heap;
	sor[2] = data;
    sor[3] = code;
    sor[4] = BSS;
    for(int k=0;k<5;k++)
	{
		N[k] = sor[k];
	}
    char * str[5] = {"stack","heap","data","text","BSS"};
	//sort
	int temp;
	for(int k=0;k<5;k++)
	{
		for(int n=k+1;n<5;n++)
		{
			if(sor[k]<sor[n])
			{
				temp = sor[k];
				sor[k] = sor[n];
				sor[n] = temp;
			}
		}
	}
	printf("Segment\t Address\n");
	for(int k=0;k<5;k++)
	{
		for(int n=0;n<5;n++)
		{
			if(sor[k]==N[n])
			{
				printf("%s \t %d\n",str[n],N[n]);
			}
		}
	}  
    return 0;
}

测试

探测结果:

参考:http://clem.is-programmer.com/posts/7769.html

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存