以下为《操作系统进程与线程实验二》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
操作系统进程与线程实验二
一、实验目的:
对比进程与线程,理解进程与线程的联系与区别,学会使用多线程相关函数。一个进程中的多个线程之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。
线程是进程中的不同执行路径。
多线程是一种多任务并发的工作方式。
Linux系统下的多线程遵循POSIX线程接口,称为pthread。
在linux中线程包括内核线程和用户线程,内核线程有内核管理,不需要我们做更多的工作,我们这里讲的是用户线程,线程统一由用户线程来切换。
二、实验内容:
1. 进程与线程的对比
2. 进程或线程都是并发的
三、实验步骤:
1、观察现有软件采用的多进程还是多线程,这里以浏览器为例。
(1)在Ubuntu中启动firefox,同时打开多个网址,在终端查询firefox进程,观察进程个数,以及占用内存(第4列)、C 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 如下程序编译测试,观察线程不是每次都能执行。
源代码
测试截图
(2)在进程结尾处添加pthread_join函数调用,再次观察运行结果,线程每次都能执行。
源代码
测试截图
(3)线程的调度是并发的,增加两个线程,给线程传递参数,多次运行观察结果。
源代码
测试截图
(4)进程之间的资源是独立的即使是父子进程。线程之间是共享进程数据的。
源代码
测试截图
常见问题
线程函数的程序在pthread库中,故链接时要加上参数-lpthread。
使用线程时,使用gcc或arm-linux-gcc编译时会出现错误:undefined reference to ‘thread_create’
解决办法:
添加编译参数选项-pthread
心得总结
进程是资源分配单位,线程是CPU调度单位,并且进程拥有一个完整的资源平台,而线程只是独享必要的资源。线程同样有就绪态,阻塞态和执行态,同时具有状态之间的转换关系。
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《操作系统进程与线程实验二》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。