了解 Unix I/O 的好处 了解 Unix I/O 将帮助我们理解其他的系统概念 I/O 是系统操作不可或缺的一部分,因此,我们经常遇到 I/O 和其他系统概念之间的循环依赖.例如,I/O 在进程的创建和执行中扮演着关键的角色.反过来,进程创建又在不同进程间的文件共享中扮演着关键角色.因此,要真正理解 I/O,我们必须理解进程,反之亦然.在对存储器层次结构.链接和加载.进程以及虚拟内存的讨论中,我们已经接触了 I/O 的某些方面,在这个基础上,我们就能闭合整个循环,更好地研究 I/O. 应用…
很多高级语言都提供了执行 I/O 的较高级别的函数.为什么我们还要学习 Unix I/O? 原因:1.由于 I/O 和其他系统概念之间有循环依赖关系,故了解 Unix I/O 将帮助我们理解其他的系统概念 2.有些特殊情况,只能或最好使用 Unix I/O.比如标准 I/O 库没有提供读取文件元数据(文件大小和文件创建时间)的方式 由于所有的 I/O 设备都被模型化为文件,所有的输入和输出都被当做对相应文件的读和写来执行.使得所有的输入和输出都能以一种统一且一致的方式来执行. 一般有以下几种输入…
客户端和服务器通过因特网这个全球网络来通信.从程序员的观点来看,我们可以把因特网看成是一个全球范围的主机集合,具有以下几个属性: 1.每个因特网主机都有一个唯一的 32 为名字,称为它的 IP 地址 2.IP 地址的集合被映射为一个因特网域名的集合 3.不同因特网主机上的进程能够通过链接互相通信 客户端和服务器通过套接字接口建立连接.一个套接字是连接的一个端点,连接以文件描述符的形式提供给应用程序.套接字接口提供了打开和关闭套接字描述符的函数.客户端和服务器通过读写这些描述符来实现彼此间的通信…
客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的.采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成.服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务. 事务 客户端-服务器模型中的基本操作是事务,一个客户端-服务器事务由以下四步组成. 1.当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务.例如,当 Web 浏览器需要一个文件时,它就发送一个请求给 Web 服务器. 2.服务器收到请求后,解释它,并以适当的方式操作它的资源.例如,当…
第十章 系统级I/O 输入/输出(I/O) : 是指主存和外部设备(如磁盘,终端,网络)之间拷贝数据过程. 高级别I/O函数 scanf和printf <<和>> 使用系统级I/O函数实现 系统级I/O函数. Q:大多数时候高级别I/O函数都运行良好,为什么我们还要学Unix I/O A: 了解Unix I/O将帮助你理解其他的系统概念. 要深入理解其他概念,必须理解I/O. 有时你除了使用Unix I/O别无选择 标准I/O库没有提供读取文件元数据的方式. 如文件大小或文件创建时…
第十章 系统级I/O 一.Unix I/O 1.一个unix文件就是一个m个字节的序列 2.unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(0) .标准输出(1)和标准错误(-1). 二.打开个关闭文件 1.int open(char *filename, int flags, mode_t mede );       //将filename转换为一个文件描述符,并且返回描述数字 filename 文件名 flag 如何访问或更多位掩码 mode 指定新文件的访问权限 2.clos…
CSAPP:第十章 系统级I/O 10.1 unix I/O10.2 文件10.3 读取文件元数据10.4 读取目录内容10.5 共享文件10.6 我们该使用哪些I/O函数? 10.1 unix I/O   所有的I/O设备(例如网络.磁盘和终端)都被模块化为文件,而所有的输入和输出都被当作对相应文件的读和写来执行.这种允许Linux内核引出一个简单.低级的应用接口,称为Unix I/O,这使得所有的输入和输出都能以一种统一且一致的方式来执行: 打开文件. 改变当前的文件位置, 读写文件. 关闭…
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9905345.html 机器级代码 计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节.对于机器级编程来说,其中两种抽象尤为重要.第一种是由指令集体系结构或指令集架构(Instruction Set Architecture,ISA)来定义机器级程序的格式和行为,它定义了处理器状态.指令的格式,以及每条指令都是按顺序执行的,一条指令结束后,下一条再开始.处理器的硬件远比描述的精细复杂,…
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html 本章汇编代码中常出现的几个指令及其含义 1.push 操作数的个数:1 将操作数(一般是寄存器)的值压入栈中,由于栈向下生长,所以这时栈顶指针会减小一点 2.move 操作数的个数:2 第一个操作数是源操作数,第二个操作数是目的操作数,该指令将源操作数的值赋给目的操作数 3.call 操作数的个数:1 调用某个方法,栈的变化没有完全弄明白 4.pop 操作数的个数:1 将栈顶元素赋给…
<深入理解计算机系统V2>学习指导 目录 图书简况 学习指导 第一章 计算机系统漫游 第二章 信息的表示和处理 第三章 程序的机器级表示 第四章 处理器体系结构 第五章 优化程序性能 第六章 存储器层次结构 第七章 链接 第八章 异常控制流 第九章 虚拟存储器 第十章 系统级I/O 第十一章 网络编程 第十二章 并发编程 图书简况 「深入理解计算机系统(Computer Systems: A Programmer's Perspective)阅读体会」和「老赵书托(3):深入理解计算机系统」这…