qq_43412960 2020-05-04 17:09 采纳率: 76.5%
浏览 196
已采纳

这是一个关于操作系统的相关问题

操作系统可以负责对进程分配内存,我猜过程是这样

1首先分出一部分内存,放置若干进程控制块PCB,放在三个队列中,就绪,阻塞,执行。然后根据调度算法,找到将要执行进程相应进程块,计算进程所需进程块大小,然后分配。如果还以剩余内存,也不会占用,毕竟cpu一次只能执行一个程序嘛

2CPU并发操作,就因为时间片方法执行嘛,当一个程序执行一段时间,就释放内存空间,相对应PCB块进阻塞队列,这么样,CPU循环分配个进程各种资源
请问我对操作系统执行进程分配的功能理解有错误吗?

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-04 21:32
    关注

    你说的模型过于简单化了。比如说c语言malloc,这种运行的过程中动态分配内存的,显然不能直接在进程运行一开始就知道要分配多少。
    操作系统内存管理,包括段、页、虚拟内存、交换,这些书上都有的,不需要“猜”。看看就知道了。

    程序切换的时候,天哪,可不能“释放内存空间”,要不切换回来,内存都没了怎么继续运行。程序切换的时候,操作系统要做的,是把当前进程的状态(一般来说是cpu寄存器的值)保存下来
    内存不能动它。除非内存不够,内存不够需要交换。在另一个进程执行完后,切换回来。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退