首页 > 编程知识 正文

程序运行一定有线程吗,如何看一个进程有多少线程

时间:2023-05-03 13:27:37 阅读:163228 作者:3799

进程和线程进程的基本程序的逐次执行程序的同时执行汇总进程的定义进程的状态及其转换进程的执行模式进程控制进程切换进程的创建:进程通过创建原语来实现创建新进程的进程块在线程和进程或线程启动相关的其他技术写入期间复制线程池进程之间的远程通信套接字(套接字)远程过程调用

的基本程序的依次执行

处理器严格按照程序规定的顺序运行,当前指令结束后才开始执行下一个指令。

系统的所有资源将独占此程序,直到执行结束。 依次执行的程序具有顺序性、封闭性、再现性的特征。

在同时执行程序的多个编程系统中,多个程序同时执行,它们共享资源,但由于资源的有限,多个程序的同时执行过程必然伴随着资源的共享和竞争,同时执行的各程序有可能被其他程序约束。

汇总同时执行程序时,由于失去了封闭性,为了使程序执行的结果与程序的速度有关,而程序向前推进的速度是随机并且不可控的,其结果不再具有可再现性同时执行的程序具有再现性,必须管理、制约同时执行的程序和你的关系,控制其执行速度操作系统需要描述程序的执行过程以及共享资源的基本单位。 该基本单元可将运行的程序的示例指派给处理器,该程序定义进程进程,其中处理器运行的任何示例或计算可与另一计算同时执行是系统进行资源分配和调度的独立单元进程之一,系统分配资源和调度的基本单元操作系统通过进程控制块PCB感知进程的存在

可执行的程序数据(程序数据、用户堆栈和可修改的程序),系统栈

进程状态及其转变

的执行模式处理器的执行模式分为系统状态和用户状态

进程控制块PCB,也称为控制状态或内核状态,具有控制处理器和所有指令、寄存器和内存的能力。系统态:只能执行指定的命令,访问指定寄存器和存储器的系统进程在系统状态下执行。 用户进程以用户状态运行,无法执行操作系统指令或访问系统空间。 因此,可以保护操作系统免受用户程序的影响。

“程序状态”字包含表示处理器执行模式的位,该位的更改将设置执行模式。

进程控制进程切换进程切换是指一个正在运行的进程被中断,操作系统将另一个进程指定为运行状态,并将控制权传递给该进程。

用户态

中断:时钟中断(基于时间片的计划)和I/O中断陷阱)与当前运行的进程出现的错误或异常相关的系统调用)切换到操作系统进程并请求系统调用的进程处于阻塞状态引起进程切换的事件:

保存处理器上下文环境更新当前运行进程的PCB将进程控制块移动到相应的队列中。 (阻止队列或就绪队列)选择另一个进程运行。 )进程调度)更新选定进程的PCB。 例如,创建一个处理器上下文进程,其中状态已就绪,准备运行以重新启动选定进程(该进程通过创建基元创建新进程)

进程阻止和唤醒会导致进程阻止和唤醒的事件包括

要求系统服务开始某种操作,使新数据等待新的工作

如果进程被阻止,请执行以下步骤停止运行,更改PCB状态为“阻止”,然后将进程插入块队列。 如果系统具有多个不同原因的阻止队列,请将进程插入到同一原因的阻止队列中并进行调度,以完成进程切换。 维护被阻止进程的处理器状态和PCB,移至OS调度程序,选择准备完毕进程并分配处理器,根据新进程的PCB的处理器状态设定CPU环境,完成进程的切换。

启动进程时,必须从等待该事件的阻塞对列中删除被阻塞的进程,启动原语将进程从外部存储器调用到内存,将PCB的当前状态从阻塞更改为就绪,然后将PCB插入就绪队列如果采用的是抢占调度策略,请检查每次新进程进入就绪队列时是否都需要重新调度。 这意味着将唤醒的进程与当前进程的优先级进行比较,以确定处理器所属。 线程也称为写进程,在部署了线程的系统中,线程是可以独立执行和调度的基本单元,但不再是具有资源的独立单元。 他只有少量执行所需的资源,如程序计数器、寄存器和堆栈集。 可以共享属于同一进程的线程以及该进程拥有的所有资源。

进程切换时的动作:

根据实现方式的不同,可以将线程分为以下两类:

内核级线程

线程管理的所有工作都由内核完成。 用户使用操作系统为APP应用程序提供的APP化zjdmj编程接口API执行进程管理用户级线程

线程管理的所有工作都在传统的进程等效于只有一个线程的进程中进行,内核不知道线程的存在,内核以进程为单位进行调度。 操作系统使用户统一线程库的配对线

程进行操作


与进程或线程相关的其它技术 写时拷贝

父进程创建子进程时,最初父子进程共享内存空间等到子进程修改数据时,再分配内存空间,这是对程序性能的优化,可以延迟甚至是避免内存拷贝,当然目的就是避免不必要的内存拷贝

线程池

线程池的出现正是着眼于减少管理线程的开销而产生的技术。

线程池采用预创建的技术,在应用程序启动之后,将立即创建一定数量的线程(N个),放入空闲队列中。当任务到来后,缓冲池选择一个空闲线程,把任务分配给此线程运行。在任务执行完毕后线程也不退出,而是继续保持等待下一次的任务。
进程间的远程通信 套接字(Socket)

Socket就想一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被多个进程占用,而我们建立连接就像是把插头插在这个插座上,创建一个Socket实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP地址和端口”,我就接通谁

Socket可以定义为通信的端点,一对通过网络通信的进程需要使用一对套接字,其中一个运行于客户端,称为Socket 另一个运行于服务器端成为ServerSocket服务器通过监听指定端口来等待进来的客户机请求。


远程过程调用

远程调用简称RPC,是一种最为常见的远程服务。RPC对于通过网络连接系统之间的过程调用进行了抽象。它在许多方面都类似IPC机制,并且通常建立在IPC之上

远程方法调用(Remote Method Invocation,RMI)是Java在JDK1.1中实现的,它大大增强了JAVA开发式分布式应用的能力
RMI能够让在客户端JAVA虚拟机上的对象像调用本地对象一样调用服务端java虚拟机中对象上的方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。