csapp第一章
收获:
程序的生命周期:
从熟悉的利用c语言编写的hello.c文本文件,经过预处理 编译 汇编 链接阶段生成可执行目标文件 然后保存存储到磁盘上,当在shell里键入./ hello后 shell程序将字符读入寄存器,再存放到内存 敲下回车键 shell知道已经结束输入 加载可执行的hello 程序中的代码和数据从磁盘复制到内存 通过dma省去数据经过处理器的过程 当hello中的代码和数据被加载到内存 处理器开始执行main程序的机器语言指令,这些指令将字符串中的字节从内存复制到寄存器 再复制到显示设备
抽象的使用
文件是对io的抽象(网络都可以看成是文件)
虚拟内存是对程序存储器的抽象
进程是对正在运行的程序的抽象
虚拟机是对整个计算机的抽象
3.程序的生命周期说明了系统花费大量时间在内存,io和cpu之间复制数据,由此将存储设备划分层次结构
4.并发和并行
使计算机做的更多,运行的更快
并发:指一个同时具有多个活动的系统
并行:用并发来使一个系统运行的更快
理解:并行强调同一时刻发生,并发表示该系统具有执行多个活动的能力,但不是在同一时刻 并发事件不一定要在同一时间发生,并行只同时发生的两个并发事件,具有并发的含义
5文件
文件就是字节序列 每个IO设备,包括磁盘,键盘,显示器,甚至网络都可以看成文件
6进程和线程
操作系统提供的假象:程序独占处理器,内存和io设备
处理器看上去不断的执行程序中的指令
处理器并发执行进程,即一个进程的指令和另一个的进程的指令交错执行
上下文的概念,操作系统保持跟踪程序所需的所有状态信息,这种状态即上下文。操作系统将控制权从一个进程交给另一个进程时,发生上下文转换:保存当前进程上下文,恢复新进程的上下文,控制权交给新进程
进程由多个称为线程的执行单元组成 线程运行在进程的上下文中,共享代码和全局数据
7 虚拟内存
为进程提供的假象:每个进程独占内存,每个进程看到的内存都一样,称为虚拟地址空间
基本思想是把一个进程虚拟内存的内容存储到磁盘上,然后用内存作为磁盘的高速缓冲存
注:上一级的存储器作为低一级的存储器的高速缓存
问题:
并行必须要多核吗?
并行需要多核,多个线程**同时**在多个cpu上运行