前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】软考中级-软件设计师 026-操作系统(进程管理-信号量PV操作)

【愚公系列】软考中级-软件设计师 026-操作系统(进程管理-信号量PV操作)

原创
作者头像
愚公搬代码
发布2024-02-07 23:08:09
1590
发布2024-02-07 23:08:09
举报

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

操作系统中的进程是指正在运行的程序的实例。每个进程都有自己的地址空间、数据和代码。进程是操作系统进行资源分配和调度的基本单位。

每个进程都由操作系统维护,并被分配一个唯一的进程标识符(PID)。操作系统利用进程控制块(PCB)来记录和管理各个进程的状态信息,包括进程的优先级、执行状态、寄存器值、分配给进程的资源等。

操作系统通过调度算法来决定进程的运行顺序。调度算法可以根据进程的优先级、时间片轮转、最短作业优先等策略来进行选择。

进程可以通过进程间通信(IPC)来进行相互之间的数据交换和协作。常见的进程间通信机制包括管道、消息队列、共享内存和信号量等。

进程可以存在多个状态,包括运行态、就绪态、阻塞态等。进程可以通过系统调用来进行状态的转换和操作,比如创建新的进程、终止进程、挂起和恢复进程等。

操作系统中的进程管理功能包括进程的创建、终止、调度、同步和通信等。进程的管理和调度是操作系统的重要任务,它能够提高系统的资源利用率和系统的响应速度。

🚀一、进程管理-信号量PV操作

🔎1.同步与互斥

术语

描述

互斥

某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机。

同步

多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。

临界资源

各进程间需要以互斥方式对其进行访问的资源。

临界区

指进程中对临界资源实施操作的那段程序。本质是一段程序代码。

互斥信号量

对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。

同步信号量

对共享资源的访问控制,初值一般是共享资源的数量。

🔎2.信号量

进程中的信号量是一种用于同步和互斥访问共享资源的机制。它是一个计数器,可以被多个进程共享,并且可以通过两个基本操作来操作它:P(等待)和V(释放)。

信号量的PV操作是信号量的两个基本操作,用于实现进程之间的同步和互斥。

P操作(等待操作):

  1. 如果信号量的值大于0,表示资源可用,进程可以继续执行,将信号量的值减1。
  2. 如果信号量的值等于0,表示资源不可用,进程将被阻塞,直到资源可用。

V操作(释放操作):

  1. 将信号量的值加1。
  2. 如果有其他进程因为等待资源而被阻塞,将其中一个被阻塞的进程唤醒。

利用P操作和V操作,可以实现对共享资源的互斥访问。例如,在进入临界区之前先执行P操作,退出临界区后执行V操作,这样可以确保在同一时间内仅有一个进程可以进入临界区。

此外,P操作和V操作还可用于实现进程之间的同步,例如在生产者消费者问题中,生产者在放置数据之前执行P操作,消费者在获取数据之前执行P操作,这样可以确保生产者和消费者之间的顺序执行。

🔎3.生产者和消费者

生产者消费者问题是一个经典的进程同步问题,描述了多个生产者和消费者共享一个有限缓冲区的情况。

在生产者消费者问题中,生产者负责将数据放入缓冲区,而消费者负责从缓冲区中取出数据。缓冲区有一定的容量,当缓冲区已满时,生产者必须等待,当缓冲区为空时,消费者必须等待。

为了实现生产者和消费者的同步,可以使用信号量或互斥锁来解决问题。以下是一种常见的实现方式:

  1. 定义一个缓冲区,以及缓冲区的容量。
  2. 定义一个互斥锁(mutex)来保护对缓冲区的访问。
  3. 定义两个信号量:一个表示缓冲区的空槽数量,一个表示缓冲区的满槽数量。
  4. 生产者进程执行以下步骤:
    • 等待空槽信号量,如果缓冲区已满则等待。
    • 获取互斥锁,保护对缓冲区的访问。
    • 将数据放入缓冲区。
    • 释放互斥锁。
    • 增加满槽信号量。
  5. 消费者进程执行以下步骤:
    • 等待满槽信号量,如果缓冲区为空则等待。
    • 获取互斥锁,保护对缓冲区的访问。
    • 从缓冲区取出数据。
    • 释放互斥锁。
    • 增加空槽信号量。

通过使用互斥锁和信号量来控制生产者和消费者的访问,可以确保数据的正确性和同步。但需要注意的是,在实现过程中需要处理好各种边界条件,以避免死锁或竞争条件的发生。


我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀前言
  • 🚀一、进程管理-信号量PV操作
    • 🔎1.同步与互斥
      • 🔎2.信号量
        • 🔎3.生产者和消费者
        相关产品与服务
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档