首页 > 系统相关 >程序、进程、线程

程序、进程、线程

时间:2022-10-31 17:34:47浏览次数:36  
标签:程序 通信 间通信 管道 线程 进程 共享


程序是静态的文件!

进程是程序的一次执行过程
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位!

进程=PCB + 程序段 + 相关数据段
注:PCB(Process Control Block)

进程具有:动态性、并发性、独立性、异步性、结构性

进程间通信常用三种高级通信方式:

  • 共享存储
  • 进程间共享一个(外部)存储空间,注意不是进程被分配的空间,因为进程的独立性。常用同步互斥工具(如:P操作,V操作)进行辅助
  • 消息传递
  • 直接通信方式:发送进程直接把消息发送给接收进程,将它挂在接收进程的消息缓冲队列上
  • 间接通信方式:发送进程把消息发送到某个中间实体中,接收进程从中取得消息。这种中间实体一般称为信箱,这种通信方式也叫信箱通信方式。
  • 管道通信:这是linux系统常用的一种方式。管道是一种特殊的文件,但是和一般的文件不一样。它的大小是有限制的,其作用是实现读写进程间的共享。即如果管道为空,则写进程可以将管道写满,然后读进程将其读空!值得注意的是,如果要写就一定要写满,如果要读就一定要读空。而且因此,管道只支持半双工通信。

引入了线程后,进程就只是拥有资源的最小单位,而线程则成了系统进行调度和分派的基本单位了。但是此时,进程仍然具有与执行相关的状态(创建、就绪、运行、阻塞、结束),而线程有三种基本状态(就绪、阻塞、运行)

线程是独立调度的基本单位,进程是拥有资源的基本单位
线程也有一点点很少的必不可少的资源,且多个线程共享这个进程的资源。
线程之间可以支持并发
线程切换只需要保存和设置少量寄存器内容,开销很小,且线程间同步和通信非常容易实现,甚至无需操作系统干预
某进程内的线程对其他进程不可见
进程间通信需要进程同步和护持手段的辅助,而线程间通信可以通过直接读写进程数据段(如全局变量)来进行通信。


标签:程序,通信,间通信,管道,线程,进程,共享
From: https://blog.51cto.com/u_15854687/5810536

相关文章

  • RAC 节点未加入集群 – 网格进程间通信 (GIPC)
    GIPC是用于节点间进程间通信的守护进程。这也支持冗余互连使用。GIPC守护进程(gipcd.bin)有一个端点'gipcha://nodename:xxx'。您可以在下面的日志条目中看到这一点。......
  • 程序员修炼之道:从小工到专家读后感
    这本书的适用范围可以从初学者到有经验的程序员再到项目经理,作为一本偏向理论与思想的书,书中不可避免有些假大空的地方,再加上作者写完本书的时间还在1999年,书中的很多方法......
  • 程序员修炼之道:从小工到专家读后感(x)
    在我们进行团队开发的时候需要注意不容忍破窗户-那些小小的无人修正的不完美的问题,质量是一个团队问题,如果一个人无论能力如何如果被派到不在乎质量的团队里,会发现自己......
  • 异步多线程解决界面卡顿问题
    异步多线程解决界面卡顿问题  点击button下载一个网页,并将网页的长度显示在textbox中。注意是将网页的长度显示在textbox中,而不是将下载的网页字符显示在textbox中,因......
  • java-线程-3
    /***线程的加入*1.解释:就是在一个线程A里面的run()方法调用另一个线程B;理论上两个线程是互相独立的*这个时候我使用B.join();这个时候,A线程会停下来,然后让B线程优先运行......
  • java-线程-5
    packageThread_main;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***java的礼让.yield()这里的礼让,有可能没有礼让,了......
  • java-线程-2
    /***两种使用Rannable实现进程的方法**@author小虎牙**/publicclassThread_2implementsRunnable{publicstaticvoidmain(String[]args){Threadt2=new......
  • java-线程-4
    packageThread_main;/***让线程有一个直接死亡的标志线程对象名.interrupt()*,调用线程类的interrupted方法,*其本质只是设置该线程的中断标志,将中断标志设置为true,并根......
  • centos7通过端口号杀死进程脚本
    #!/bin/sh#Killservicesofportnumber#检查用户是否输入端口号port=$1if[[$port==""]]thenecho"Pleaseinputportnumber!"exit8fi#查看当前端口是否有......
  • Python学习七:异常处理及调试程序
    文章目录​​一、异常概述​​​​二、异常处理语句​​​​2.1try...except​​​​2.2try...except...else​​​​2.3try...except...finally​​​​2.4......