1. 现代操作系统中为什么要引入“进程”概念?它与程序有什么区别?
答:1)因为在一些可以并发的程序段之间,存在着某种相互制约的关系,每个程序段的执行不仅要受到其他程序执行的制约,而且还要动态地依赖系统资源的分配情况,因此每个可以并发执行的程序段就会因外界条件的限制而不能运行,被迫处于阻塞状态。仅用程序的概念无法表示程序的走走停停以及程序运行过程中对资源的竞争现象。
因此,为了描述和实现系统中各种活动的独立性、并发性、动态性、相互制约性及“执行-暂停-执行”的活动规律,揭示操作系统的动态实质,在操作系统中引入进程概念是非常自然和必要的。进程是现代操作系统的一个基本概念,是并发程序问世后出现的一个重要概念。
2)进程与程序的区别:
a) 动态性和静态性。进程是程序的执行过程,是动态的过程,属于一种动态概念。一个进程可以看成是一个动作序列,而每个动作则是由执行一段指令序列(也就是一个程序)来实现的,其结果是提供了某种系统功能。
进程的动态性不仅表现在“程序的执行”,而且还表现在它是动态地产生和消亡,而程序是一组有序静态指令和数据的集合,用来指示处理机的操作,是一种静态概念。
b) 进程包含进程控制块。从结构上看每个进程,其实体都是由程序段和相应的数据段两部分构成的,这一特征与程序的含义相近,但是进程的结构还要包含一个数据结构pcb,即进程控制块。
c) 一对多关系。一个进程可以涉及一个或几个程序的执行;反之,同一程序可以对应一个或多个进程,即同一程序段可以在不同数据集合上运行,可构成不同的进程,这就是说,同一程序在某一指定的时刻,可以是几个不同进程的一部分。一个计算进程也可以对应多个程序。
d) 并发性。进程能真实地描述并发执行,而程序就不具有这种鲜明的特征。进程是个能独立调度并能和其他进程并行执行的单位,它能确切地描述并发活动,而程序段通常不能作为独立调度执行单位。
e) 进程具有创建其他进程的功能。通常情况下进程都是由其父进程创建的,而祖先进程是在系统初始活动时由系统初始启动程序建立的。一个进程可以创建一个以上的子进程,这样一来,所有的进程就组成了一个进程树(或族系)。
系统中所有进程的活动进程均受操作系统或父进程控制,不断地改变状态,直至它完成任务后被撤销,而一般的程序不具备创建其他程序的功能。
f) 操作系统中的每一个程序都是在一个进程现场中进行的。实际上,进程是一个虚拟机,它为用户规定地址空间和逻辑资源。所谓虚拟机,即逻辑机,指的是一个概念上的环境。
在这样一个环境中,程序所看到的机器界面在实际硬件中不一定存在。
2. 进程的含义是什么?如何构成和描述进程?
答:进程是程序的一次执行。
从软件结构的构造角度讲,进程是由“程序+数据+进程控制块”构成。进程是一个可拥有资源的独立实体,同时又是一个可以独立调度的基本单位。
用进程控制块来描述进程。
3. 在生产者与消费者问题的算法中,交换两个v操作的次序会有什么结果?交换两个p操作的次序呢?试说明理由。
答:交换两个p操作的次序有可能造成死锁。例如,当无空缓冲区时,如果此时生产者先做互斥操作,即:
p(mutex),然后才做同步操作p(empty),由于此时empty=-1造成生产者被阻塞。当消费者执行到互斥操作时,由于生产者已执行过并未作释放,所以此时mutex=-1,造成消费者也被阻塞,生产者等消费者释放空缓冲区,而消费者则等待生产者释放临界资源的使用权,所以两个进程都无法向前推进而造成死锁。
交换两个v操作的次序不会发生死锁。
4. 何谓并发?何谓并行?
答:在某一时段同时发生几件事的现象称为并发。计算机为我们自动地工作,实际上是cpu执行着存放在内存中的程序,同时做几件事就是同时执行着几道不同的程序。
如果这几道程序同时在不同的cpu上执行,则称之为“并行”;如果它们分时地运行在同一个cpu上,则称之为“并发”。逻辑上的并行称之为“并发”。
5. 引入线程的目的是什么?
答:进程的相关资源包括**、数据、堆栈、文件、i/o和虚拟内存信息等,而线程除了cpu资源,再没有其他资源可以分配。因此,线程也被称作“轻量级进程”。
系统对进程的处理要花费更多的开支,尤其在进行进程调度时。利用线程则可以通过共享这些基本资源而减轻系统开销。另外,线程还可以减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。
因此要引入线程。
6. 何谓进程通信?
答:进程通信是指进程之间的信息交换,进程间的同步与互斥是一种通信方式。
两个并行进程可以通过互相发送消息进行合作,消息是通过消息缓冲而在进程之间相互传递的。
unix系统中的进程间的通讯有两层含义:
--单一进程内部各个模块间的通讯。
--作为单独单位的各个不同进程间的通讯。
前者沿袭了单任务操作系统中的模块通讯方法;
后者必须保证各个进程在通讯过程中互不干扰从而保持其通信的一致性。
linux的进程间通信的方法有管道、消息队列、信号量、共享内存、套接口等。
第三章作业
v s 顺序执行下述两个动作 1.s值加1,即s s 1 2.如果s 0,则该进程继续运行 3.如果s 0,则唤醒等待信号量s阻塞队列中的头一个进程 把阻塞态改为就绪态 执行v操作的进程继续运行。procedure s var s semaphore begin s s 1 if s 0 then ...
第三章作业
1 顺序栈空 栈满条件2 链栈栈空 栈满条件。3 循环队列队空 队满条件,如何表示队列中数据元素的个数4 链队列队空 队满条件。5 以下运算实现在顺序栈上的进栈,请在 处用适当的语句予以填充。int push sqstacktp sq,datatype x if sp top sqstack max...
第三章作业
1.论述各类绿地的环境特点和树种的选择。一 高层建筑中的狭窄街巷绿地绿地内的环境特点 直射辐射量少,日照时间短 夏季气温偏低,冬季因受周围建筑物热辐射的影响,气温偏高 风速一般偏低,但有时会产生狭管效应,使风速增大。这些地方裸露土面极少,多为水泥铺装,严重阻碍了土壤与大气的水 气交换,且存在一定程度...