目录

1.进程控制的概念

2.进程的创建

3.进程间互斥与同步的概念

4.临界资源和临界区

5.同步机制应遵循的原则

6.信号量与P/V操作

7.生产者与消费者问题


1.进程控制的概念

进程由创建产生,由调度执行,由撤销消亡。

2.进程的创建

申请PCB空间,为新进程分配资源,把有关信息填入PCB,将PCB插入就绪队列中。

3.进程间互斥与同步的概念

因直接制约关系(各个程序段要求共享信息)而需要相互等待,相互合作,以达到各进程相互协调而执行的过程称为同步。

因间接制约关系(各个程序竞争使用同一个资源)而导致进程交替执行的过程称为互斥。

  • 同步:多个进程按一定顺序执行;
  • 互斥:多个进程在同一时刻只有一个进程能进入临界区。

4.临界资源和临界区

把某段时间只允许一个程序使用的资源称为临界资源。

把访问临界资源的代码段称为临界区。

5.同步机制应遵循的原则

空闲让进 忙则等待 有限等待 让权等待

6.信号量与P/V操作

信号量:表示临界资源可用的数目。

P/V操作:在信号量上定义了两个操作P原语和V原语。该信号量的值只能被P/V修改且不可被中断。

信号量(Semaphore)是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。

  • down : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0;
  • up :对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。

down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。

如果信号量的取值只能为 0 或者 1,那么就成为了 互斥量(Mutex) ,0 表示临界区已经加锁,1 表示临界区解锁。

7.生产者与消费者问题

问题分析:

同步关系:直接制约关系。

当生产者速度大于消费者时,生产者会阻塞,等消费者消费后才能继续生产产品。

互斥关系:直接制约关系。

缓冲池中只能由消费者或生产者其中之一使用。

设变量:

设 mutex 公有信号量 初值为1 用于实现临界区互斥

设 empty 生产者私有信号量 初值为n 表示空缓冲区数目

设 full 生产者私有信号量 初值为0 表示满缓冲区数目

设 整型 i , j 分别为空缓冲区的头指针和满缓冲区的头指针

注:p操作顺序不可颠倒。

代码:

semaphore mutex = 1;
semaphore empty = n;
semaphore full  = 0;
int i = 0;
int j = 0;
void P(){while(1){produce next product;p(empty);p(mutex);buf[i] = product;i=(i+1)%n;v(full);v(mutex);}
}
void C(){while(1){p(full);p(mutex);product = buf[j];j=(j+1)%n;v(empty);v(mutex);consume product;}
}
int main(){parbegin(p(),c());
}

操作系统_进程管理_进程的控制与同步相关推荐

  1. (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...

  2. (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...

  3. (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题

    注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...

  4. 广州大学2020操作系统实验一:进程管理与进程通信

    相关资料 广州大学2020操作系统实验一:进程管理与进程通信 广州大学2020操作系统实验二:银行家算法 广州大学2020操作系统实验三:内存管理 广州大学2020操作系统实验四:文件系统 广州大学2 ...

  5. 【k8s】理解Docker容器的进程管理(PID1进程(容器内kill命令无法杀死)、进程信号处理、僵尸进程)

    文章目录 概述 1. 容器的PID namespace(名空间) 2. 如何指明容器PID1进程 3. 进程信号处理 4. 孤儿进程与僵尸进程管理 5. 进程监控 6. 总结 参考 概述 简介: Do ...

  6. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  7. [转]QNX进程管理器-进程调度策略

    如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意 声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正 锋影 email:1741 ...

  8. 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...

    系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...

  9. linux ps 进程组,linux进程管理(2)---进程的组织结构

    一.目的 linux为了不同的进程管理目的,使用了不同的方法组织进程之间的关系,为了体现父子关系,使用了"树形"图:为了对同一信号量统一处理,使用了进程组:为了快速查找某个进程,使 ...

  10. Linux 进程管理之进程的终结

    当一个进程终结时,内核必须释放掉它所占有的资源并把这一终结事件告知父进程. 进程的终结大部分都要靠 exit() 来完成的,最终的系统调用为 do_exit(). asmlinkage long sy ...

最新文章

  1. 免费获取验证码60秒倒计时
  2. Java:Random.nextInt()
  3. 游客显示的html代码,html5游客总数柱状图代码
  4. 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件
  5. SpringCloud-服务的消费者(rest+ribbon)
  6. mmap java_Java文件映射[Mmap]揭秘 | 学步园
  7. ubantu网络调试助手的安装以及打开
  8. Flutter 图片透明度(光暗程度)
  9. win7 共享计算机 网络密码怎么设置,Win7无线网络共享设置方法丨Win7无线网络共享设置方法图解...
  10. UE5 tiles 材质缩放平铺
  11. 泰山杯练习平台部分题目wp
  12. PMO和PM如何准备项目状态报告及进行项目进度汇报?【附项目状态表和进度跟踪表】
  13. 多元统计分析及R语言建模(第五版)——第3章多元数据的直观表示课后习题
  14. 计算机经典书籍电子书合集
  15. C语言程序设计期末考试A卷,C语言程序设计(B)期末考试A卷-试卷.doc
  16. 它来了!Flutter3.0新特性全接触
  17. L1-040. 最佳情侣身高差
  18. 【线性代数】正交向量与正交子空间
  19. Parsing error: No Babel config file detected for
  20. 转载-Android EventLog含义

热门文章

  1. JS--你没玩过的激流勇进
  2. 抓取主板市盈率,市净率和股息率
  3. JDK有BUG!!!
  4. S君 被父母毁掉的一生 r瓴
  5. vue3中对对象增添属性也会加入到响应式
  6. unity 等待...动画_介绍Unity 2019.1的动画索具预览包
  7. 理光打印机MP 3054 SP苹果电脑MAC驱动
  8. 基本组网-(适用场景:一般家庭网络、微型企业网络、20人以内)、基础知识、设备知识、运营商选择、设备选择、设备配置
  9. fastapi、flask和tornado对获取请求IP的探索
  10. Kotlin学习(一):Kotlin基础知识