当前位置:首页 > 内存 > 正文

阻塞态在内存还是外存

  • 内存
  • 2024-05-31 21:58:44
  • 5402

一、阻塞:(被动)挂起(主动)睡眠(主动)普通精华:
阻挡:(被动)
挂(主动)
睡眠(主动)
普通精华:
执行进程/线程会因为某种原因(主动或被动)释放CPU并暂停执行
(这里讨论的是所有处于运行状态的进程。/Thread)
阻塞:(被动)
线程/暂停被动执行,被阻塞的进程保留在内存中,操作系统将处理器分配给另一个就绪进程,并将挂起的进程留在内存中。暂停状态。
(自动)阻塞恢复:只有满足等待资源(例如获取锁)后,才进入就绪状态,等待被调度执行。
阻塞原因:
进程:进程发出了系统服务请求(例如I/O操作),但由于什么原因没有收到立即响应?除其他原因外,来自系统操作员或从其他协作过程获得的必要数据尚未到达。
主题:线程锁定问题。
挂起(主动)
用户主动暂停线程/流执行,并将挂起的进程交换到外部内存(磁盘)。
暂停恢复:需要主动的用户控制,线程暂停时不会释放对象锁。
暂停原因:
最终用户请求。当最终用户在自己的程序运行中发现可疑问题时,他们希望停止自己的程序来预防这些问题。即暂停执行进程的执行;如果用户进程处于就绪状态,但此时没有执行,则暂时不接受调度,以便用户可以在那里研究执行情况或修改进程。程序。我们将这种静态状态称为“暂停状态”。
来自父进程的请求。有时,父进程想要​​挂起其子进程之一以检查和修改子进程或协调子进程之间的活动。
需要调节负载。当实时系统工作量较大,可能影响实时任务的控制时,系统可能会暂停一些非关键进程,以保证系统能够正常运行。
操作系统需求。操作系统有时想要暂停某些进程以检查正在运行的资源使用情况或出于记账目的。
交流需求。为了缓解内存不足,内存中阻塞的进程被移至外部内存。
睡眠(主动)
用户主动挂起线程执行,睡眠线程保留在内存中。
睡眠恢复:这个过程在睡眠时间结束后自动完成,回到就绪状态。线程在睡眠期间不会释放对象锁。
example:(1000);
//让线程休眠一秒。
二、操作系统--阻塞,睡眠,挂起线程从创建到终止始终处于以下五种状态之一:新建状态、就绪状态、运行状态、阻塞状​​态和死亡状态。
所谓死锁状态,是指线程还没有完成工作,暂时让出CPU,此时其他处于待机状态的线程就可以占用CPU的时间,进入执行状态。。
线程在执行过程中,可能会因为多种原因而进入死锁状态:
以上原因可以分为三大类:线程死锁、线程睡眠、和线程悬浮。
直观解释操作系统中lock、sleep、suspend之间的区别。首先,这些术语涉及的主题是控制,即如何控制雇用为您工作的工人。
线程块:最初,您要求员工扫地,但扫帚被偷了或从邻居那里借了。员工一发现扫帚回来了,他就会自己去上班。
主题睡觉:你主动告诉员工:“睡觉了,到一定时间来汇报,然后继续工作。”
暂停线程:你主动对员工说:“你睡觉吧,我用你的时候会主动给你打电话,然后继续工作。”
在执行过程中,线程必须获得对系统资源的访问,先说CPU,线程运行时必须与磁盘进行交互,那么IO操作必然会发生等待当不读取资源时,获取完成后,线程必须等待,所以等待IO完成的部分是阻塞状态。所以从这里来说,死锁是一种被动模式,是由于无法获取资源而导致的等待。
我把线程死锁分为两类:
当一个线程获取资源失败(但不导致线程死锁)而暂时无法继续执行时,有两个方法:
从这里开始,sleep是一个主动方法,仅用作处理工具。睡眠不仅仅是用来让线程处于阻塞状态,而且,我们可以在适当的时候让线程休眠一段时间。
线程挂起是操作系统调度线程的手段之一操作系统在调度时挂起当前线程的执行,将其置于阻塞状态,并调度其他线程的CPU资源。当需要时,操作系统可以重置线程的执行权限并将其转换为就绪状态。
因此,挂起共享线程是一种被动的程序模式,线程执行到某个断点时,线程会被主动挂起(阻塞)。
线程挂起主要考虑CPU资源调度,进程挂起主要考虑内存资源分配。
操作系统中的挂起进程可以定义为暂时从内存中消除的进程内存中的程序通过安排,将一些进程暂时从内存中调出,当条件允许时再调回从操作系统到内存,并重新进入等待执行状态。,就绪状态。
为什么操作系统要引入挂起状态?挂起状态涉及到中间调度,因为当内存中的程序需要很大的内存空间来运行,但内存中没有空闲空间时,操作系统会根据调度算法将一些进程放在外存中为数据留出空间和可执行程序的程序,因此引发挂起状态。暂停状态的原因如下:
(1)最终用户请求。当最终用户在运行程序时发现可疑问题时,他们希望停止程序来阻止这些问题。即如果用户进程处于待机状态,但当前没有运行,则挂起正在执行的进程的执行,该进程此时不会接受调度,以便用户研究其执行情况或修改;程序。我们将这种静态状态称为“暂停状态”。
(2)来自父进程的请求。有时,父进程想要​​挂起其子进程之一以检查和修改子进程,或者协调子进程之间的活动。
(3)需要调整负载。当实时系统工作负载较大,可能影响实时任务控制时,系统可能会暂停一些非必要的进程,以保证系统正常运行。
(4)操作系统需求。操作系统有时想要挂起某些进程,以控制工作中的资源使用或出于会计目的。
(5)需要换货的。为了缓解内存短缺的问题,卡在内存中的进程被移至外部内存。
三、进程与程序:动态与静态的奥秘

🤔进程和程序的本质区别
进程和程序是计算机中的两个重要概念,它们之间有一个本质区别。进程是正在运行的程序,程序是尚未启动的代码。
🔍选项A的说法错误
选项A提到程序可以存在于外部存储器或内存中。事实上,这种说法是不正确的。有时,例如,我们从互联网上下载的程序会暂时存储在内存中,但它们实际上并不存在于内存中或硬盘上。
🚫关于选项B的错误说法
选项B提到进程和程序分为顺序指令和非顺序指令。这种说法显然是错误的,因为无论是进程还是程序,指令都是按照特定的顺序执行的。不存在所谓“顺序”和“非顺序”的区别。
🤝选项C的错误说法
选项C指出进程是一个正在运行的程序,两者以分时、独占的方式占用计算机资源。这种说法也是错误的。事实上,进程运行程序,但它们同时占用所有计机资源。不存在所谓的分时和排他性。
👉正确答案是D
综上所述,正确答案是D:进程是运行的程序。