《操作系统原理》实验报告二

一、实验目的
(1)理解操作系统线程的概念和应用编程过程;
(2)理解线程的同步概念和编程;

二、实验内容
(1)在 Ubuntu 或 Fedora 环境使用 fork 函数创建一对父子进程,分别输出各自的进程号和提示信息串。
(2)在 Ubuntu 或 Fedora 环境使用 pthread_create 函数创建2 个线程 A 和 B。线程 A 在屏幕上用 while 循环顺序递增地输出 1-1000 的自然数;线程 B 在屏幕上用 while 循环顺序递减地输出1000-1 之间的自然数。为避免输出太快,每隔 0.5 秒输出一个数。
(3)在 windows 环境下,利用高级语言编程环境(限定为 VS 环境或 VC 环境)调用 CreateThread 函数实现(2)的功能。
(4)在 windows 环境下,利用高级语言编程环境(限定为 VS 环境或 VC 环境)调用 CreateThread 函数和相关的同步函数,模拟实现“生产者-消费者”问题。
(5)在 windows 环境下,利用高级语言编程环境(限定为 VS环境或 VC 环境)调用 CreateThread 函数实现“并发地画圆和画方”。圆的中心,半径,颜色,正方形的中心,边长,颜色等参数自己确定,合适就行。圆和正方形的边界上建议取 720 个点。为直观展示绘制的过程,每个点绘制后睡眠 0.2 秒~0.5 秒。

三、实验过程
(一)实验步骤
1)fork函数创建父子进程
1.打开ubuntu上文本编辑器写c程序(problem1.c)
2.核心代码

1.	void main()  
2.	{
      pid_t pid;        
3.	    fprintf(stdout,"I am the first process, my pid is %d, my parent pid is %d\n",getpid(),getppid());    
4.	    pid=fork();  
5.	    if(0==pid)  
6.	        fprintf(stdout,"I am the child process, my pid value is %d, but my real pid is %d, my parent pid is %d\n",pid,getpid(),getppid());  
7.	    else  
8.	        fprintf(stdout,"I am the parent process, my child pid value is %d, my real pid is %d, my parent pid is %d\n",pid,getpid(),getppid());   
9.	}  

3.第3行要求输出当前进程的pid和他的父进程的pid,第4行的pid是fork()函数的返回值,第6和7行分别输出不同进程运行时的信息(getpid(),getppid()分别返回进程和其父进程的pid)
4.在终端上编译该程序并输出结果
#gcc problem1.c
#./a.out
5.分析结果

2)pthread_create 函数创建2 个线程(problem2.c)
1.打开ubuntu上文本编辑器写c程序
2.核心代码

10.	int main()
11.	{
   
12.	    pthread_t tips1;
13.	    pthread_t tips2;
14.	    int hThread1 = pthread_create(&tips1, NULL, print1, NULL);
15.	    int hThread2 = pthread_create(&tips2, NULL, print2, NULL);
16.	    if (hThread1 != 0)
17.	    {
   
18.	        printf("hThread1 err"
  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值