如果我没有上过关于硬件或操作系统主题的大学课程--我只是试着去看一些youtube视频和一些关于它的在线文章(没有取得显著的成功);有人可以解释我什么是执行环境?我学习Java,现在开始多线程。在Oracle教程中,我发现了进程和线程的定义:“进程和线程都提供了执行环境”。问题是我真的不明白这意味着什么。
发布于 2022-10-14 18:04:56
在这个上下文中,“执行环境”是指代码可以在其中执行(运行)的上下文。进程可以并行使用多个线程。线程一次执行单个代码堆栈。
这是一个严重的过度简化,但希望你明白了。
发布于 2022-10-31 23:32:54
“执行环境”( 'Execution )或“环境”(Environment)这两个词都超负荷。在不同的背景下,它们被用来表达不同的意思。
在一个软件系统中有许多抽象层。每一层都依赖于从底层直接到底层的事物,以及从更深层次的现实中抽象出来的东西。例如,计算机从根本上依赖于物理。因此,在底部,有物理学。除了物理学之外,还有晶体管。除了晶体管,还有逻辑门。在逻辑门的顶部,有逻辑电路。除此之外,还有微观架构,还有体系结构(指令集、寄存器等)。除此之外,还有使用该体系结构编写的软件。软件又分为操作系统和应用程序。操作系统和应用程序本身就有分层的部件。
所以,一切都取决于其他的东西。其他的东西叫做环境。换句话说,你的部分没有实现,而是取决于所谓的“环境”。
OS是应用程序的环境,因为当应用程序执行I/O时,它们通过进行系统调用来使用操作系统提供的功能。
大多数平台,如JAVA或C++运行时,进一步为应用程序提供功能。因此,它们也被称为环境的一种形式。
在进程和线程的上下文中,这些事情可以说.
操作系统不会一次运行一个程序来提高硬件利用率。(当代码运行时,可能会因为几个原因而阻塞,而在此期间,OS运行另一个程序)。此外,还有一种叫做“分时”的方法,即操作系统在有限的时间内将CPU分配给不同的程序,并停止/继续执行程序。
为了做到这一点,OS通过一个名为“process”的抽象来隔离特定的程序执行实例。通过这样做,它为程序提供了一个他们可以使用的“环境”,而无需考虑其他程序的运行。(通过进程隔离运行程序)
例如,在进程中运行的程序代码无法读取写入分配给另一个进程的内存的数据。
线程在某种程度上类似于进程。他们分享他们属于的过程的记忆。也就是说,它们共享进程的堆空间,但是它们有独立的堆栈。因为它们有独立的堆栈,所以它们可能位于同一代码的不同部分。从堆栈中,它们具有对共享堆的引用,这使得它们能够比进程间通信方式更有效地进行通信。
总之,所有您正在隐式或显式地受益但您没有实现的东西都被称为“环境”。
https://stackoverflow.com/questions/74071854
复制相似问题