Operating system (POSIX)操作系统是否在进程崩溃后恢复资源?

Operating system (POSIX)操作系统是否在进程崩溃后恢复资源?,operating-system,posix,resource-management,Operating System,Posix,Resource Management,让我们假设我们有一个进程,该进程分配一个套接字监听一个特定的端口,对它执行一些操作,然后异常终止。现在,第二个进程启动,并希望在crahsed进程先前持有的同一端口上分配一个侦听套接字。这个插座可以重新分配吗 操作系统如何恢复未正确释放的资源?操作系统是否跟踪进程id以及每个分配的资源 这是不是每个符合POSIX标准的系统都应该做的清理工作 这取决于操作系统,但通常操作系统维护一个过程控制结构,以管理其资源。当进程从系统中分配资源(例如打开文件或分配内存)时,分配的详细信息将放在该结构中。当进

让我们假设我们有一个进程,该进程分配一个套接字监听一个特定的端口,对它执行一些操作,然后异常终止。现在,第二个进程启动,并希望在crahsed进程先前持有的同一端口上分配一个侦听套接字。这个插座可以重新分配吗

  • 操作系统如何恢复未正确释放的资源?操作系统是否跟踪进程id以及每个分配的资源

  • 这是不是每个符合POSIX标准的系统都应该做的清理工作


这取决于操作系统,但通常操作系统维护一个过程控制结构,以管理其资源。当进程从系统中分配资源(例如打开文件或分配内存)时,分配的详细信息将放在该结构中。当进程终止时,任何留在进程中的内容都会被清除,但最好是在执行过程中明确地进行清理。

具体细节将取决于操作系统,但一般来说,用户代码在虚拟地址空间/沙箱中运行,在那里它无法直接访问硬件资源。用户进程想要访问/分配的任何内容都必须通过调用操作系统并向其请求所需资源来提供


因此,操作系统有一种简单的方法来知道谁被分配了哪些资源,只要它跟踪这些信息,在进程崩溃时清理资源就像获取分配给该进程的资源列表,并将它们标记为再次可用一样简单。

@Jeff:“这是我期望每个POSIX兼容系统都能做的清理工作吗?”为什么这样的问题是离题的?对于程序员来说,了解我们需要在多大程度上确保资源的正确释放是非常重要的。我目前面临一个困难的IPC问题,所以这个问题不是出于一般的好奇。(我将据此进行编辑)。我不认为清理与POSIX有任何关系。你可以预期这种自动清理会发生在每一个真正值得使用的操作系统上。如果操作系统不这样做,应用程序的每一次异常终止都会从系统中删除资源,并且资源将永久无法使用y(直到下次重新启动)消失了。@mah你知道win98,是吗?:-)但你是对的,我当然也会这么想。@Johannes Rudolph--我重申了我的限定词“每一个值得真正使用的操作系统”;)很遗憾,恐怕我还记得Windows ME。。。