686-进程调度&进程通信&进程关系

进程调度

(1)进程调度由调度器实现
(2)所有进程运行时,都包含就绪态、执行态、阻塞态、终止态这些状态,每个进程参与调度时,都会在这些状态之间来回切换
(3)只有当进程进入执行态时,进程才会获得CPU的占有权
(4)进程运行的时间片到后就会调度其它进程运行,每个时间片平均在10ms~20ms左右。
(5)众多进程被调度示意图
图:进程调度图
686-进程调度&进程通信&进程关系_第1张图片

本机进程通信

(a)为什们要进行进程间通信
当多个进程协同工作时,需要通过进程间通信实现进程的同步协作,比如B进程的运行需要A进程提供某个数据,那么A进程就需要通过进程间通信,将数据传送给B进程,类似的,人与人协同工作时,也是需要通过通信实现协作的。
图:进程间通信图
686-进程调度&进程通信&进程关系_第2张图片

(b)进程间通信方式
信号、管道、共享内存、消息队列、Socket套接字等
(c)本机进程间通信与OS
其它通信在前面硬件篇通信部分就讲过,任何通信都是靠共有的第三方来进行数据转达,比如

  • 写信:信件是第三方,由信件传达数据
  • 说话方式:声波是共有的第三方,通过声波传达的数据
  • 打电话:电磁信号时共有的第三方,由电磁信号传达数据
    · 本机进程间通信
    本机进程间通信属于软件层面的通信,通信时需要第三方来转达信息(数据)的。
    - 本机进程间通信的第三方
    本机进程间通信的第三方就是OS,为了能够实现本机进程间的通信,OS提供的各种通信机制,就是信号、管道、共享内存、
    消息队列、Socket套接字等,进程双方可以共享这些OS提供机制,通过共享这些OS提供的第三方通信机制,实现数据的转达。
    图:进程间通信逻辑图
    686-进程调度&进程通信&进程关系_第3张图片

管道、共享内存等机制,实现通信的原理
OS提供的这些通信机制会在内存上开辟一片内存空间,专门用于进程间通信消息的存放,一个往里面存数据,另一个从里面取数据,就实现了通信。
图:
686-进程调度&进程通信&进程关系_第4张图片
缓存:在内存上开辟一段临时空间,临时存放数据,使用完,释放空间。

夸机进程间通信

其实就是网络通信,实现两台计算机上的程序之间的通信。

进程间的关系

(1)父子关系

(a)为什么存在父子关系
程序被加载运行在OS上时,需要一个进程辅助,那么这个辅助的进程就被称为它的父进程。
比如,如果B进程是A进程的辅助下被加载运行的,那么A进程就是B的父进程,说白了B进程是A进程生出来的,因此A才有B进程的父进程。
图:
686-进程调度&进程通信&进程关系_第5张图片

(b)父子关系有什么用
父进程很多的属性会被子进程继承,这些属性信息会被复制,然后存在子进程的PCB中。
(c)原始父进程
所有的程序被加载运行起来后,就演变为了进程,但是前面说到程序被加载运行在OS内核上时,需要一个父进程辅助加载运行,操作系统上所有的进程基本都是有父进程加载的,万事都有一个起点,所有的进程必然都有
一个共有对的原始父进程,其他都有的进程都是源于这个原始父进程被加载运行在OS上的。
图:
686-进程调度&进程通信&进程关系_第6张图片

(d)原始父进程怎么来的
OS内核启动起来后,内核会自动的去运行一个程序,这个程序是由开发系统的人开发的,这个程序被内核加载运行后,就得到了原始父进程,之后所有的99%的进程都是由这个原始父进程直接、或者间接加载运行而来,而不是由OS内核加载而来。

(e)Windows和Linux的原始父进城
Windows的原始父进程
Windows的原始父进程是桌面这个图形界面程序。
例子:比如打开画图程序,打开画图程序有两种方法,一种图形界面双击,另一种是cmd命令运行。
图:
686-进程调度&进程通信&进程关系_第7张图片

Ubuntu(Linux操作系统)
Ubuntu操作系统的内核是Linux,因此Ubuntu是属于Linux操作系统。
Linux内核启动起来后,会运行一个叫init的程序,这个程序是原始进程  
Ubuntu这边会比Windows情况复杂些,由于过程很复杂,我这里只介绍大致情况。
例子:在Ubuntu下通过图形界面和cmd命令行方式运行CodeBlocks程序,看看在这两种运行方式下,CodeBlocks程序的父进程是谁。
图:
686-进程调度&进程通信&进程关系_第8张图片
 686-进程调度&进程通信&进程关系_第9张图片

进程组关系

(a)什么是进程组关系
将有关联的众多进程组成一组,由其中一个进程担任组长,进程组内的各进程关系就是进程组关系。
(b)组关系作用
利用组关系区分不同进程对同一文件的操作权限
比如使用组关系,能够区分进程关系的亲疏远近,利用亲疏远近就可以区分众多进程对于某文件操作权限,打个比方,
就好比你的物品,你拥有最高使用权限,然后就是你的妻子、父母、孩子权限其次,再其次就是你的亲戚,使用权限会下一个等级,再其次就是朋友,再其次才是陌生人,一般说陌生人没有权限。
比如A进程创建了一个文件,

  • 权限最大者:那么A进程自己的操作权限显然是最高的,能读能写
  • 权限其次者:其次就是和自己一组的进程,但是权限会降低,比如只能读
  • 权限再其次者:那就是组以外的关系了,操作权限可能会再降一个等级。
    当然以上这些权限,当然是可以根据实际情况修改的。

区分文件操作权限的意义
文件内容保护
我们说通过组这种关系,就可以很好的区分出不同进程低对文件的操作权限,那么操作权限有什么作用?操作权限的目的就是为了保护文件,拥有最高权限的人才有权利读写文件,权限低的人就不能操作文件,这就是对文件保护,因为有些文件只能被某些相关进程访问,如果可以被任何一个进程随意访问的话,很可能造成文件内容被非法篡改,这是非常严重的。
举例子理解
这就好比国家机密文件,国家机密文件也是有操作权限的,只有某某级别的人才能阅读并修改这些问价,某某级别的人只能看文件,这些级别以下的人连看的资格也没有,如果人人都能看还叫什么机密文件呢。
(3)会话期:由多个进程组,组合而成

你可能感兴趣的:(操作系统和计算机网络,操作系统)