进程
-
什么是进程?为什么要设立进程?进程有哪些特性
- 进程可以简单的理解为执行中的程序,程序是我们放在硬盘中的一段代码,而通过创建进程,系统将程序放入内存中,同时运行它
- 进程 = 程序(代码段) +程序计数器(记录下调指令的地址)+CPU寄存器+栈+数据段(特制全局变量)
- 进程执行某种功能,使用多线程可以使得系统执行多任务并行
- 进程的特性 动态性 独立性 并发性 结构化:
- 动态性:进程除了静态的代码外,其余一切都是动态的,如内存,数据,寄存器等等
- 独立性:两个进程间不互相干扰,如浏览器(chrome是进程,ie则是线程)多页面之间
- 并发性:进程可以并发.但除了有些特殊限制的(比如游戏什么的防止多开,不过可以使用沙盒多开..)
- 结构化:进程是有结构的
-
进程是有状态的.为什么进程要有状态?进程有哪些状态?他们之间怎么转换?
- 进程状态是体现进程调度的一种状态,进程调度使得单CPU的系统并行变得可能
- 进程的状态有:
- new 创建一个进程,从静态到动态的过程,new 的程序不久会转为ready
- ready 进程已经就绪,只欠CPU的使用权了
- running ready的程序获得CPU使用权
- waiting 发生中断时,丢掉CPU使用权 由RUNING转来
- Terminated: 进程终止运行
- 进程在执行过程中,其状态在不断变化 变化
-
进程控制模块PCB:在操作系统内表示进程的方式
用于保存关于进程的相关信息,如进程的状态 PC 寄存器等,当发生中断时必须保存,用于继续进程
进程的调度
-
什么是进程的调度?为什么要进行线程的调度?
- 我们有很多想做的事情.于是我们创建了很多进程.但是CPU只有一个,而且进程不总是占用着CPU,他偶尔也会去进行IO操作.如何利用这时间,合理安排每个进程进入CPU的时间,这就是CPU调度
- 目的是CPU的利用率最大
-
如何实现CPU的调度?
首先操作系统有很多队列:- 就绪队列:处于就绪状态进程的队列, 短期调度程序从中选出一个进程使其获得CPU使用权,而关于 短期调度程序在第5章有详细解释
- 设备队列:如进程访问硬盘,但其他进程在访问硬盘,那么这个进程就要等了,他在等的位置就是设备队列
-
什么是短期调度程序?
- 上文中提到了短期调度程序,那么什么是短期调度程序?是不是有长期调度程序?中期调度程序?
首先解释什么是调度程序-
进程的生命周期是不断在各种队列中转换的过程,那么选择什么样的进程来转换呢?这就是调度程序的作用了
-
而上文中已经解释了 短期调度程序的作用了 我们再来谈一下中期调度程序,它是从硬盘中的进程(进程过大,无法完全保存在内存中.部分保存到硬盘中)加载到内存中
-
长期调度程序:selects which processes should be loaded into memory for execution.
-
长期调度程序还有一个十分重要的功能:进程大多分为CPU偏重或者IO偏重的,合理组合这两种进程可以最大化CPU使用率.这也是长期调度系统的作用
-
- 上文中提到了短期调度程序,那么什么是短期调度程序?是不是有长期调度程序?中期调度程序?
-
其他?
上下文切换,每次交换CPU使用权,操作系统总要进行一次上下文切换(上下文, 熟悉win32编程的的朋友可能知道)这是CPU在执行进程时候的状态,通常用PCB来保存)
进程的操作
- 额..好吧,这个题目还真是难问什么是"进程的操作"这样的问题的...进程的操作有哪些?如何操作?
- 进程的创建:
- 父进程创建子进程,如此循环生成进程树
- 系统创建有很多问题,如付进程子进程如何共享资源?子进程怎么执行?和父进程并行还是子进程先执行?地址空间如何分配呢?
- 用UNIX系统举例: fork() 产生新进程(复制原来的地址空间形成,并行执行),exec()使用fork()之后,用该函数加载新的地址空间(也就是创建了一个全新的进程)
- 继承的终止
- 使用系统调用exit()来结束
- 向父进程返回状态值
- 释放所有资源
- 父进程也可以结束其子进程
- 进程的创建:
进程间通信
- 进程间为什么要通信?如何实现?
-
首先.我们要明确,并不是所有进程都是要进行通信的,比如初学者写的大多数程序创建的进程都是没有通信的,这种程序叫做独立程序,否则叫做协作程序
-
通信有很多好处:
- 信息共享
- 提高运算速度
- 模块化
- 方便
-
消息船体有两种机制 共享内存 消息传递
-
共享内存方式:运行速度快,但要避免冲突,需要交流信息建立共享信息内存
-
消息传递系统:
- 什么是消息传递系统?有何优点?如何实现?
- 消息传递系统是用消息传递机制传递信息的系统
- 易于实现,但效率不高
- 需要两个进程间建立链路之后send()或者receive()信息就好
- 有直接或间接通信之分,有同步或异步之分,有自动或显示缓冲问题
- 什么是消息传递系统?有何优点?如何实现?
-
服务器-客户端交流
- 服务器-客户端交流有哪些方式?各有哪些优缺点?
-
SOCKET
- 在两个IP地址间建立连接,(包含端口号)
- 所有连接唯一
- 常用且高效
- 但是低级,只允许在通信线程间交换无结构字节流
-
远程过程调用(RPC):
- 这样的方式可以再远程调用程序中的某个函数(当然这首先需要发起方将函数名和参数传递过来),并将函数的返回值传递回去,这样的方式可以传递很多数据结构
-
远程方法调用RMI:
- 类似 RPC JAVA在住址类时允许类中含有远程方法
-
网友评论