由浅入深学习操作系统9(第二大部分)

这部分开始我们讨论一个应用程序,比如 printf(“hello world”)怎样通过操作系统进程管理部分的帮助,使用封装过的cpu来实现自己的任务。

我们先看一个小实验,在Ubuntu终端中用strace命令追踪下上述hello world程序的运行,结果如下

strace追踪了这个程序运行过程中调用的操作系统的函数,很多我们不认识,但是我们确实可以看到这个程序调用了很多操作系统的函数。也就是说,这个程序的运行,离不开操作系统这些函数的帮助。

这部分我们讨论操作系统如何帮助应用程序合理利用cpu。

2.1目前操作系统安排应用程序使用cpu的基本模型

如前述,程序顺序排队使用cpu本来是可以的,但是如果遇到printf这样的语句的时候需要停止当前程序,把cpu让渡给别的程序,否则cpu的利用率极其低下。那么在使用了PCB这样的记录表以后,程序运行过程中随时可以停下来,也随时可以继续,因为PCB记录了断点和现场。

那么用这种模式运行程序后,应该怎样使用cpu呢?我们看下面情况。

假设有四个程序A\B\C\D,它们的核心语句分别是 printf(“hello a”), printf(“hello b”), printf(“hello c”), printf(“hello d”)。假设它们按序到达,A程序先运行,这个时候bcd只能等待a程序结束或者停下来才有机会,那么当A程序遇到printf语句停止使用cpu后,bcd中的哪一个该去占用cpu呢?这个时候需要一种排队规则,比如我们人类最熟悉的先到先得,比如程序B占用了cpu。很快程序B也遇到了printf,这时候程序cd可以按照b上位的办法使用cpu,但是程序A 和B应该放在哪里?什么时候能继续使用cpu呢?这个时候我们发现程序可以分为三类:正在运行的,可以运行但是还没有运行的,等待IO而不能运行的。把这几类程序用下图来表达很合适。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值