为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

慕尼黑0001808 的学生作业:

#include #include #include #include int main(int argc, char *argv[]) { pid_t pid_a,pid_b; pid_a = fork(); if(-1 == pid_a){ perror("A:fork()fail"); exit(EXIT_FAILURE); }else if(0 == pid_a){ printf("子进程A(pid=%d)运行中......\n",getpid()); sleep(2); printf("子进程A(pid=%d)退出,将不会往下执行,因为下面有一个exit函数结束\n",getpid()); exit(EXIT_SUCCESS); } pid_b = fork(); if(-1 == pid_b){ perror("A:fork fail"); exit(EXIT_FAILURE); }else if(0 == pid_b){ printf("子进程B(pid=%d)运行中......\n",getpid()); sleep(5); printf("子进程B(pid=%d)退出,将不会往下执行,因为下面有一个exit函数结束\n",getpid()); exit(EXIT_SUCCESS); } printf("父进程(pid=%d)运行中,等待所有子进程退出\n",getpid()); int status_a; waitpid(pid_a,&status_a,0); if(WIFEXITED(status_a)){ printf("父进程:子进程B(pid=%d)正常退出,退出状态码%d\n",pid_a,WEXITSTATUS(status_a)); } int status_b; waitpid(pid_b,&status_b,0); if(WIFEXITED(status_b)){ printf("父进程:子进程B(pid=%d)正常退出,退出状态码%d\n",pid_b,WEXITSTATUS(status_b)); } printf("父进程(pid=%d)完成等待,退出\n",getpid()); return 0; } 运行结果: linux@linux-VMware-Virtual-Platform:~/study/homework/1036$ gcc main.c linux@linux-VMware-Virtual-Platform:~/study/homework/1036$ ./a.out 父进程(pid=5515)运行中,等待所有子进程退出 子进程A(pid=5516)运行中...... 子进程B(pid=5517)运行中...... 子进程A(pid=5516)退出,将不会往下执行,因为下面有一个exit函数结束 父进程:子进程B(pid=5516)正常退出,退出状态码0 子进程B(pid=5517)退出,将不会往下执行,因为下面有一个exit函数结束 父进程:子进程B(pid=5517)正常退出,退出状态码0 父进程(pid=5515)完成等待,退出 linux@linux-VMware-Virtual-Platform:~/study/homework/1036$

得分 0
学习任务

陶丽丹 的学生作业:

**练习1:**是线性表,双子的前驱是金牛、后继是巨蟹。 练习2: 1、这个题目实质是计算最短路径,也就是说要给ABCEDF赋值为1-6,数字不重复,每个学生使用的时间是MAX(该生所有科目对应的数组)-MIN(该生所有科目对应的数组)+1,优化的方向是让所有人的MAX-MIN最小,也就是平均距离最小。 2、先统计一下两两组合,即AB、AC、AD、AE、AF、BC、BD、BE、BF、CD、CE、CF、DE、DF、EF共现的频次,会发现不存在AC、BC、BD、DE的组合,其他组合都出现1次,也就是说,ABE聚在一起、CD聚在一起,F同所有其他科目都有组合,但是由于ABE支有3个成员,所以F和ABE相对来说靠得更近一点,为了保险,我们可以将F放在中间,将CD和ABE放在两侧,同时F总共出现5次,ACE各自出现4次,而B和D只出现了2次,所以,为了保险,我们可以把B和D放在两端,E和A的顺序可以随意,那么就是BAEFCD或者BEAFCD,或者把这两个结果翻转过来,变成DCFEAB和DCFAEB,结果都是17个小时。 3、如果我们把所有可能性都列举出来并且计算:sum(MAX(array.student(n))-MIN(array.student(n))+1),会发现最小值确实是17,但是计算出17的组合却比较多,一共有48条路径,规律为:CD必须在一起,可以是1、2位或5、6位,其余四个科目必须在一起(也就相当于聚成两支),如果紧邻CD的是F,那么ABE顺序可以随意,也就是说(ABE)F(CD)或(CD)F(ABE),一共24种可能,括号表示可以随意排列。 4、如果紧邻CD的不是F,那就需要分情况讨论,具体为,CD在前:(CD)EF(AB)、(CD)EAFB、(CD)AF(BE)、(CD)AEFB;CD在后:(AB)FE(CD)、BFAE(CD)、(BE)FA(CD)、BFEA(CD)。两组其实是对称的。

得分 100
学习任务

慕尼黑0001808 的学生作业:

一、进程的地址空间组成 一旦进程建立之后,系统则要为这个进程分配相应的资源,一般(32位)系统会为每个进程分配 4G 的地址空间 4G 的进程地址空间主要分为两部分: 0 - 3G : 用户空间 3G - 4G : 内核空间 用户空间又具体分为如下区间 stack : 存放非静态的局部变量 heap : 动态申请的内存 .bss : 未初始化过的全局变量(包括初始化为0的,未初始化过的静态变量(包括初始化为0) .data : 初始化过并且值不为0的全局变量,初始化过的不为0静态变量 .rodata : 只读变量(字符串之类) .text : 程序文本段(包括函数,符号常量) 二、虚拟地址与物理地址 在程序执行过程中,操作系统会分配 4G 的 虚拟地址空间 虚拟地址空间中的每个地址都是一个 虚拟地址 虚拟地址 : 虚拟地址并不代表真实的内存空间,而是一个用于寻址的编号 物理地址 : 是指内存设备中真实存在的存储空间的编号 虚拟地址通过映射的方式建立与物理地址的关联,从而达到访问虚拟地址就可以访问到对应的物理地址 在 cpu 中有一个硬件 MMU(内存管理单元) ,负责虚拟地址与物理地址的映射管理以及虚拟地址访问 操作系统可以设置 MMU 中的映射内存段 在操作系统中使用虚拟地址空间主要是基于以下原因: 直接访问物理地址,会导致地址空间没有隔离,很容易导致数据被修改 通过虚拟地址空间可以实现每个进程地址空间都是独立的,操作系统会映射到不用的物理地址区间,在访问时互不干扰.

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号