计算机软件系统的三个层次,计算机软硬件系统

一、 C 程序的编译过程

0db2afda9785

hello.c 编译过程

概念

文本文件:只包含 ASCII 字符

二进制文件: 除文本文件外其他文件

二、计算机系统硬件组成

CPU :中央处理器

主存: 存储数据和指令

IO 设备:鼠标、键盘、显示器、磁盘控制器等

总线:数据通道

计算机内部结构拓补图

系统内部结构如下图所示, hello.c 程序如何执行呢?一个简单的描述如下,编写好的 hello.c 文本文件被存储在磁盘上,经过编译后形成的 a.out 文件也存储在磁盘上,在 shell 中敲入 ./a.out 时, ./a.out 首先被存入寄存器中,当敲入回车时,寄存器中的 a.out 被送入主存, 主存开始加载 a.out 程序和数据,加载完成后,CPU 执行程序时,从主存获取程序指令和数据,并将相应的输出送到显示器进行显示。

由上可见,程序执行过程中,大量时间花费在访存上,即将程序数据和指令从一个地方复制到另一个地方,与 CPU 执行指令速度相比,访存速度大大影响了程序执行效率,故现代计算机多设置有 cache (高速缓存),CPU 访问 cache 的速度通常比访问主存快得多,cache 通常设置在总线接口与寄存器之间,程序执行时先从 cache 查找相应的数据和命令,找不到再访问内存。从内存取数据和指令时,会在 cache 形成缓存,cache 的使用大大提高了程序执行效率,因此,提高 cache 命中率通常是提高软件系统整体运行速度的有效办法之一。

0db2afda9785

计算机内部拓补

存储设备的层次结构

存储设备的层次结构如下图所示。

0db2afda9785

存储设备层次结构

三、操作系统对硬件的管理

几个重要抽象

1. 文件

文件就是字节序列。系统中每个 I/O 设备都可以看成一个文件,甚至网络也可以看成一个文件,系统的所有输入/输出都是通过一组 Unix I/O 系统调用读写文件来实现的。

2. 进程

进程是对操作系统正在运行的程序的一种抽象。看起来每个进程好像都是独占 CPU 的,实际上是通过上下文切换实现并发的。

上下文是指进程运行所需要的状态信息,这些信息包括 PC 值、寄存器值、内存中的数据等。上下文切换是指系统保存当前运行进程的上下文信息,然后切换到另一个进程的上下文,执行新的进程,待新进程执行结束后如果要继续执行原来的进程,再恢复之前保存的上下文信息。

进程切换是由操作系统内核完成的。内核是操作系统常驻内存的部分,当进程需要某系操作系统的某些操作时(如读写文件),通过一条系统调用将控制权交给内核,内核执行完相应操作后返回应用程序。

3. 虚拟内存

0db2afda9785

Linux 进程虚拟地址空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值