操作系统lab1

实验一: 操作系统初步

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

1.1、请问getpid的系统调用号是多少?linux系统调用的中断向量号是多少?

系统调用号39;

中断向量号为0x80;

1.2、上机作业1.13

Linux调用c函数

Linux汇编方式

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

2.1编译运行该程序(cpu.c),观察输出结果,说明程序功能。

(编译命令: gcc -o cpu cpu.c –Wall)(执行命令:./cpu)

判断参数个数,若不为2,则输出usage:cpu<string>;若为2,则重复输出第一个字符。

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

运行4次,运行顺序交替,在一个时间段并发执行,在一个时间点一个执行

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

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

程序功能:申请一个int类型大小的内存空间,打印pid和内存地址,从1开始打印变量,每次使变量加一

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

两者都不相同,两次命令分别装载到两个地址

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

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

计算程序运行次数

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

因为有两个进程所以输出的值为参数的二倍

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

Couter变量是共享的,会造成问题。

 

源代码链接:

https://github.com/waguyu/waguyu/blob/master/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9Flab1%E6%BA%90%E4%BB%A3%E7%A0%81.docx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值