操作系统进程与线程实验二

本文由用户“hanxuesong1988”分享发布 更新时间:2022-04-07 13:49:45 举报文档

以下为《操作系统进程与线程实验二》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

操作系统进程与线程实验二

一、实验目的:

对比进程与线程,理解进程与线程的联系与区别,学会使用多线程相关函数。一个进程中的多个线程之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

线程是进程中的不同执行路径。

多线程是一种多任务并发的工作方式。

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字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《操作系统进程与线程实验二》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览