Operating System 作业-02

本文探讨了操作系统中多线程和进程的相关问题,包括在统一进程中的线程共享状态、Chrome浏览器的多进程设计优势、CPU密集型应用的多线程优化策略,以及使用Monte Carlo技术进行并行计算π的实现。通过具体的习题解析,深入理解多线程和OpenMP在提升程序性能中的作用。
摘要由CSDN通过智能技术生成

4.3、在统一进程的多线程之间,下列哪些程序状态部分会被共享?

堆内存和全局变量

4.5、第三章讨论了Google的chrome浏览器,以及在单独进程中打开每个新网站的做法。如果chrome设计成在单独线程中打开每个新网页,那么会有什么样的好处?

每个标签页都会启动一个独立的进程,这样即使因为某个页面崩溃了也不会影响到其他页面。

4.9、具有2个双核处理器的系统有4个处理核可用于调度。这个系统有一个cpu密集型应用程序运行。在程序启动时,所有输入通过打开一个文件而读入。同样,在程序终止前,所有程序输出的结果都写入一个文件。在程序启动和终止之间,该程序为cpu密集型。你的任务是通过多线程技术来提高这个应用程序的性能。这个应用程序运行在采用一对一线程模型的系统。

(1)、你将创建多少个线程,用于执行输入和输出?请解释。
线程数取决于应用程序的要求,因此创建一个线程用于执行输入和输出就足够了。
(2)、你将创建多少个形成,用于应用程序的cpu密集型部分?请解释。
线程数应该和处理核数是一样的,因此要创建四个线程。

4.10、考虑下面的代码

a.创建了多少个单独的进程?
b.创建了都少个单独的线程?

创建了5个单独的进程
创建了2个单独的线程。

4.15、修改第三章的习题3.13.这个修改包括写一个多线程程序,以测试你的习题3.13的解决方案

#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>
#include <time.h>
#include <omp.h>
#include <unistd.h>
#define MIN_PID 300
#define MAX_PID 5000
#define TRUE 1
#define FALSE 0
pthread_mutex_t mutex;
int threadVar = 0;
 
struct PidTable{
   
    int pid;
    int isAvailable;
}*PID;
 
int allocate_map(){
   
    int i;
    PID = (struct PidTable*)calloc((MAX_PID - MIN_PID + 1), sizeof(struct PidTable));
    if(PID == NULL) return -1;
    PID[0].pid = MIN_PID;
    PID[0].isAvailable = TRUE;
    for(i = 1; i < MAX_PID - MIN_PID + 1; i++){
   
        PID[i].pid = PID[i - 1].pid + 1;
        PID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值