操作系统学习笔记(Part four)

£可爱£侵袭症+ 提交于 2020-02-04 14:32:02

4.0进程管理

4.1进程概念

4.1.1进程的基本概念

进程是一个动态的概念,是个过程。

 

还有其他的分类标准(...)

4.1.2进程状态

阻塞状态也是等待状态(Wait)

 

 

 

4.1.3进程控制块

 

 

state:用来描述进程的状态:运行、就绪、阻塞

counter:进程还可以运行tick数量,减至0后进入就绪

priority:进程优先级

pid,uid,gid:和进程的标识有关

p_pptr:和进程家族关系有关

next_task:和进程链表,方便操作系统遍历进程

 

mm:和内存有关

fs:和文件系统有关

policy:和进程调度策略有关

 

 

 

4.2进程控制

4.2.1进程控制概念

 

 

 

 

4.2.2Windows进程控制

 

上述三个函数对CreateProcess一定程度上有一定的封装

IpStartupInfo :启动信息,设置初启的状态的

IpProcessInformation :输出参数

 

应用例子:

第一个方式比较温和

第二关方式非常暴力 强制结束

4.2.3Linux进程控制

子进程是父进程的复制。

唯一差别是ID与时间有关的信息不一样。

fork创建了子进程

父进程和子进程并发运行

所以输出来两个HELLO WORLD!

在父进程执行一次,子进程也会执行一次。

父进程的pid就是子进程的ID

父进程和子进程谁先输出不得而知

从绿色箭头处开始并发

在Linux中,除了init,其他所有进程都由fork函数来创建。

init函数是所有函数的主线,其他的任何进程都由fork来创建

在创建进程的时候,通常会调用exec函数簇

 

一共有六个函数,前五个都是对第六个的一定程度的封装。

4.3.1线程的概念

1.线程是可由CPU直接运行的实体。

2.一个进程可以创建多个线程。

3.多个线程共享CPU可以实现并发运行。

4.3.2线程的典型应用场景

1.实现在线看电影

并发功能:视频解码,音频解码,网络接收...

每个功能都创建为一个线程,从而实现多功能的并发。

解决办法:把“后台计算”函数创建为“线程”。

4.4.1临界区和临界资源

在并发环境下,可能出现三种结果,导致错误

这样做确保了,答案的正确,把这个区域叫做临界区。

临界区不能太大也不能太小。

4.4.2锁机制

上述代码称为上锁原语。

4.5.1同步和互斥的概念

两者的动作之间有相应的关联。

互斥关系属于特殊的同步关系。(互斥属于同步的一种)

4.5.2P-V操作的概念

信号灯概念

 

 

V操作可能唤醒阻塞的进程。

4.5.3P-V操作解决互斥问题

4.5.4P-V操作解决同步问题

4.5.5经典的同步问题

4.6.1Windows同步机制

错误代码:

正确代码:

4.6.2Linux父子进程同步

4.7.1匿名管道通信

4.7.2Linux信号通信

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!