【深入理解计算机系统】CHAPTER 1计算机系统漫游

计算机系统漫游

一、程序的生命周期

1.1 将源程序hello.c从源程序文本到输出可执行文件的命令:gcc -o hello hello.c

编译到生成的过程

该命令执行后,会执行以下四个阶段的程序,最终生成可执行文件。

  • 预处理阶段:将以字符#开头的文本内容替换为源程序,宏替换;
  • 编译阶段:将高级语言C语言文本文件hello.i翻译成低级语言汇编语言hello.s;
  • 汇编阶段:将低级语言hello.s翻译成二进制机器语言,将hello.s打包成可重定位(relocatable)目标程序;
  • 链接阶段:将重定位目标程序与C标准库中单独的预编译目标文件(printf.o)合并,生成一个可执行目标文件。可执行文件加载到存储器后,由系统负责执行。

旁注:Linux环境GNU(GNU’s not Unix)项目包括:EMACS编辑器、GCC编译器、GDB调试器、汇编器、链接器、处理二进制文件的工具以及其他一些部件。

1.2 运行可执行文件的命令:./hello

二、系统的硬件组成

在这里插入图片描述

  • CPU
  • 总线
  • I/O设备
  • 内存
  • 磁盘

三、操作系统

操作系统的作用

  1. 为应用程序提供操作硬件设备简单一致的方法。
  2. 防止硬件被失控的应用程序滥用。

在这里插入图片描述
操作系统通过 进程、虚拟内存和文件实现上述两个功能。
在这里插入图片描述

3.1、进程与线程

进程 是操作系统对运行程序的一种抽象。在一个系统上可以同时运行多个进程,每个进程都好像在独占的使用硬件(并发运行)

操作系统保存进程运行所需的所有状态信息。这种状态信息包括PC和寄存器文件的当前值、主存内容,这中状态信息就是上下文,实际上一个进程的指令和另一个进程的指令是交错执行的。操作系统实现这种交错执行的机制称为 上下文切换

在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。在网络服务器的编程模型中,线程一般都比进程更高效。

3.2、虚拟存储器

虚拟存储器为每个进程提供一个假象,即每个进程都在独占地使用内存。在Linux中,最上面的四分之一的地址空间是预留给系统中的代码和数据的,剩余的四分之三地址空间用来存放用户进程定义的代码和数据。

在这里插入图片描述
从最低的地址开始,逐步向上依次是:

  • 只读代码段和数据
  • 读/写数据区
  • 共享库
  • 内核虚拟内存存储器

3.3 文件

文件就是字节序列。每个I/O设备,包括磁盘、键盘、显示器,网络都可以看成是文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值