Q1:关于进程创建的问题,进程创建的整个完整的历程是怎样的,就比如说,你用鼠标点开浏览器的过程,我觉得首先是鼠标作为输入设备,点击以后给系统输入了一个打开浏览器的信号,问题就是接下来系统创建浏览器这个进程经历了哪些步骤?如果鼠标点击的是桌面的快捷方式和直接在文件夹里面启动是不是一样的创建历程?

Q2:地址空间的物理位置是由操作系统决定的还是由硬件决定的?它的位置在UNIX和windows有区别吗?

Q3:由于库函数对文件的操作最终是通过系统调用实现的, 使用库函数也有系统调用的支持,为什么不直接使用系统调用呢? 比如编写C程序为什么不直接用write(),而用printf()?

Q1: What is race condition?

A: Where two or more processes are reading or writing some shared data and the final result depends on who runs precisely when, are called race conditions.

Q2:What is mutual exclusion?

A:some way of making sure that if one process is using a shared variable or file, the other processes will be excluded from doing the same thing.

Q3:What  is critical region?

A:That part of the program where the shared memory is accessed.

Q4:What are four conditions to hold to have a good solution for race condition/mutual exclusion?

A:

  1. No two processes may be simultaneously inside their critical regions.
  2. No assumptions may be made about speeds or the number of CPUs.
  3. No process running outside its critical region may block other processes.
  4. No process should have to wait forever to enter its critical region.

Q5:Explain the asmcode of Fig 2-25 in section 2.3.3 to show that the code can provide mutual exclusion.

A:进程在进入临界区时,调用enter_region,进程会一直忙等待,直至琐空闲为止,随后它获得该锁并返回;进程从临界区返回时它调用leave_region,这把lock设置为0.进程在正确时间调用enter_region和leave_region,进程之间即可产生互斥。

Q6:Explain the code of Fig 2-28 in section 2.3.5 to show that the code can provide mutual exclusion.

A:通过两种不同的方式来使用信号量mutex,mutex用于互斥,它用于保证任一时刻只有一个进程读写缓冲区和相关的变量。

Q7:What is monitor and please show the connections between the code in Fig 2-34 and monitor.

A:进入monitor时的互斥有编译器负责,引入条件变量以及相关的两个操作:wait和signal。如果在一个条件变量上有若干进程正在等待,则在对该条件变量执行signal操作后,系统调度程序只能在其中选择一个使其恢复运行。

Q8:What is the difference between a semaphore and a mutex?

A:mutex由系统层控制,semaphore则是在用户层执行;mutex一定由获得锁的进程来释放,semaphore可以由其他进程释放;mutex只有两种计数,从而对共享资源加一保护。

Q9:Please explain the code in Fig 2-32 to show how conditional variables work. If we do not use conditional variable, only use mutexlock& unlock, what’s the difference?

A:当生产者填满缓冲区时,它在生产下一个数据项之前必须等待,直到消费者清空了它。类似的,当消费者一走一个数据项时,它必须等待,知道生产者生产了另外一个数据项。使一个线程睡眠的语句应该总是要检查这个条件,以保证线程在继续执行前满足条件,因为线程可能已经因为一个unix信号或其他原因而被唤醒。

Q10:What is barrier?

A:Some applications are divided into phases and have the rule that no process may proceed into the next phase until all processes are ready to proceed to the next phase.

Q11:What is message passing?

A:使用两条原语send和receive,它们像信号量而不像管程,是系统调用而不是语言成分。

Q12:What is the  difference of these IPCs?

A:

忙等待的互斥:当一个进程进入临界区中更新共享内存时,其他进程不会进入临界区。

休眠与唤醒:几条进程间通信原语,它们在无法进入临界区时将阻塞,而不是忙等待。

信号量:使用一个整型变量来累计唤醒次数,供以后使用。

互斥量:信号量的一个简化版本,是一个可以处于两态之一的变量:解锁和加锁。

管程:一个管程是一个有过程、变量及数据结构等组成的一个集合,它们组成一个特殊的模块或软件包。

信息传递:使用两条原语send和receive,它们像信号量而不像管程,是系统调用而不是语言成分。

屏障:除非所有的进程都就绪准备着手下一个阶段,否则任何进程都不能进入下一个阶段。

Q13:Please read section 2.3 and write down your questions.

1)P135 figure2-32中,main函数中使用的pthread_create ();我上网查的参数列表为int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void * (*func)(void *), void *arg);

其中第二第四参数应该为指针,为什么这里传递的参数是0?

Exercise1:

P1

P1

P2

P3

P1

P3

P3

P4

P5

P4

P6

P7

0        20         40        55         75      85        105    110    120       130           160       190         210

P1

P2

P3

P4

P5

P6

P7

Response time

0

10

25

110

0

100

60

Turnaroundtime

85

25

80

160

10

130

80

Exercise2:

(a)Round robin (quantum=1s).

A

A

B

C

D

A

B

C

B

C

B

C

B

0         1          2          3          4          5          6          7          8          9          10          11          12     13

Tmean=(6+11+9+1)/4=27/4=6.75

(b) Priority scheduling (NonPreemptive).

A

C

B

D

0          3                      7                                       12        13

Tmean=(3+5+4+1)/4=13/4=3.25

(c) Priority scheduling (preemptive).

A

B

C

B

A

D

0                        2            3                                      7                        11           12           13

Tmean=(12+9+4+1)/4=26/4=6.5

(d) FCFS.

A

B

C

D

0                        3                                                   8                                               12                     13

Tmean=(3+5+4+1)/4=13/4=3.25

(e) Shortest job first (Preemptive).

A

C

D

B

0                                3                           7             8                                    13

Tmean=(3+5+4+1)/4=13/4=3.25

(f) Shortest job first (Nonpreemptive).

A

C

D

C

B

0                           3                        4                    5                              8                                        13

Tmean=(3+5+5+1)/4=14/4=3.5

题目1:page fault = 7

题目2:page fault = 8

(1)

当前状态是安全的

过程如下:

E(3568)

P(3467)

A(0101)

其中

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6           1   1    2    4

P2     1   1    2    2           0   1    2    2

P3     1   2    1    1           1   1    1    0

P4     1   1    2    3           1   1    1    1

分配给P3,P3结束后,A(1211)

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6           1   1    2    4

P2     1   1    2    2           0   1    2    2

P3     1   2    1    1           0   0    0    0

P4     1   1    2    3           1   1    1    1

分配给P2,P2结束后,A(1333)

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6           1   1    2    4

P2     1   1    2    2           0   0    0    0

P3     1   2    1    1           0   0    0    0

P4     1   1    2    3           1   1    1    1

分配给P4,P4结束后,A(2444)

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6           1   1    2    4

P2     1   1    2    2           0   0    0    0

P3     1   2    1    1           0   0    0    0

P4     1   1    2    3           0   0    0    0

分配给P1,P1结束后,A(3568),完成

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6            0   0    0    0

P2     1   1    2    2           0   0    0    0

P3     1   2    1    1           0   0    0    0

P4     1   1    2    3           0   0    0    0

(2)

不能,如果系统分配R2给P1的话,会是如下状态:

A(0001)

Max                        Has

R1 R2 R3 R4        R1 R2 R3 R4

P1     1   2    3    6           1   2    2    4

P2     1   1    2    2           0   1    2    2

P3     1   2    1    1           1   1    1    0

P4     1   1    2    3           1   1    1    1

没有足够的资源分配给任意一个进程,该状态将陷入死锁状态。

西电软工操作系统作业题相关推荐

  1. 西电软工操作系统实验:编译Ubuntu18.04新内核并添加系统调用(含代码以及详细分析)

    西电软工操作系统实验一:编译Linux内核 目录 (一)前言 (二)实验内容 (三)实验环境 (四)实验过程 4.1安装虚拟机 4.2虚拟机换源 4.3 添加系统调用内核 4.4 下载编译所需的软件依 ...

  2. 西电软工操作系统复习纲要

    文章目录 写在前面 第一章 引论(Overview) 一. 什么是操作系统? 第二章 进程与线程(Process & Thread) 一. 什么是进程 二. 什么是线程 三. 进程间通信 四. ...

  3. 不正经的保姆级西电软工操作系统实验课教程 ==== 专题一

    *************** 看前须知 *********** 0000000!!!!! 由于题目要求加学号,但是本lowbee没有看到这个要求 于是只是换了内核,不符合要求只能被打回,但是已经找到 ...

  4. 不正经的保姆级西电软工操作系统实验课教程 ==== 专题二 内核编译

    *************** 看前须知 *********** 1.本文仅仅是西电软件工程OS实验课的教程,原则上只接受关于本实验相关的问题 2.代码原则上仅仅作为参考,如果被查出因为抄袭而导致不良 ...

  5. 西电软工oop面向对象程序设计实验二上机报告

    实验目的 本次实验通过设计实现几道以自定义函数为主的程序,以熟悉 C++为程序员提供的函数相关机制,加深对命令行参数.参数传递方式.函数形参的特殊形式等知识的感性认识.学会过程式程序设计范型的基本策略 ...

  6. Ubuntu增加一个系统调用(20.04)西电软工OS实验专题二

    title: 西电软工OS实验专题二–增加系统调用 date: 2022-05-14 07:48:48 tags: OS 写在前面: 如果这个过程中你某个地方没有把握,切记使用vm的快照功能,血的教训 ...

  7. 西电软工计组II作业答案(2020-2021)

    西电软工计组II作业答案(2020-2021) 文章目录 西电软工计组II作业答案(2020-2021) 第六章 6.5 6.9 6.10 第七章 7.2 7.6 7.7 7.16 7.22 7.23 ...

  8. 西电软工计算机通信与网络期末复习要点总结

    数据通信模型 数据通信网络:广域网WAN (电路交换 分组交换 帧中继 ATM),局域网LAN,无线网城域网. 第二章协议体系结构:协议:语法.语义.定时关系.层,协议,服务,接口.OSI七层协议模型 ...

  9. 西电软工数据库复习思维导图

最新文章

  1. 【bzoj3924】[Zjoi2015]幻想乡战略游戏 动态点分治
  2. 地摊重现江湖,疫情带给我们的意外收获
  3. hdu 3392 Pie
  4. MYSQL专题-MySQL事务实现原理
  5. 译《Understanding Microsoft Virtualization Solutions》-之1.2
  6. 启明云端直播来了!真的来了!15号晚7:30分启明云端带着8ms菇凉正式亮相立创直播,带你一起畅玩彩屏!参与直播互动的小伙伴将会得到红包大奖及获得SigmarstarSSD201开发板\核心板的机会
  7. 内建模块_月隐学python第14课
  8. linux 安装软件_Linux:其它软件安装方式
  9. idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?...
  10. bootstrap table传回的数据后端怎么获取_基于 Spring Cloud 开发的分布式系统,遇到爬虫、接口盗刷怎么办
  11. centos7环境下mysql5.7的安装与配置
  12. DOM节点的插入、替换、克隆及删除
  13. c++调用powershell_告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始
  14. CS5211 eDP转LVDS转换器芯片 CS5211芯片说明书
  15. idea去掉拼写检查
  16. 苹果AppStore审核规则标准指南!
  17. 【转】将HTML5封装成android应用APK 文件若干方法
  18. Python简单详细使用教程
  19. ▷Scratch课堂丨【编程趣味卡3】制作音乐
  20. C++中 itoa 和 atoi 的用法

热门文章

  1. 在嵌入式系统中使用opkg做版本升级
  2. 全民K歌React Native实践与优化
  3. Redis6.0.6_02_Redis 入门基础
  4. 基因组所联合多校研发新型DNA断裂检测技术:DEtail-seq
  5. 2016最新H5面试题(及答案)
  6. VMware虚拟机配置公网ip
  7. Android中录音的使用
  8. Google Earth Engine(GEE)——LandScan人口数据集
  9. python查看微信消息撤回
  10. 微信支付通知方法-附上部分代码