编辑:这是基于我所阅读内容的定义的澄清。它与其他问题不同,因为我关于“CPU利用率的基本单位”
我目前正在大学学习操作系统课程,最近我们开始学习线程。
线程(基于我在教科书“操作系统概念”中读到的内容)被描述为“CPU利用率的基本单位”。如果它是“CPU利用率的基本单位”是什么意思
这是否意味着CPU 执行属于流程的一个或多个线程而不是“执行流程本身”?
答案 0 :(得分:0)
进程基本上是一组共享地址空间的线程。
每个线程代表一个独立的CPU执行线程,因此它有自己的执行上下文。对于抢占线程,这通常意味着一组完整的寄存器(包括程序计数器),因此每个线程都可以在需要时暂停和恢复。根据可用的处理器数量,可以在任何给定时间执行任意数量的线程。
答案 1 :(得分:0)
线程是一个执行指令流。拥有线程(Ada" tasks")的原因是能够同时执行多项操作(或者我应该说是一种做法多个事物同时发生。
您可以通过同时运行多个程序(传统的unix方法)同时执行多项操作。拥有线程的原因是它们允许更快的数据交换。同一进程中的线程可以共享相同的地址空间,允许通过内存进行数据交换(虽然这需要实现同步)。某些语言(如Ada)包含线程交换数据的安全机制。但是,大多数语言都是程序员为线程实现更改数据的安全方法。
您的问题的答案取决于实施。有两种实现线程的方法。
在这个模型中,操作系统对线程一无所知。该线程完全是过程本身的创建。
在此方法中,进程中一次只执行一个线程(交叉执行)。
在此模型中,进程由一个或多个线程共享的地址空间组成。在多处理器系统中,进程的线程可以并行执行。
上述两个模型之间的区别在于,在#1中,PROCESS是调度的基本单位。操作计划执行过程和过程在线程之间切换。该进程安排THREADS执行。
在#2中,THREAD是操作系统调度的基本单位。执行线程时,操作系统也必须加载进程地址空间。
- = - = - = - = - = - = - = - = - = - = - = - = - =
按照你所读到的"操作系统概念"带着一粒盐。 " CPU利用率的基本单位"是总的BS概念。那本书发明了与现实无关的概念。
答案 2 :(得分:0)
线程是进程的子集。
进程是一个活动程序。
程序通常包含各种指令。
这些指令的组形成线程,并且通常由CPU处理为一个块(单元)。
单个进程的线程共享相同的内存, 虽然两者的叠加是不同的。
CPU可以执行进程的一个线程,切换到另一个进程的另一个线程,然后执行剩余的线程。基本上是外行人的话, 线程就像一次处理的进程的一部分(CPU利用的基本单位)。
拥有线程的概念是为了获得最大的CPU利用率。
所以你上一个问题的答案是肯定的。