摘要: 11.3全球因特网 因特网的客户端和服务器混合使用套接字接口函数和UNIX I/O函数来进行通信。通常将套接字函数实现为系统调用,这些系统调用会陷入内核,并调用内核模式的TCP/IP函数。 IP协议提供基本的命名方法和递送机制,这种机制可以从一台因特尔网主机往其他主机发包(数据报) IP协议是不可靠 阅读全文
posted @ 2022-09-01 21:59 227569hy 阅读(38) 评论(0) 推荐(0)
摘要: ##第十一章网络编程 ###11.1 客户端-服务器编程模型 包含一个服务器进程和多个客户端进程。 服务器管理某种资源,并通过操作这种资源给客户端提供某种服务。 基本操作是:事务 一个客户端-服务器事务由以下四步组成: 当一个客户端需要服务时,他向服务器发送一个请求,发起一个事务 服务器收到请求,就 阅读全文
posted @ 2022-08-31 21:52 227569hy 阅读(66) 评论(0) 推荐(0)
摘要: ![image](https://img2022.cnblogs.com/blog/2945255/202208/2945255-20220829220121423-1520603786.png) 阅读全文
posted @ 2022-08-29 22:01 227569hy 阅读(17) 评论(0) 推荐(0)
摘要: 9.10 垃圾收集 垃圾收集器是一种动态内存分配器,它自动释放程序不再需要的已分配块。它定期识别垃圾块,调用相应的free,并把这些块放在空闲链表中。 垃圾收集器将内存视为一张有向可达图,图包括根节点和堆节点 每个堆节点对应堆中的一个已分配块。边的方向表示块p中的某个位置指向q的某个位置。根节点是不 阅读全文
posted @ 2022-08-29 22:00 227569hy 阅读(50) 评论(0) 推荐(0)
摘要: ###9.9 动态内存分配 动态内存分配器维护一个进程的虚拟内存区域,称为堆。 对于每个进程,内核维护一个变量brk,它指向堆的顶部。 分配器将堆视做一组不同大小的块的集合来维护。每个块就是一个连续的虚拟内存片,要么是已分配的,要么是空闲的。块被释放要么是应用程序显式的执行的,要么是内存分配器隐式的 阅读全文
posted @ 2022-08-28 20:10 227569hy 阅读(209) 评论(0) 推荐(0)
摘要: ###9.8 内存映射 定义:将一个虚拟内存区域和一个磁盘上的对象关联起来,以初始化这个虚拟内存区域的内容的过程被称为内存映射。 虚拟内存区域可以映射到下面两种类型的对象中的一个: Linux文件系统中的普通文件:因为按需进行页面调度,所以这些虚拟页面没有实际交换进入物理内存,而是等到CPU第一次引 阅读全文
posted @ 2022-08-28 20:09 227569hy 阅读(190) 评论(0) 推荐(0)
摘要: ###9.7 案例:Intel Core i7/Linux 内存系统 见书576 ###9.8 Linux虚拟内存系统 与进程相关的数据结构(比如:页表、task和mm结构、内核栈)对每个进程不同 物理内存内核虚拟内存 内核代码和数据对每个进程一样 用户栈进程虚拟内存 共享库的内存映射区域 运行时堆 阅读全文
posted @ 2022-08-25 21:29 227569hy 阅读(83) 评论(0) 推荐(0)
摘要: ###9.3 虚拟内存作为缓存的工具 虚拟内存和物理内存的分页 虚拟内存可以分为: 未分配的,没有数据和它们相互关联,不占用磁盘空间。 缓存的,当前已经缓存在物理内存中的已分配页。 未缓存的,未缓存在物理内存的已分配页。 页表: 页表将虚拟页映射到物理页。页表是由页表条目(PTE)组成的数组。 PT 阅读全文
posted @ 2022-08-23 21:06 227569hy 阅读(69) 评论(0) 推荐(0)
摘要: ##第九章 虚拟内存 ####前言 为了有效的管理内存,现代系统建立了虚拟内存的概念。 虚拟内存: 将主存看做一个存储在磁盘上的地址空间的高速缓存,在主存中只包含活动区域,高效使用了主存。 为每个进程提供了一致的地址空间,简化了内存管理。 保护了每个进程的地址空间不被其他进程破坏。 ###9.1 9 阅读全文
posted @ 2022-08-22 21:36 227569hy 阅读(40) 评论(0) 推荐(0)
摘要: ![image](https://img2022.cnblogs.com/blog/2945255/202208/2945255-20220822203233545-1871798038.png) 阅读全文
posted @ 2022-08-22 20:33 227569hy 阅读(9) 评论(0) 推荐(0)