操作系统 实验一 14281020

操作系统 实验一

14281020 吴毅辉

实验一: 操作系统初步

一、(系统调用实验)了解系统调用的不同封装形式。

一、(系统调用实验)了解系统调用不同的封装形式。

要求:1、参考下列网址中的程序。阅读分别运行用API接口函数getpid()直接调用和汇编中断调用两种方式调用Linux操作系统的同一个系统调用getpid的程序(请问getpid的系统调用号是多少?linux系统调用的中断向量号是多少?)。

答:getpid的系统调用号是20;linux系统调用的中断向量号是0x80。

 

 

 

2、上机完成习题1.13。

系统调用的C函数形式输出“Hello World!”程序

3、阅读pintos操作系统源代码,画出系统调用实现的流程图。

二、(并发实验)根据以下代码完成实验。

要求:
1、编译运行该程序(cpu.c),观察输出结果,说明程序功能。
(编译命令: gcc -o cpu cpu.c –Wall)(执行命令:./cpu)

此程序的功能室收到输入的字符后不断打印该字符

2、再次按下面的运行并观察结果:执行命令:./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D &程序cpu运行了几次?他们运行的顺序有何特点和规律?请结合操作系统的特征进行解释。

 

每次输入字符,cpu便运行一次,连续输入四个字符ABCD,但是根据输出的结果可以看到不是按照顺序输出的,可见cpu的知行是并发的,使得该程序失去封闭性。

 

三、(内存分配实验)根据以下代码完成实验。

要求:
1、阅读并编译运行该程序(mem.c),观察输出结果,说明程序功能。(命令: gcc -o mem mem.c –Wall)

此程序功能为创建一个进程,并申请一个内存地址,用指针p指向并输出该进程的地址,然后顺序输出进程号和内存地址,将p循环+1

 

2、再次按下面的命令运行并观察结果。两个分别运行的程序分配的内存地址是否相同?是否共享同一块物理内存区域?为什么?命令:./mem &; ./mem &

不相同,两个进程申请分配的内存地址不样,对于每个进程而言,每个进程该分配的内存空间进行操作且互不影响。也不共享同一物理内存区域。每个进程的内存空间只是虚拟内存空间,不论两个进程申请的虚拟内存地址是否相同,真实的物理地址是不一样的,所以两个进程对地址上的数值操作都是独立的。

 

四、(共享的问题)根据以下代码完成实验。

要求:

  1. 阅读并编译运行该程序,观察输出结果,说明程序功能。(编译命令:gcc -o thread thread.c -Wall –pthread)(执行命令1:./thread 1000)

该程序功能为创建两个线程,遍历次数做累加操作,输出初始值和最终值。

  1. 尝试其他输入参数并执行,并总结执行结果的有何规律?你能尝试解释它吗?(例如执行命令2:./thread 100000)(或者其他参数。)

最明显的特征是,最终值的数字是给定参数值的两倍。

3、提示:哪些变量是各个线程共享的,线程并发执行时访问共享变量会不会导致意想不到的问题。

参数loops和counter是两个线程共享的。并发执行互不影响,所以counter累积了两倍的数字。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值