《深入理解计算机系统》 读书笔记

程序

程序的生命周期从一个源程序(源文件)开始,即程序员利用编辑器创建并保存的文本文件,如文件名为hello.c的c语言程序。

源程序是由0和1组成的位序列,8个位被组织成一组,称为字节。每个字节表示程序中的某个文本字符。这种形式能够被人读懂。

 

基本思想:系统中的所有的信息-包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的。

区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。

为了在系统上运行hello.c程序,每条c语句都必须被其他程序转化为一系列的低级机器语言指令(如汇编语言)。

然后,这些指令按照可执行目标程序的格式打好包,以二进制磁盘文件的形式存放起来,其称为可执行目标程序。

从hello.c到hello.exe的翻译过程可分为四个阶段完成。执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统。

程序由操作系统执行。Unix系统中通过shell应用程序及相关命令加载执行。

 

操作系统

     所有应用程序对硬件的操作都必须通过操作系统。可以把操作系统看成是应用程序和硬件之间插入的一层软件。

操作系统基本功能:

1) 防止硬件被失控的应用程序滥用

2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

其通过进程、虚拟存储器、文件等抽象概念来实现这两个功能。

 

 

文件是对I/O设备的抽象,虚拟存储器是对主存(内存)和磁盘I/O设备的抽象,进程则是对处理器、贮存和I/O设备的抽象。

  进程。进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。传统系统在一个时刻只能执行一个程序,而多核处理器能同时执行多个程序。无论是单核还是多核系统,一个cpu通过在进程间切换,可以并发的执行多个进程。

         操作系统保持跟踪进程运行所需的所有状态信息,即上下文,包括程序计数器和寄存器文件的当前值,主存内容等。在任何一个时刻,单处理器系统都只能执行一个进程的代码。当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换。

实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。

         线程。一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。由于网络服务器对并行处理的需求,线程成为非常重要的编程模型,因为多线程之间比多进程之间更容易共享数据;当多处理器可用的时候,多线程也是一种使程序可以更快运行的方法。

        虚拟存储器。虚拟存储器这个抽象为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的是一致的存储器,称为为虚拟地址空间。

        文件。文件就是字节序列。每个I/O设备,磁盘、键盘、显示器、网络等都可以视为文件。文件这个抽象向应用程序提供了一个统一的视角来看待系统中可能出现的各种I/O设备。

posted on 2020-10-22 16:20  季昂  阅读(123)  评论(0编辑  收藏  举报