博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些?
阅读量:1887 次
发布时间:2019-04-26

本文共 1359 字,大约阅读时间需要 4 分钟。

【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些?

1.进程与线程的区别是什么(高频)?

a.拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。

b.调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程的切换,从一个进程的线程切换到另一个进程中线程时,会引起进程切换。

c.系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备,所付出的开销远大于创建或撤销线程时的开销。 在进程进程切换时,涉及当前执行进程CPU环境的保存以及新调度进程CPU环境的设置,而线程切换时只需保存和设置少量寄存器内存,开销很小;

d.通信方法

线程间可以通过直接读写同一进程中的数据进行通信,但是进程间通信需要借助IPC。

2.进程状态的切换

就绪状态(ready):等待被调度

运行状态(running)

阻塞状态(waiting):等待资源

3.进程调度算法

不同环境的调度算法目标不同,因此需要针对不同环境来讨论调度算法;

批处理系统:

  • 先来先服务(按照请求顺序);
  • 短作业优先(按照运行时间最短的顺序调度);
  • 最短剩余时间优先(按照剩余运行时间调度顺序调度);

交互式系统:

  • 时间片轮转;
  • 优先级调度;

4.进程同步与进程通信

  • 进程同步:控制多个进程按一定顺序执行;
  • 进程通讯:进程间传输信息;

5.进程同步

  • 临界区: 对临界资源进行访问的那段代码被称为临界区;
  • 同步与互斥: 同步多个进程有一定的先后执行关系;互斥是多个进程在同一时刻只能有一个进程能进入临界区;
  • 信号量: 信号量是一个整型变量,可以对其执行down和up操作,即常见的P和V操作;
  • 管程: 使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来了。

哲学家就餐的问题,如何防止死锁的发生,可以设置两个条件:

  • 必须同时拿起左右两根筷子;
  • 只有在两个邻居都没有进餐的情况下才允许就餐;

6.进程通信(高频)

进程同步与进程通信很容易混淆,它们的区别在于:

  • 进程同步:控制多个进程按一定顺序执行;
  • 进程通信:进程间传输信息;

为了能够达到进程同步的目的,需要让进程间进行通信,传输一些进程同步所需要的信息;

a.管道

管道是通过调用pipe函数创建的,fd[0]用于读,fd[1]用于写;

  • 只支持半双工通信(单向交替传输);
  • 只能在父子进程或者兄弟进程中使用;

b.FIFO命名管道

也被称为命名管道,去除了管道只能在父子进程中使用的限制。常用于客户进程和服务器进程之间传递数据。

c.消息队列

相比较FIFO,消息队列:

  • 可以独立于读写进程存在;
  • 避免了FIFO的同步阻塞问题;
  • 读进程可以根据消息类型有选择地接收消息,而不像FIFO那样只能默认地接收。

d.信号量

它是一个计数器,用于为多个进程提供对共享数据对象的访问;

e.共享存储

允许多个进程共享一个给定的存储区,因为数据不需要在进程之间复制,所以这是最快的一种IPC;

f.套接字

与其它通信机制不同,它可用于不同机器间的进程通信;

相关问题对比:

进程通信:管道、FIFO、消息队列、共享存储、信号量、套接字

线程通信:共享变量、阻塞唤醒、管道

转载地址:http://lcwdf.baihongyu.com/

你可能感兴趣的文章
如何设计自己的第一个加密交易机器人?
查看>>
TKDE 2020 | 综述:基于知识图谱的推荐系统
查看>>
休息时间!哪些业余活动能提升开发人员的技能?
查看>>
事关人类生存?为什么要探寻AI系统的可解释性?
查看>>
安全工程师必知:常见Java漏洞有哪些?
查看>>
在后台的python:众多程序员无法攻克的难题
查看>>
国会大厦骚乱,与一家极不可靠的面部识别公司……
查看>>
电动汽车的“专属危险”:网络威胁问题不容小觑
查看>>
统治50年:为什么SQL在如今仍然很重要?
查看>>
测试是一场竞争,而数据每次都会获得胜利
查看>>
读心的测谎系统:究竟是骗子还是个天才?
查看>>
最大规模技术重建:数据库连接从15000个到100个以下
查看>>
复工之后:员工如何改善网络安全?
查看>>
70%求职者因此被拒,你还不避开这些“雷区”?!
查看>>
办法不在多,有用就行!用Dropout解决过度拟合问题
查看>>
色情演员识别?绝对是人脸识别最糟糕的应用……
查看>>
让强化学习逃离“乏味区域陷阱”,试着加点噪音吧!
查看>>
超详细Spring Boot面试问题集锦,死角一个不留!
查看>>
10个业余时间可完成的项目,助你飞速提升编码能力!
查看>>
网络爬虫初涉——用python爬取网络小说
查看>>