操作系统做了什么

本文内容:

1.helloworld.c 的运行过程中,计算机操作系统做了什么?

2.操作系统的主要工作

1.先看个hello world例子:

#include <stdio.h>
int main(int argc, char *argv[])
{
puts("hello world");
return 0;
}
  1. 用户告诉操作系统执行helloworld 程序( 如何告知 ?)
  2. 操作系统:找到helloworld 程序的相关信息, 检查其 类型是否是可执行文件;并通过程序首部信息,确定代码 和 数据在可执行文件中的位置并计算出对应的磁盘块 地址( 文件格式?)
  3. 操作系统: 创建 一个新 的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld 程序(之后的调度流程?)
  4. 操作系统:为helloworld 程序设置CPU 上下文环境,并跳到程序 开始 处( 假设调度程序选中hello 程序)
  5. 执行helloworld 程序 的 第一 条 指令,由于此时代码数据还没有调入内存,发生 缺页异常
  6. 操作系统:分配 一 页物理内存 ,并将代码从磁盘 读入内存,然后继续执行helloworld 程序
  7. helloworld 程序执行puts 函数( 系统调用 ),在显示器上写 一字符串
  8. 操作系统:找到要将字符串送往的显示设备,通常设备是由 一个进程 控制 的 ,所以,操作系统将要写的字符串送给该进程
  9. 操作系统:控制设备的 进程告诉设备的窗口系统它要显示 字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成 像素, 将像素写入设备的存储 映像区
  10. 视频硬件将 像素转换成显示器可接收的一组控制/数据信号
  11. 显示器解释信号,激发液晶屏
  12. OK !!!我们 在屏幕上 看到了“hello world”

2.操作系统的主要工作:

  1. 程序的执行:启动程序 、执行程序以及程序结束的工作
  2.  完成个性的工作(与硬件有关)
  3.  完成共性的工作:易于使用,基本服务,统一性
  4.  性能、安全、健壮性等问题

看完下边的2.1再来理解这4点工作就容易多了

2.1操作系统所处位置:

思考:假如没有操作系统,怎样将目标代码送给硬件?怎样输出打印结果?
→ 人们将对二进制程序操作 从二极发光管读答案

例如:实现代码中 包含存储器的物理地址 ,或者 包含对设备接口寄存器和设备接口缓冲区的读写 等等
实现该工作的过程代码和硬件因素密切相关,即需要设置与测试、使用物理地址、设备接寄存器等等
硬件相关必然复杂繁琐、代码量大;硬件相关的工作,其实现代码不通用(缺陷)

例子:有两个要求,哪一个更简单易实现?
从文件读数据块移动磁头、等待放下

共性:任何一个程序都需要的、最基本的工作,它们具有共性、工作过程相同、与具体应用无直接关系(即与用户所关心的应用目标无直接关系)

理解了上述的缺陷和共性,操作系统的作用工作就呼之欲出了。缺陷-作用,共性-工作(部分)。

操作系统是应用软件与现实硬件之间的软件,如图:

参考资料:

陈老师的操作系统高级课程课件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值