C语言 操作系统是否没有自动处理垃圾回收?



这更像是一个历史问题,而不是一个软件问题,但我目前正在大学学习C语言和一个操作系统模块(我没有从我的讲师那里得到直接的答案,因此我来这里(,我想知道操作系统时代的开始是否有一段时间, 如果操作系统没有处理行为不良的程序,并且保留动态分配的内存,即使分配它们的程序已经终止。

必要性是发明之母。 一开始,计算机不是多任务处理的,而是为特定目的而制造的,这就是为什么不需要垃圾收集器的原因,但是一旦引入程序的创建和终止,即本质上是多任务处理,立即需要清除内存,否则只会发生两件事:

  • 一个或多个程序运行一段时间后内存溢出。
  • 每当需要新内存时,内存都会覆盖。

两者都不是明智的解决方案,由于那个时代的记忆非常小,这个问题很快就被发现了,因此垃圾收集器诞生了。

注意:

如果程序手动分配内存位置并且很清楚它们可以使用的大小,这意味着它们自己会覆盖垃圾,则不需要垃圾收集器。例如,在嵌入式系统中,我们也负担不起为收集器分配内存的费用。我们宁愿正确地编程自己。

但是,在操作系统的情况下,垃圾收集器是必须的。

最新更新