自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

翻译 3. 内存管理(Memory Management)

计算机有几兆字节的非常快速,昂贵,且易变的,几千兆字节的中速,中等价格,易变的,以及几千兆字节缓慢,便宜,非易变的磁盘/固态硬盘存储,不涉及可移除的存储,例如 DVDs 和 USB 存储器。这被称为。操作系统管理内存层级的部分被称为,它追踪处于使用中的内存,在需要时向进程分配内存,不需要时解分配内存。

2023-06-21 10:21:46 1398

翻译 4. 文件系统 (FILE SYSTEM)

所有的应用都需要存储和检索信息。当进程运行时,它可以存储有限数量的信息到自己的地址空间中。然而,其存储能力受限于虚拟地址空间的大小。对一些应用来说,虚拟地址空间并不能满足其存储需求。将信息保存在进程的地址空间的第二个问题是,当进程结束时信息会丢失。对很多应用来说 (e.g.,数据库),信息必须维持几周,几个月,甚至是永远。当使用它的进程终止时,信息就丢失了是不能接受的。进一步而言,当计算机崩溃导致进程被杀死时,信息也不能丢失。

2023-06-19 14:27:10 297

翻译 链接(Linking)

在编译期,编译器向汇编器导入每个全局符号,汇编器显式地将符号信息编码到可重定位对象文件地符号表中。函数和初始化的全局变量获得强符号。未初始化的全局变量获得弱符号。例如图 7.1 中的程序,buf,bufp0,main 和 swap 是强符号,bufp1 是弱符号。多个相同的强符号是不允许的。一个强符号,多个弱符号,选择强符号。多个弱符号,选择任一弱符号。4 return 0;12 }

2023-06-13 14:07:06 210

翻译 过程调用(Procedures)

此外,Q 使用栈帧存储任何它所调用的过程所传入的参数。如上图所示,在被调用过程中,第一个参数位于相对 %ebp 8 的偏移处,剩余的参数 (假设它们的数据类型不需要超过 4 字节大小的空间) 存储于连续的 4 字节块,即参数 i 位于相对 %ebp 4 + 4i 的偏移处。栈帧的边界分别是两个指针,依据栈增长的方向,下边界为帧指针,上边界为栈指针。传入 Q 的参数被存储在 P 的栈帧中,除此之外,当 P 调用 Q 时,P 的返回地址 (指令的作用是将返回地址推入栈中,并跳到被调用过程的起始点。

2023-06-02 15:54:57 610

翻译 数据对齐(Data Alignment)

Linux 的对齐政策遵循 2 字节数据类型 (e.g.,short) 的地址必须是 2 的倍数,更大的数据类型 (e.g.,int*,float,和 double) 的地址必须是 4 的倍数。使用 9 字节的分配,不可能满足 d 中每个元素的对齐要求,因为这些元素的地址将为 Xd,Xd + 9,Xd + 18,Xd + 27。如果我们以 9 字节打包该结构体,对于字段 i,和 j 依然能满足对齐要求,只要结构体的起始地址能满足 4 字节对齐的要求。因为字段 i 的偏移是 0,该字段的地址就是 r 的值。

2023-05-26 16:02:57 240

翻译 Proactor

Proactor架构模式用于事件驱动的应用程序,同 Reactor 模式一样,也需要解多路复用,分发事件,但是 Proactor 解多路复用和分发的事件是在异步操作完成时触发的,异步操作的并行性提升了应用程序性能。

2023-05-15 09:49:11 98

原创 线程池 (Thread Pools)

线程池维护一组线程,线程可以是预先分配好的,也可以在线程池运行过程中进行分配。

2023-05-05 14:02:03 451

原创 消息队列 (Message Queue)

消息队列。

2023-05-05 10:59:23 832

翻译 Chapter 6. An Overview of Operating System Concurrency Mechanisms

网络应用,特别是服务器,总是经常并行地处理请求以满足服务质量的需求。第 5 章描述了并行选项相关的一般设计权衡点。本章展示用于实现这些设计的同步事件解多路复用器,多进程,多线程,和同步机制的概览。我们也讨论了一些使用原生 C-level 并发 API 时带来的兼容性和编程问题。

2023-04-19 10:53:09 49

翻译 Chapter 5. Concurrency Design Dimensions

Section 5.1 描述了并行服务器的好处,它可以使用多线程或多进程实现。这一维度主要的权衡涉及鲁棒性,效率,和可拓展性。,例如虚拟内存,I/O handles,和 signal handles,并通过硬件避免受到其他进程的影响。由 UNIX 上的fork()或 Win32 上的创建的进程同时执行在与调用方不同的地址空间中。这些机制将在 Chapter 8 中详细展开。早期出现的操作系统,例如 BSD UNIX,提供仅有一条控制线程的进程。

2023-04-12 11:35:14 55

翻译 9. Broadcasting 和 Loacl Multicasting (IGMP 和 MLD)

我们在第二章中提到有 4 种类型的 IP 地址:unicastanycastmulticastbroadcast。IPv4 能使用所有类型的地址,IPv6 能使用除broadcast外其他所有类型的地址。本章我们讨论 broadcast 和 multicast 更多的细节,包括链接层寻址如何被用于高效地发送从一个计算机到其他几个的 multicast 或 broadcast 流量。我们也探查。

2023-04-07 13:40:58 264

翻译 ICMPv4 和 ICMPv6:Internet Control Message Protocol

IP 协议没有为终端系统提供直接地方法来了解没有到达目的地的 IP packet 的命运。此外,IP 也没有提供一个直接的方法来获取诊断信息 (e.g.,哪个路由器在延路径使用或一种用于评估 round-trip 时间方法)。为了解决这些缺陷,(ICMP) 和 IP 一起结合使用以提供与 IP 协议层的配置和 IP packets 的配置相关的诊断和控制信息。ICMP 通常被认为是 IP 层本身的一部分,它应该存在于任何 IP 层的实现。它使用 IP 协议进行传输。

2023-03-31 14:11:46 207

翻译 Chapter 3. ACE Socket 封装外观

它们因此封装由现存非面向对象的 APIs 提供的函数和数据,使用更加简明,稳定,可移植,可维护,和更集中的面向对象的类接口。我们的迭代服务器的主要缺点是当很多客户端同时发送请求时,且当 Web 服务器正在处理某个请求时,OS Socket 的实现仅排队很少的数量(比如,5 ~ 10) 的连接请求。封装外观提供一个接口,通过默认值和多个构造函数 (构造函数有几个类型签名的变体) 简化常见的内存映射文件的使用,例如,“从打开的文件 handle 映射” 或 “从文件名映射”。函数中的 I/O 方法将阻塞。

2023-03-30 09:35:23 74

翻译 Chapter 2. Socket API 概览

早先的章节专注于网络应用通讯设计领域的模式化,提供了很多解决内在固有的复杂度的指导。本章开始深入解决方法领域,从最常见的进程间通讯 (IPC) 机制开始:socket。描述 Socket API 和它在 TCP/IP 中的使用,随后分析当开发者使用原生 OS APIs 进行网络应用编程时会发生的常见意外复杂度。

2023-03-28 10:25:56 72

翻译 Chapter 1. 通讯设计维度

通讯是网络应用设计的基础。本章展现了通讯设计维度的域分析,它引入了网络应用用于彼此交互的规则,格式和抽象等级。

2023-03-27 11:33:02 54

翻译 设计挑战,中间件解决方案,和 ACE

本章描述了在分布式计算环境中有效开发网络应用和中间件的挑战。在开发软件时,从严格约束的实时和嵌入式系统到最新的中间件抽象以及下一代具有严格的 QoS 需求的网络应用,我们引入了内在复杂度和意外复杂度。我们展现了一种对中间件分层的分类法,强调了主机基本架构中间件的好处,这也是本书所聚集的。本章也引入了对网络应用架构的关键设计维度的域分析结果。通讯协议和机制并发架构服务架构服务配置策略最后,我们引入网络日志服务。

2023-03-10 10:26:37 211

翻译 操作系统简述

操作系统是计算机最基本的,它运行于,能完全访问所有硬件,执行任何机器能执行的指令。剩下的软件运行于,用户模式只提供机器指令的子集。影响机器的控制或执行 I/O (输入/输出) 操作的指令禁止用户模式的程序使用。用户接口程序,shell 或 GUI,是最底层的用户模式软件,它们允许用户启动其他程序,例如网页浏览器,音乐播放器等。用户接口程序也被操作系统频繁使用。操作系统的位置如图 1-1 所示。它运行于裸硬件之上,为所有的其他软件提供基础。操作系统是以内核模式运行地软件,它执行两个功能:1. 为应用程序员

2023-03-08 17:25:34 327

翻译 SQL:插入,更新,和删除数据

命令被用于在指定表中插入新的行。该命令有两个版本,第一个版本使用提供一个表名,随后是列列表和值列表。两个列表的项数必须相同。创建新的行,并且值被记录到各自的列中。列列表中的列可以是任何顺序,但是值列表中的值需要与之对齐。当批量导入数据时,在数据集中循环十分常见。一次处理一条语句十分缓慢,因为每个命令将更新表和相关的索引,并确认在下次前数据被切实地写入到了物理磁盘中。这是一个非常长地过程,因为需要执行物理 I/O。如同其他命令一样,每个命令通常被包含在它自己的事务中。

2023-02-28 10:44:15 436

翻译 SQL:SELECT 命令

主要的 SQL 数据结构是表。表被用于存储和数据管理。表由表头和表体组成。表头定义每列的名字和类型。列名在表中必须唯一。表头也定义列的排序,它被固定为表定义的一部分。表体全部由行组成。行由数据元素组成,一列一个。每个元素保存一个数据值 (或一个 NULL)。SQL 表允许保存重复的行。表能保存这样的多个行,其每个用户定义的列对应都有完全等价的值。重复的行通常在实践中是不期望的,但它们确实被允许。当一个表被展示或写入,它可能具有某种固有的顺序,但是在概念上,表是无序的。插入的顺序对表来说毫无意义。

2023-02-24 09:34:36 925

翻译 SQL:事务控制语言

事务是关系型数据库保护数据的完整性和可靠性的基础部分。事务被用于所有 DDL 和 DML 命令。

2023-02-23 10:05:41 196

翻译 Database:RDBMs 中的内部模式定义

关系型数据库的内部模式能控制处理和存储效率。

2023-02-22 15:01:59 54

翻译 Preemption

是一种临时中断执行任务的一种行为,并打算在随后的某个时间点恢复任务的执行。这一中断由内部的调度器完成,不需要来自任务的协助或合作。这种抢占式调度器在最特权的 protecting ring 中运行,意味着中断和恢复被认为是具有极高安全性的操作。在处理器中执行的当前任务的这种改变被称为上下文切换。

2023-02-15 00:57:45 110

翻译 Execution

计算机或软件工程中的是计算机或虚拟机读取并执行计算机程序的指令的过程。程序的每一个指令都是为了解决某个特定问题必须执行的特定行为的描述。执行每条指令时对指令进行。随着执行机器执行指令,依据这些指令的语义产生特殊的效果。计算机中的程序可能执行于批处理程序,或者用户在解释器的交互式会话中输入命令。这种情况下,“commands” 是简单的程序指令,它们被链接在一起执行。

2023-02-14 22:34:28 125

翻译 The Transmission Control Protocol

Transmission Control * 是 Internet protocol suite 的主要协议之一。它诞生于最初的网络实现,作为 Internet Protocol (IP) 协议的补充。因此,完整的套件通常引用为 TCP/IP。TCP 提供 reliable ,ordered,和 error-checked 的应用间字节流传输 (应用在 hosts 上运行,通过 IP 网络)。TCP 是 TCP/IP suite 中运输层的一部分。SSL/TLS 运行于 TCP 之上。

2023-02-07 19:26:57 170

翻译 Explicit Congestion Notification

(ECN) 是对 Internet Protocol 和 Transmission Control Protocol 的拓展,定义于 RFC 3168(2001) 中。ECN 允许端到端的通知 network congestion 而不丢失数据包。ECN 是一个可选的特性,可能被用于两个 ECN-enabled 的终端之间,当底层的网络基础结构也支持的时候。依照惯例,TCP/IP 网络通过丢弃 packets 来通知拥塞。

2023-02-05 16:51:00 280

翻译 Packet delay variation

在计算机网络中,是指流中选出的 packets 之间在上的差异,忽略的任何丢失的 packets。影响有时也被称为,尽管这个定义并不准确。

2023-02-01 13:57:38 148

翻译 Bufferbloat

在这样的设备中,bufferbloat 在网络拥塞时发生,造成 packet 在这些过大的 buffers 中的排队时间很长。在 first in,first out 队列系统中,过大的 buffers 造成更长的排队和更高的延迟,并不会提升网络吞吐量。当路由器或交换机被配置使用过度大的 buffers 时,对于很多交互式的应用 voice over IP(VoIP),audio streaming,ooline gaming,甚至是 web browing 来说,即使是高速网络也会变得无法使用。

2023-02-01 10:02:48 230

翻译 TCP global synchronization

当延迟过期时,与此同时,所有的发送方都将发送另外的 packets,路由器的队列再次溢出,更多的 packets 将被丢弃,所有发送方都将等待固定的延迟…这一模式的每个发送方与其他发送方都同时减少或增加传输率被称为 “global synchronization”,会导致带宽的低效使用,因为大量丢弃的包必须被重传,还因为较稳定状态下,当发送方在每次丢包后回退时 发送方的发送率降低。队列允许填到它的最大大小,随后新的 packets 被简单的丢弃直到队列中再次有空间。最简单的限制队列大小的技术是。

2023-02-01 09:28:56 130

翻译 Transport Layer Security

(DTLS),是一种相关的通讯协议,为基于 datagram 的应用提供安全性,通过允许它们以设计用于避免窃听,篡改或消息伪造的方式进行通讯。然而,应用通常使用 TLS,好像它在传输层一样,即使使用 TLS 的应用必须主动控制 TLS 握手的初始化以及处理身份认证证书的交换。TLS 协议的主要目标是在两个或多个通讯额计算机应用间提供安全性,包括保密性,完整性,和真实性,通过应用密码学,例如证书。结果,TLS 的安全配置涉及很多配置参数,并不是所有选项都提供上面列表中描述的所有与隐私相关的属性。

2023-01-30 10:10:31 285

翻译 Hash table

当查询某一条目时,使用相同的序列从哈希到的 slot 开始进行查询,直到找到目标条目或者找到一个未被占用的 slot,表示查找失败。为了保证查询和插入操作的性能维持在分摊 O(1) 水平,哈希表被动态调整大小,表中的条目被重新哈希到新的哈希表中的 buckets 中。通常,大小翻倍的新的哈希表被私有地分配,原始哈希表中的条目计算新的哈希值然后执行插入操作,以移动的新分配的哈希表中。理想情况下,哈希函数将每个键分配到唯一的 bucket 中,但是大部分的哈希表设计都使用不完美的哈希函数,这可能导致。

2023-01-28 23:53:54 106

翻译 The Internet Protocol

IPv6 增加了地址的大小,通过使用拓展 header,提升了 IP 在 packets 中包含选项的方法,并移除了几个 IPv4 header 中不重要的字段。当 IP 收到来自 network interface 的 IP datagram,它首先检测自己是否持有 IP datagram 的目的地址 IP 或者自己应该接收该 IP datagram,因为它是 IP broadcast 或 IP 加入了 Multicast address,如果是,向上递交 datagram 到。

2023-01-17 14:40:18 84

翻译 Virtual Memory

操作系统中的软件可能拓展这些功能,利用,例如 disk storage 提供虚拟内存空间来超出真实内存的容量,因此引用较计算机物理提供的更多的内存。整个系统只能有一张页表,或每个应用和 segment 都有单独的页表,或大 segments 的页表树,或这些方式的结合。这一不同点有一个重要的结论;虚拟内存的主要好处包括将应用从管理共享内存空间中解放出来,在进程中共享库使用的内存的能力,隔离内存增加安全性,理论上能使用比物理提供的更多的内存,使用 paging 或 segmentation 的技术。

2023-01-13 17:41:46 288

翻译 ARP: Address Resolution Protocol

如果检测到冲突,ACD 采取以下三种措施:停止使用该地址,保留该地址并发送一个 “defensive” ARP announcement,如果仍有冲突,终止使用该地址或者仍然继续使用该地址,不管冲突 (e.g., 嵌入式设备比如 router 或 printer)。ARP 请求包含一个 IPv4 地址,目的地址为 10.0.0.1 且寻找下列问题的答案:“如果你配置了 IPv4 地址 10.0.0.1 作为你的 IP 地址之一,请向我响应你的 MAC 地址。它宣称发送方意图使用候选的 IPv4 地址。

2023-01-03 16:38:23 236

翻译 Link Layer

虽然我们可以想象 transport layer 检测到另一端是 loopback 地址,简化了一些 transport-layer 的逻辑和所有的 network-layer 逻辑,大部分的实现完全执行了在 transport layer 和 network layer 中的数据处理,仅当 datagram 离开 network layer 底部时,将 IP datagram 环回到 network stack 中。(VLANs) 的能力。,通常来说,是在更高的层的 packets 中携带更低层的流量。

2022-12-21 16:37:46 338

翻译 The Internet Address Architecture

本质上,CIDR 使地址空间的分配更有效。此外,从一些 Internet 其他部分的 hosts 的视角来看,向 12.46.129.0/25 的流量倾向于通过 ISP P2 而不是 ISP P1,因为站点 S 的 前缀长于 (“更明确”) 它通过 ISP P1 时的长度。对于这样的网络,站点或网络管理员通常需要考虑站点需要多少个 IP 地址,如何结构化站点的子网,哪个子网是内部的,哪个是外部的。然而,因为这样的地址由 customer 所有,它们与 ISP 所有的地址数字上不相邻,因此是不可聚合的。

2022-12-16 11:02:21 160

翻译 TCP/IP SUITE

(DoS) 攻击通常涉及重要资源的使用,合法的用户被拒绝服务。例如,向服务器发送很多 IP datagrams,仅是处理到来的 packets 就会花费很多时间,无法进行其他有用的工作,这是一种 DoS 攻击。如果目的地址匹配 IP 的地址之一,且 datagram 的 header 没有错误 (IP 不检查 payload),检查 8-bit 的 IPv4。加密协议能大量减少这些问题。网络层:对于包交换的网络,例如 TCP/IP,它提供一个互操作的 packet 格式,支持连接不同类型的链接层网络。

2022-12-09 16:31:40 119

翻译 Cache in HTTP/1.1

如果缓存接收到一个响应 (无论是一个完整的响应还是一个 304 (Not Modifyed) 响应),该响应通常会转发给请求的客户端,且当收到的响应不再新鲜,缓存应该直接转发它到请求的客户端,不添加新的警告 (也不移除任何现存的警告)。如果存储的响应对客户端和服务器的最高限度的新鲜度需求来说不够“新鲜”,缓存仍有可能返回响应,但响应包含一个合适的 Warning header,除非这样的响应是被禁止的 (e.g.,通过 “no-store” 缓存指令,或通过 “no-cache” 的缓存请求指令)。

2022-11-30 17:19:14 73

翻译 Hypertext Transfer Protocol -- HTTP/1.0

Hypertext Transfer Protocol (HTTP) 是一个无状态的应用层协议,用于分布式的,相互协作的超媒体系统。本文档定义了 HTTP/1.0 的消息语义,分为 request method,request header fields,response status codes,和 response header field是,和 payload of messages(metadata 和 body content)。实际的信息系统需要更多的功能,不单单是简单的检索功能,包括搜索,前后

2022-10-20 09:59:00 656

翻译 Session (Computer science)

在计算机科学和网络中,session 是限定时间的双路链接,是 TCP/IP 协议中相对较高的 layer,在两个或更多通讯设备或终端,可能是计算机,自动系统,用户,之间支持交互表达式和信息交换。session 于特定的时间点建立,在随后的某时间点关闭。一个建立的通讯会话可能在每个方向上都涉及超过一个消息。会话通常是 stateful,意味着至少通讯中的一方需要持有当前状态信息,保存会话的历史以便能够通讯,与之相反的是 stateless 通讯,通讯由独立的请求和响应组成。

2022-10-12 11:30:56 400

翻译 Mediator

更进一步,没有什么效果显著得方法来改变系统的行为,因为行为分布在众多的对象之中。比如,当特定的条目字段为空时,对应的按钮被禁用。包含的 widget 完全相同的对话框也不能简单的重用现存的 widgets 类,因为 widgets 间的关系可能不同。例如,FontDialogDirector 能作为对话框中的 widgets 之间的 mediator。在最糟糕的情况下,每个对象最终都会知道彼此的存在。Mediator 通过避免对象间显式的引用彼此降低耦合度,且能够独立的变更它们间的交互。

2022-09-22 19:21:56 105

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除