【CSAPP】阅读:第一章 计算机系统漫游

本文介绍了计算机系统的核心概念,包括操作系统如何管理硬件,如进程、线程、虚拟内存和文件。详细阐述了进程间的上下文切换、线程在多处理器系统中的作用、虚拟内存的地址空间结构以及文件作为IO设备的抽象。同时,讨论了并发和并行的层次,从线程级到指令级再到SIMD并行。最后强调了抽象在计算机科学中的重要性,指出操作系统提供的文件、虚拟内存和进程抽象。
摘要由CSDN通过智能技术生成

前言

本系列分享了阅读深入理解计算机系统阅读中自认为重要的地方。通过语音识别到word文档,然后分享在CSDN。

1.7 操作系统管理硬件

操作系统保持跟踪进程运行所需的所有状态信息,这种状态也就是上下文包括许多信息,比如PC和寄存器文件的当前值以及储存的内容,在任何一个时刻,单处理器系统都只能执行一个进程的代码,当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从它上次停止的地方开始。

1.7.1 进程

从一个进程到另一个进程的转换,是由操作系统内核管理的内核是操作系统代码,常驻内存的部分,当应用程序需要操作系统的某些操作时,比如读写文件,它就执行一条特殊的系统调用指令,将控制权传递给内核,然后内核执行被请求的操作并返回给应用程序,注意内核不是一个独立的进程,相反,它是系统管理全部进程所用代码和数据结构的集合。

1.7.2 线程

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

1.7.3 虚拟内存

虚拟内存是一个抽象的概念,它为每个进程提供了一个假象,其每个进程都在独占的使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间。在Linux中地址空间最上面的区域是保留给操作系统的代码和数据的,对所有进程来说都是一样的地址,空间的底部区域存放用户进程定义的代码和数据请注意,图中的地址是自下往上增大的。
每个进程看到的虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能。我们从最低的地址开始,逐步向上介绍。

  • 程序代码和数据。对所有的进程来说,代码是从同一固定地址开始,紧接着的是和C全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的内容初始化的,在示例中就是可执行文件,hello。
  • 堆。代码和数据区后紧随着的是运行时堆。代码和数据区在进程一开始运行时就被定置定了,大小与此不同,当调用像malloc和free这样的C标准库函数时,均可以在运行时动态的扩展和收缩。
  • 共享库。大约在地质空间的中间部分是一块,用来存放像C标准库和数学库,这样的共享库的代码和数据的区域共享库的概念,非常强大,也相当难懂。
  • 栈。位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数调用。和堆一样,用户栈在用执行程序期间可以动态的扩展和收缩。特别的每次我们调用一个函数时栈就会增长,从一个函数返回时,栈就会收缩。
  • 内核虚拟内存。地址空间顶部的区域是为内核保留的,他不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数,相反他们必须调用内核来执行这些操作。
    虚拟内存的运作需要硬件和操作系统软件之间精密复杂的交互,包括对处理器生成的每个地址的硬件翻译.基本思想是把一个进程虚拟内存的内容存储在磁盘上,然后用内存作为磁盘的高速缓存。

1.7.4 文件

文件就是字节序列,仅此而已,每个io设备包括磁盘,键盘,显示器,甚至网络都可以看成是文件系统中所有输入输出都是通过使用一小组成为Unix i/o的系统函数调用读写文件来实现的。

1.8 系统之间利用网络通信

从一个单独的系统来看网络可视为一个io设备。由拓展槽接入网络适配器接入到网络。当系统从储存复制一串字节到网络适配器时,数据流经过网络到达另一台机器,而不是比如说到达本地磁盘驱动器。相似的系统可以读取从其他机器发来的数据,并且把数据复制到自己的主存。

1.9.2 并发和并行

并发是一个通用的概念,指一个同时具有多个活动的系统,而并行指的是用并发来使一个系统运行的更快。

1.线程级并发

构建在进程这个抽象之上,我们能够设计出同时有多个程序执行的系统,这就导致了变化,使用线程,我们甚至能够在一个进程中执行多个控制流。传统意义上,这种并发执行只是模拟出来的,是通过使一台计算器在它正在执行的进程间快速切换来实现的。这种并发形式允许多个用户同时与系统交互,在以前,即使处理器必须在多个任务之间切换,大多数实际的计算也都是由一个处理器来完成的,这种配置称为单处理器系统。
当构建一个由单操作系统内核控制的多处理器组成的系统时,我们就得到了一个多处理器系统,但是直到最近随着多核处理器和超线程的出现,这种系统才变得常见。
多核处理器是将多个CPU成为核集成到一个集成电路芯片上,如图描述的是一个典型多核处理器的组织结构,其中微处理器芯片有4个CPU核。每个核都有自己的L1和L2高速缓存,其中的L1高速缓存分为两个部分,一个保存最近取到的指令,另一个存放数据,这些和共享更高层次的高速缓存,以及到主存的接口,工业界的专家预言他们能够将几十个最终会是上百个核做到一个芯片上。
超线程有时称为同时多线程,是一项允许一个CPU执行,多个控制流的技术,它涉及CPU某些硬件有多个备份,比如程序计数器和寄存器文件,而其他的硬件部分只有一份,比如执行浮点运算的单元。
多处理器的使用可以从两方面提高系统性能,首先它减少了在执行多任务时模拟并发的需要,正如前面提到的,即使是只有一个用户使用的个人计算机,也需要并发的执行多个活动,其次它可以使应用程序运行得更快,当然这必须要求程序是以多线程方式来书写的,这些线程可以并行的高校执行。

2.指令级并行

在较低的抽象层次上,现在处理器可以同时执行,多条指令的属性称为指令级并行。早期处理器,如1978年的英特尔8086,需要多个通常是3~10个时钟周期来执行一条指令最近的处理器,可以保持每个时钟周期两条4条指令的执行效率,其实每条指令从开始到结束需要长得多的时间,大约20个或者更多周期,但是处理器使用了非常多的聪明技巧来同时处理多达100条指令。在流水线中将执行的一条指令所需要的活动划分成不同的步骤,将处理器的硬件组成一系列的阶段,每个阶段执行一个步骤,这些阶段可以并行的操作用来处理不同指令的不同部分,我们会看到一个相当简单的硬件设计,它能够达到接近于一个时钟周期,一条指令的执行速率。
如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量处理器。

3.单指令,多数据并行

在最低层次上,许多信贷处理器拥有特殊的硬件允许,一条指令产生多个可以并行执行的操作,这种方式称为单指令多数据。即si MD并行。
提供这些SIM的指令,都是为了提高处理影像声音和视频数据应用的执行速度,虽然有些编译器试图从C程序中自动抽取SIMD并行性,但是更好的方法是使用编译器支持的特殊的相量数据类型来写程序,比如gcc就支持相应数据类型。

1.9.3 计算机系统中抽象的重要性

抽象的使用是计算机科学中最为重要的概念之一。不同的编程语言提供不同形式和等级的抽象支持,例如Java类的声明和C语言的函数原型。
在处理器里指令集架构提供了对实际处理器硬件的抽象使用,这个抽象机器代码程序表现的就好像运行在一个一次只执行一条指令的处理器上。底层的硬件远比抽象描述的要复杂精细,它并行的执行多条指令,但又总是与那个简单有序的模型保持一致,只要执行模型一样,不同的处理器实现也能执行同样的机器代码,而又提供不同的开销和性能。
在学习操作系统时,我们介绍了三个抽象:文件是对io设备的抽象,虚拟内存是对程序存储器( Io设备和主存)的抽象,而进程是对一个正在运行的程序的抽象。我们再增加一个新的抽象虚拟机,它提供对整个计算机的抽象,包括操作系统,处理器和程序。

1.10 小结

计算机系统是由硬件和系统软件组成的,他们共同写作以运行应用程序计算机内部的信息被表示为一组组的位,他们依据上下文有不同的解释方式,程序被其他程序翻译成不同的形式,开始时是ASCII文本,后来被编译器和链接其翻译成二进制可执行文件。
处理器读取并解释存放在储存里的二进制指令,因为计算机花费了大量时间在主内存io设备和CPU计算器之间复制数据,所以将系统的存储设备划分成层次结构,CPU寄存器在顶部,接着的是多层的硬件高速缓存存储器,DRAM储存和磁盘存储器,在层次模型中位于更高层的存储设备,比低层的存储设备要更快,单位比特造价也更高,层次结构中,较高层次的存储设备可以作为较低层次设备的高速缓存,通过理解和运用这种缓存存储层次结构的知识,程序员可以优化C语言程序的性能。
操作系统内核是应用程序和硬件之间的媒介,它提供三个基本的抽象:文件是对io设备的抽象,虚拟内存是对储存和磁盘的抽象 进程是处理器,主存和io设备的抽象。
最后网络提供了计算机系统之间通信的手段,从特殊系统的角度来看,网络就是一种io设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值