首页 > 系统相关 >进程管理

进程管理

时间:2023-08-21 22:56:23浏览次数:34  
标签:管理 队列 管道 线程 内核 进程 资源

进程、线程、协程的区别:
资源分配的基本单位 资源调度的基本单位 轻量级的线程
切换 页表、栈等 程序计数器、栈、寄存器等 栈和寄存器 切换代价越来越小
协程不用进入内核态,在用户态。它两陷入内核态的原因:进入内核态保存上下文信息。

进程的通信方式

管道:通信方式是效率低的,因此管道不适合进程间频繁地交换数据。

  • 管道类型
    • 有名管道:mkfifo myPipe
    • 匿名管道:int pipe(int fd[2]),这里只创建了一个管道,一个是管道的读取端描述符 fd[0],另一个是管道的写入端描述符 fd[1]。
      fd[2]一般用于父子进程之间的通信。
      • ps auxf | grep mysql:shell创建了两个子进程,然后使用管道来在子进程中传递消息。
  • 管道传输数据是单向的,如果想相互通信,我们需要创建两个管道才行。写入管道以后,数据就保存在管道中,等待读取。
  • 所谓的管道,就是内核里面的一串缓存。从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。

消息队列:

  • 消息队列是保存在内核中的消息链表,消息体是用户自定义的数据类型。
  • 与管道通信的区别:
    • 管道通信为无格式的字节流,消息队列为自定义数据类型。
    • 消息队列可以为非阻塞,在消息队列为空或已满时进行等待,也可以选择立即返回。如果管道中没有数据则会阻塞。
    • 如果没有释放消息队列或者没有关闭操作系统,消息队列会一直存在。管道数据随着进程的消失而消失。
  • 缺点:队列有大小限制、存在用户态与内核态之间的数据拷贝开销。

共享内存:消息队列和管道都会有发生用户态与内核态之间的消息拷贝过程。

  • 共享内存的机制,就是拿出一块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写入的东西,另外一个进程马上就能看到了,都不需要拷贝来拷贝去,传来传去,大大提高了进程间通信的速度。

信号量:信号量用于防止多进程竞争共享资源,如共享内存。

  • P操作:减一
  • V操作:加一
  • 信号量小于零代表有阻塞进程。
  • 信号量可以用于互斥访问资源,以及控制进程的执行顺序(同步)。

信号:如ctrl+c杀死进程。当然我们可以自定义信号的处理函数。

socket:用于不同机器上进程之间的通信。

死锁

死锁的四个条件(必要条件):

  • 互斥条件:同一时间资源只能被一个线程拥有。
  • 持有并等待条件:持有一个资源,等待另一个资源
  • 不可剥夺条件:只能等待其他线程释放资源,不能直接剥夺其他线程资源
  • 环路等待条件:形成了等待环路,在两个线程中就是互相等待。

破坏上述必要条件就可以防止死锁,常用的方法有使用资源有序分配法,来破环环路等待条件

  • 银行家算法防止进入不安全的状态:知道所有进程所需的资源种类和数目,然后构造出进程运行顺序,保证所有进程在前面进程释放资源以后,可以获取到所需的资源。视频
  • 画出资源分配图,然后看是否除去所有的边,即所有进程的资源请求是否都能被满足。视频

标签:管理,队列,管道,线程,内核,进程,资源
From: https://www.cnblogs.com/codingbigdog/p/17647190.html

相关文章

  • 模拟Linux文件管理员系统-shell实现
    模拟Linux文件管理员系统-shell实现注:此脚本仅供学习使用,具体需要根据实际情况进行测试调整。1系统要求2脚本执行效果2.1管理员登录效果2.2普通用户登录效果2.3密码文件格式用空格隔开,从左往右依次为:用户名密码是否为管理员(1为管理员0为普通用户)是否被锁定(1......
  • 安装企业级wiki管理工具
    安装企业级wiki管理工具Confluence是一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。Confluence不是一个开源软件,非商业用途可以免费使用。Confluence使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息,文档协作,集体讨......
  • OS(三):进程管理之进程的控制
    控制进程的程序段,进程控制一般是由OS的内核中的原语来实现的。原语是不可再分的原子操作(ActionOperation),执行过程中不会被打断。1、原语2.1、原语概念原语的概念:由若干条指令组成,完成特定的功能,是一种原子操作(ActionOperation)。2.2、原语特点原语的特点:原子......
  • OS(二):进程管理的基本概念
    进程是资源分配和独立运行的基本单位。引入进程的目的在于,使多道程序并发执行,提高系统的资源利用率和吞吐量;而引入线程,是为了减少程序在并发时的时空开销,提高系统的并发性,线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。1、进程的定义与特征1.1、定......
  • 逆向 | 简单调试器检测&调试器进程检测、虚拟机进程检测、启动路径检测、计算机名检测
    逆向|简单调试器进程检测、虚拟机进程检测、启动路径检测、计算机名检测写在自己书里的代码,丢一份到blog。简单调试器检测:#include<stdio.h>#include<windows.h>//定义枚举值constintProcessDebugPort=0x7;constintProcessDebugObjectHandle=0x1e;constint......
  • 企业级即时通讯协作和移动应用管理平台哪个品牌好?
    在竞争激烈的商业环境下,高效的企业通讯和协作变得至关重要。WorkPlus作为领先的品牌,专注于提供企业级即时通讯协作和移动应用管理平台。本文将介绍WorkPlus如何成为企业实现协同工作、高效沟通和流程管理的理想解决方案。一、全面协作加速工作流程:WorkPlus的企业级即时通讯协作和移......
  • openGauss学习笔记-46 openGauss 高级数据管理-子查询
    openGauss学习笔记-46openGauss高级数据管理-子查询子查询或称为内部查询,嵌套查询,指的是在数据库查询的WHERE子句中嵌入查询语句,相当于临时表。一个SELECT语句的查询结果能够作为另一个语句的输入值。子查询可以与SELECT,INSERT,UPDATE和DELETE语句一起使用。以下是子查询必须遵......
  • 12.进程控制
    12.进程控制1.学习目标了解进程相关的概念掌握fork/getpid/getppid函数的使用熟练掌握ps/kill命令的使用熟练掌握execl/execlp函数的使用说出什么是孤儿进程什么是僵尸进程熟练掌握wait函数的使用熟练掌握waitpid函数的使用2.进程相关概念2.1程序和进......
  • linux上SQL Server 配置管理器的使用
    概述我们知道Windows平台上的SQLServer配置管理器是一个图形工具,用于管理与SQLServer关联的服务、配置SQLServer使用的网络协议以及管理SQLServer客户端计算机的网络连接配置。我们还可以使用SQLServer配置管理器来启动、暂停、恢复或停止服务,查看服务属性或更改服务......
  • Ubuntu使用apt管理安装软件包
    一、apt简介        apt是AdvancedPackagingTool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令可用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具。  二、apt管理软件包的相关命令sudoapt-getupdate  更新源 ......