读书笔记∣世界是数字的

第一部分 硬件

第1章 计算机里有什么

1.1 逻辑构造:每一部分是什么、叫什么、做什么、怎么做、之间如何连接

(5)文件系统

a. 文件系统是操作系统的一个组成部分,它能够让硬盘、 CD 和 DVD、移动存储设备,以及其他各种存储器等物理存储媒体,变成看起来像是由文件和文件夹组成的层次结构。我们常说计算机有逻辑组织和物理实现两大概念,文件系统就是这两大概念的集中体现。文件系统能够在各种不同的设备上组织和存储信息,但操作系统则为所有这些设备都提供相同的接口。文件系统管理所有这些信息,方便其他程序和操作系统的其他部件读写这些信息。它统筹安排所有的读写操作,确保这些操作有效进行,且不会相互干扰。它记录数据的物理位置,确保它们各就各位。在最低级的层次上,文件系统服务是通过系统调用来提供的。程序员通常要借助代码库来使用这些系统调用,以简化编程过程中常见的文件处理操作。

b.在应用程序要访问已有的某个文件时,文件系统必须从其顶级层次开始搜索该文件,在相应文件夹里查找文件路径中的每一部分。举个例子,假设要在 Mac 中查找/Users/bwk/book/book.txt。文件系统首先要在其顶层搜索 Users,然后在该文件夹里搜索 bwk,接着在找到的文件夹里搜索 book,最后再在找到的文件夹里搜索 book.txt。在 Windows 中,这个文件的路径可能是 C:My Documentsbookbook.txt,但搜索过程相似。这是一种化整为零的思路。也就是说,路径中的层次会逐步缩小要搜索的文件或文件夹的范围,同时把其他不相干的部分过滤掉。正因为如此,不同层次中的文件可以使用相同的名字,唯一的要求是完整的路径必须独一无二。实践中,应用程序和操作系统会记住当前的文件夹,因而文件系统不必每次都从顶层开始搜索。而为了加快处理速度,系统还可能会缓存频繁用到的文件夹。

c. 应用程序在创建新文件时会向文件系统发送请求,文件系统会在相应的文件夹中增加一个新条目,包含文件名、日期等项,还有文件大小为零(因为还没有为这个新文件分配磁盘块)。接下来,应用程序要向文件中写入某些数据时(比如向一封邮件中写几句话),文件系统会找到足够多的当前没有使用的或者“空闲”的块来保存相应内容,并把数据复制过去。然后把这些块插入到文件夹的块列表中,最后返回给应用程序。
d.删除文件时,过程恰好相反:文件占用的块会回到空闲列表,而文件夹中该文件的条目会被清除,结果就好像文件被删除了一样。现实中的情况并不完全如此,而是加入了一些有意思的比喻。当你在 Windows 和 MacOS X 中删除一个文件时,这个文件会跑到“回收站”或“垃圾桶”里去。“回收站”和“垃圾桶”不过是另外一个文件夹,但具备某些常规文件夹所不具备的属性。正因为如此,才成其为“回收站”嘛。删除文件时,相应的文件夹条目将从当前文件夹被复制到名叫“回收站”或“垃圾桶”的文件夹里,然后会清除掉原来的文件夹条目。但是,这个文件占用的块以及其中的内容没有丝毫变化!从“回收站”里还原文件的过程正好相反,就是把相应条目恢复到它原来所在的文件夹中。“清空回收站”倒是跟我们本节一开始描述的过程很相似。此时“回收站”或“垃圾桶”里的文件夹条目会被清除,相应的块会真正再添加到空闲块列表中。不管是明确地执行这个操作,还是文件系统因为空闲空间过少而在后台静默地清空,这个过程都将实实在在地发生。假设是你明确地执行清空操作。那么这个操作首先清除“回收站”文件夹中的条目,然后把其中文件占用的块回写到空闲块列表。但是,这些文件的内容并没有被删除。换句话说,原始文件占用的每个块中的所有字节都会原封不动地呆在原地。除非相应的块从空闲块列表中被“除名”并奉送给某个应用程序,否则这些字节不会被新内容覆盖。

2. 应用程序

(1)“应用程序”是一种统称,表示所有在操作系统平台上完成某种任务的软件或程序。应用程序可大可小,可以只完成特定的任务,也可以囊括大量功能。可以是花钱买的,也可以是免费送的。它的代码可以高度保密,也可以开放源码,甚至没有任何限制。或许可以把应用程序分成两类。一类是小型独立的应用,通常只帮用户做一件事;另一类是大型软件,包含非常多的操作,比如 Word、 iTunes 或 Photoshop、浏览器等。

3. 软件分层

(1)通俗地讲,计算机的最底层是硬件。硬件,除了总线支持在系统运行期间添加和删除设备之外,其他方面几乎可以看成不可变的。

(2)再往上就是所谓的操作系统层了。为了突出其核心地位,通常把这一层称为内核(kernel)。操作系统介于硬件和应用程序之间。无论底层是什么硬件,操作系统都要负责隐藏其特殊性,向应用程序提供统一的接口或界面,这个接口或界面不因硬件的种种差别而变化。在接口设计得当的情况下,同一个操作系统的接口完全可以适用于众多制造商生产的不同类型的 CPU。

(3)操作系统再往上的一层是函数库。函数库提供通用的服务,这样一来,程序员就不必各自重复实现这些功能。有些库比较靠近底层,能够完成一些基本功能(完成数学计算,比如开方和求对数,或者像前面 date 命令一样计算日期和时间)。另外一些库的功能更强大(涉及加密、图形处理、压缩等)。图形用户界面上的组件,包括菜单、按钮、复选框、滚动条、选项卡面板等等,都需要编写很多代码。为此,只要把这些代码封装成函数库,任何人就都可以使用它们,而且还能保证统一的行为和外观。这就是为什么大多数 Windows 应用(至少它们的基本图形组件)看起来那么相似的原因。同样的情况在 Mac 上更是如此。如果所有软件开发商都重新发明、重新实现这些功能,那不仅会浪费大量资源,而且五花八门的界面也会让用户感到无所适从。如前所述,典型的应用程序会使用函数库和操作系统服务,把它们集成到一起实现某种功能。不过,库函数与系统调用之间的区别并不十分明显。某个特定的服务可以作为系统调用实现,也可以借助使用了系统调用的库函数来实现。

第7章 学习编程

1、任何编程语言都会提供一些手段,用于取得赖以完成计算的输入数据、进行算术计算、在计算期间存储和获取中间值并显示结果、根据之前的计算结果决定下一个计算步骤,以及在计算完成时保存结果。

2、编程语言是表达所有计算步骤的记 库,人们可以籍此轻松写出代码来,而且代码可以被翻译成计算机最终可以执行的二进制形式。翻译方式有很多种,但最常见的是使用编译器,有时候还要用汇编器,把用 C 等语言编写的程序转换成二进制形式,以便在计算机上运行。不同的处理器有不同的指令集和指令形式,因此编译器也会有相应的差异。解释器和虚拟机是模拟真正或假想计算机的程序,可以面向它们编译并运行代码。 JavaScript 程序就是面向解释器编译运行的。

3、是语言就有语法,而语法就是一系列规则,根据它们可以判断什么符合语法,什么不符合语法。编程语言对语法规则是锱铢必较的,哪怕有一点点地方违反语法,它都会提出抗议。语言还要有语义,语义规定了语言中所有元素的含义。JavaScript 这门语言实际上包含三个方面。第一是语言本身,包括让计算机完成算术计算的语句、测试条件,以及重复计算的规则等。第二是 JavaScript 代码库,也就是由别人写好的程序段,你可以在自己的程序里直接使用,而不必再花时间重写。比如数学函数、计算日历的函数,以及搜索和操作文本的函数。第三是访问浏览器和 页的接口,JavaScript 程序通过这些接口可以在其所在的 页中获得用户输入、响应用户动作(如单击按钮或填写表单)、让浏览器显示不同的内容或者切换到其他 页。

5、接口:接口或者 API(应用程序编程接口)是提供服务的软件与使用该服务的软件之间的一种约定。库和组件通过 API 提供服务。操作系统通过自身的系统调用接口让硬件看起来更有章可循,而且可以编程控制。


第三部分 通信

第8章 络

1、电话与调制解调器

大约有近 20 年的时间,人们都是通过电话 把家用计算机接入互联 的。在家庭中,电话系统传送模拟的声音信 ,不传输数据。因此,必须有一种设备来实现数字化信息(比特)和模拟的声音之间的转换,才能利用电话 络传输数据。改变要通过声音信 传输的信息的形式叫调制。相反,把这种形式再转换成比特叫解调。而能够完成调制和解调功能的设备就叫调制解调器(modem)。使用电话 络传输数据有很多缺点,比如占用电话线路、速度慢等

2、有线和DSL

电话线传输信 的速度限制是与生俱来的,为此很多人选择了另外两种上 方式:

(1)有线电视电缆。来回转换有线信 与比特数据的设备叫有线调制解调器
(2)DSL(Digital Subscriber Loop,数字用户环路),有时候也叫 ADSL(其中 A 代表 asymmetric,意为“非对称”,因为下载带宽比上传带宽高)

3、局域 和以太

电话、有线电缆和 DSL 等联 技术都可以把计算机连接到一个大型系统,但通常会有一定的距离限制。

(1)以太 可以在通过同轴电缆相连的计算机之间传送信 ,每台以太 设备都有一个 48 位的数字标识符,这个标识符独一无二,叫做(以太 )地址。因此,以太 最多可以连接 248(约为 2. 8 × 1014)个设备。你的计算机也有以太 地址,这些地址通常会印刷在机器底部。当然,在 Windows 中使用 ipconfig,在 Mac 上使用 ifconfig 也可以显示这些地址。而且经常会有两个地址,一个是有线 卡地址,一个是无线 卡地址。以太 地址都是以十六进制数字表示的,而且两位数字表示一个字节,因此总共是 12 位十六进制数字。了解了前面讨论的有线 络,也就不难想象以太 也存在同样的两个问题:隐私和资源争用。

(2)以太 有一个明显的缺点——离不开 线。无线 络同时解决了上 和移动的问题。无线 络(当然不用 线)通过无线电波传输数据,只要信 强度足够,在任何地方都可以通信。无线信 覆盖的范围从几十米到几百米不等。与电视遥控器使用的红外线不同,无线信 不一定非要直线传播。但是,金属物(比如墙壁和隔断)和混凝土结构(如楼板)会干扰无线信 ,导致其实际覆盖的范围要远小于在空旷环境下所能覆盖的范围。种使用最广泛的无线联 技术有:蓝牙、nterchange-newline”>RFID(radio-frequency identification)无线射频识别、GPS。


第九章 互联

1、互联 初创于 1960 年代,其初衷在于建造一个 络来连接分散在不同地理位置的计算机。
2、如今的互联 由成千上万个松散连接的独立 络构成,其中的每个 络都连接到另外一个或多个 络。邻近的计算机通过以以太 为主的局域 连接,然后 络和 络再连起来。 络连接采用的设备叫 关或 路由器,其实就是一种专用的计算机,用来把组成信息的数据包从一个 络发送到下一个 络(维基百科上说 关是通用设备,而路由器是专用的,在本书里就不作区分通称为“ 关”了)。 关之间互相交换着路由信息,这样它们就至少知道哪些 络与本地 络相连并可以被访问到。hans: 2; text-align: -webkit-auto; tex每个 络都可以连接上许多计算机主机(以下简称“主机”),比如家里、办公室里、宿舍里的 PC 和 Mac。家用计算机可以通过无线 卡连接到路由器,然后路由器通过电缆或 DSL 链路连接到互联 服务提供商(Internet Service Provider,缩写为 ISP)。办公室的计算机则可用有线 卡与以太 连接。

3、信息在 络之间游弋的时候,被分作称为包(packet)的小块,一个包就是按特定格式组织起来的一串字节。不同设备使用不同的包格式。在互联 上,输送数据的包叫做 IP 包(IP 即 Internet Protocol,互联 协议)。所有的IP 包都是一样的格式。在具体的物理 络上, IP 包通过一个或多个物理包来传输。每个 IP 包会经过多个 关,每个 关都把这个包传递给离包的最终目的地更近的下一个 关。要让这一切运转起来,我们需要以下机制:

a. 地址。就像电话 码一样,每台主机都必须有一个辨识身份的地址,才能跟互联 上的其他主机区分开来。这个辨识 码叫做 IP 地址,长度为 32 位(4 字节)或 128 位(16 字节)。

b. 域名。由于人们不太擅长记忆无规律的 32 位数字,哪怕写成点分十进制也不好记,因 此 , 要 让 人 们 直 接 访 问 一 台 主 机 , 必 须 给 它 取 个 名 字 才 方 便 。 比 如 , 像www.stanford.edu 和 microsoft.com 这种常见的名字,我们称之为域名。 域名系统(Domain Name System,缩写为 DNS)用于将名字转换为地址,是互联 基础设施的重要组成部分。

c. 路由。必须有一种机制,能为每个包查找从源地址到目标地址的路径。前文提到的 关就提供了这种功能。 关之间持续交换路由信息,即互联 上 络和设备的相互连接情况,并根据路由信息把收到的每个包转发到下一个离最终目的地更近一些的 关。
d. 协议。最后,为了使信息在不同计算机之间成功复制,必须有一些规则和步骤,用来准确描述上述机制和其他互联 组件是如何协作的。互联 有很多协议,其中最基础的有两个,一是互联 协议(Internet Procotol, IP),定义了单个包的格式和传输方式,二是传输控制协议 (Transmission Control Protocol,TCP),定义了 IP 包如何组合成数据流以及如何连接到服务。两者合起来起就叫 TCP/IP。

读书笔记∣世界是数字的

其他协议:文件传输协议FTP、远程登录Telnet、简单邮件传输协议SMTP、文件共享和点对点协议

第10章 万维

1、互联 最外在的一面就是万维 (World Wide Web),也就是我们常说的“上 ”的“ ”(简称 Web)。虽然平常我们不怎么区分互联 和万维 ,但两者其实并不相同。万维 连接着提供信息和请求信息的计算机(提供信息的叫服务器,请求信息的叫客
户端,比如我们的个人计算机),它通过互联 建立连接和传送信息,并为互联 支持的其他服务提供人机界面。

2、万维 主要有以下四个组成要素:

a. URL(Uniform Resource Locator,统一资源定位符),形如 http://www.amazon.com,用于指定要访问信息的名字以及信息所在位置。

b. HTTP(HyperText Transfer Protocol,超文本传输协议)它让客户端能够请求某个 URL,同时让服务器能
够返回客户端想要的信息。

c. HTML(HyperText Markup Language,超文本标记语言),描述服务器返回信息的格式(或表现形式)。

d. 浏览器,即运行在客户端计算机上的 Firefox、 Internet Explorer 等程序,它通过URL 和 HTTP 向服务器发送请求,然后读取并显示服务器返回的 HTML。

3、万维 如何工作的span>

(1)点击链接,浏览器就会打开一个到 w3.org 域的 80 端口的 TCP/IP 连接,然后发送 HTTP请求,获取 URL 中域名后面部分表示的信息。例如,如果链接是 http://w3.org/index.html,那么请求的就是 w3.org 服务器上的 index.html 文件。

(2)收到请求后, w3.org 服务器首先判断接下来该怎么做。如果客户端请求获取的是服务器上的文件,服务器就将该文件发送回去,由客户端(也就是浏览器)显示出来。服务器返回的文本绝大多数都是 HTML 格式的,其中包含实际内容和如何显示这些内容
的格式信息。

4、cookie

HTTP 协议是“无状态”的。“无状态”的意思是, HTTP 服务器不必记住不同客户端发送的请求信息,只要向客户端返回了请求的页面,它就可丢弃有关这次数据交换的全部记录。于是,问题就来了:有时候服务器确实需要记住某些东西,如用户已经输入的名字和密码,这样后续的每一次交互就不必让用户反复输入了。怎样才能让 HTTP 记住这些东西呢在于,客户端第一次和第二次访问服务器的时间可能间隔几小时、几星期,也可能访问一次以后再也不会访问,服务器要把信息保留多长时间呢span>

第11章 数据、信息和隐私


声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年8月12日
下一篇 2017年8月12日

相关推荐