Process 一个程序可以有多个进程吗?

Process 一个程序可以有多个进程吗?,process,operating-system,Process,Operating System,在阅读和搜索了有关操作系统、进程和线程的内容后,我在wiki上查看了一下,它说 计算机程序是被动的 指令的收集、过程 这是实际执行的 说明书可能需要几个过程 与同一程序相关联;对于 例如,打开几个实例 同一个节目通常意味着更多 正在执行多个进程 现在一个程序是否可能有多个进程,我不包括运行同一程序的多个实例的可能性。我的意思是一个程序的一个实例正在运行,一个程序有可能有多个进程吗? 如果是,如何进行?若否,原因为何 我是这方面的新手,但他妈的好奇:) 感谢您的帮助。是的,非常明显-您可以运行大多

在阅读和搜索了有关操作系统、进程和线程的内容后,我在wiki上查看了一下,它说

计算机程序是被动的 指令的收集、过程 这是实际执行的 说明书可能需要几个过程 与同一程序相关联;对于 例如,打开几个实例 同一个节目通常意味着更多 正在执行多个进程

现在一个程序是否可能有多个进程,我不包括运行同一程序的多个实例的可能性。我的意思是一个程序的一个实例正在运行,一个程序有可能有多个进程吗? 如果是,如何进行?若否,原因为何

我是这方面的新手,但他妈的好奇:)
感谢您的帮助。

是的,非常明显-您可以运行大多数程序的两个或多个副本-我通常会运行大约5个vim副本,每个副本都是一个单独的进程。至于如何,操作系统加载可执行文件,创建一个进程,然后告诉该进程开始执行文件内容。

这是完全可能的,但桌面应用程序可能不是一个好例子,我认为这是您困惑的根源

请考虑使用Web服务器(NginX或Apache)。工作时有一个主进程和多个工作进程。可以说,主流程“接受”工作,并将其委托给工人。NginX和Apache都可以配置为任意数量的工作进程


在我们公司,我们的业务是提供SaaS,帮助企业通过其网站与访问者进行在线聊天。我们系统的后端部分有多个“服务”E相互通信以完成任务。每个服务都有多个运行实例。

我在上面提到过,我不包括您希望运行多个程序实例的情况。我的意思是程序的一个实例可以在多个进程中运行吗?我在这里有点困惑。对不起,如果我在这里错了,但我需要清楚地理解我正在阅读的内容,因此问题。。。好的,让我换一种说法,如果im运行,比如说firefox,它有两个选项卡,firefox是否在一个进程中运行,两个选项卡作为一个单独的进程创建,它们与firefox进程通信,每个进程内部都有自己的线程,或者firefox的一个完整进程正在运行,而两个选项卡都在单独的线程中运行…?一个进程,可能(也可能不是)两个线程。如果您在windows上,您可以使用process explorer(或linux上的ps)之类的工具查看到底发生了什么。是的,由程序员决定一个进程应该生成子进程(或线程)。@mayjune:在firefox示例中,当您打开多个选项卡时,不创建多个firefox进程,但如果使用google chrome,当您打开多个选项卡时,会创建多个进程。因此,这取决于您正在使用的程序,它是生成线程还是创建新进程。不能在windows上创建2个VLC player实例,但可以在Linux上创建。因此,这取决于程序员实际上是如何编制程序的。实际上,从一个程序实例创建多个程序非常简单。请参阅C语言中的
fork()
函数。但这些是多进程还是多线程?@user1在这个特定示例(我们的WIN系统)中,是多进程,每个进程都是单线程的。可以通过单进程和多线程(而不是多个单线程进程)以及多个进程(每个进程都是多线程的)来实现相同的功能。@user1在我最近的公司中,我们有一个庞大的micro services应用程序。有些服务只有一个实例在运行,但该实例是多线程的(Akka、ZIO或cats effect。我们都有它们,有时组合使用),有些服务有两个实例在运行(每个实例都是多线程的)。此外,我们在这些服务中有一些必须是单例的功能,因此我们采取措施确保运行服务的多个实例中只有一个通过zookeeper leader选举机制执行特定功能。希望这有帮助。