进程、线程的并发 本文是自己学习经验总结,有不正确的地方,请批评指正。 总结一下这一段时间来,有关网络编程的学习。我是从csapp的最后章节的Tiny HTTP服务器开始,以它为基础,改用不同的方式实现并发,包括进程、线程、线程池、I/O多路复用。所有代码见地址:https://github.com ...
分类:
编程语言 时间:
2016-07-12 10:16:58
阅读次数:
258
PHASE_1 使用到的命令: objdump -t bomb | less 我们得到的bomb文件是一个二进制文件,使用 objdump 可以得到反汇编的代码; -t 表示生成符号表,不必关注 . 开头的内容,可以看到phase_1/phase_2/.../phase_6,显然应该是对应不同的关卡 ...
分类:
移动开发 时间:
2016-06-24 12:46:04
阅读次数:
166
在csapp学习或者其他linux底层编程的过程中,一般都会举一些多线程或多进程的例子,配合底层同步原语、系统调用api来解释怎么创建多线程/多进程。 但是这些例子和实际项目中所用到的多线程/多进程编程知识有很大的距离(小例子很好理解,但是为了完成一个任务基本就没有什么思路了)。 我学习多线程/多进 ...
分类:
编程语言 时间:
2016-06-14 11:33:12
阅读次数:
200
本项目大体上就是要求用C\C++来模拟cpu对cache的访问,然后统计hits、misses和eviction的次数。其实并没有想象中的那么难,感觉完全可以当成一道acm里面的大模拟题。。下面就对这个题目涉及到的一些知识点做下总结: (一)linux命令行处理 由于题目要求是在linux下以附加命 ...
分类:
移动开发 时间:
2016-06-01 12:47:26
阅读次数:
774
第十二章 并发编程如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent)。这种常见的现象称为并发(concurrency)。
硬件异常处理程序,进程和Unix信号处理程序都是大家熟悉的例子。
我们主要将并发看做是一种操作系统内核用来运行多个应用程序的机制。
但是,并发不仅仅局限于内核。它也可以在应用程序中扮演重要的角色。例如Unix信号处理程序如何允许应用响应异步事件
例如:用户...
分类:
移动开发 时间:
2016-06-01 06:51:40
阅读次数:
201
第十章 系统级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...
分类:
移动开发 时间:
2016-05-30 15:44:46
阅读次数:
238
第十一章 网络编程我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序。最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真实的Web浏览器提供静态的和动态的文本和图形内容。11.1 客户端 - 服务器编程模型每个网络应用程序都是基于客户端 - 服务器模型的
采用这种模型,一个应用是由一个服务器进程
和一个或多个客户端进程组成...
分类:
移动开发 时间:
2016-05-30 15:26:43
阅读次数:
376
在网上关于这个的实验有几个版本,这个版本只有三关,都比较基础,为了不让大家混淆,对本实验做一下说明:
文件说明
1. bufbomb : 主程序,有四个选项,最常用的是 -t ,后面加自己的姓名等,运行时会根据加入的参数生成cookie,第二关和第三关都会用到。
2. sendstring : 翻译程序,实验要求将字符转化成ascii码输入,两位输入,即想输入0也要输...
分类:
移动开发 时间:
2016-05-27 12:05:48
阅读次数:
489
9.虚拟存储器为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM)。
虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互。
为每个进程提供一个大的,一致的和 私有的地址空间。
提供了3个重要能力。将主存看成磁盘地址空间的高速缓存。
只保留了活动区域,并根据需要在磁盘和主存间来回传送数据,高效使用主存。
为每个进程提供一致的地址空间简化存储器管...
分类:
移动开发 时间:
2016-05-25 09:34:25
阅读次数:
386
本实验设计为一个黑客拆解二进制炸弹的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bomb和主函数所在的源程序bomb.c,不提供每个关卡的源代码。程序运行中有6个关卡(6个phase),每个关卡需要用户输入正确的字符串或数字才能通关,否则会引爆炸弹(打印出一条错误信息,并导致评分下降)!要求同学运用GDB调试工具和objdump反汇编工具,通过分析汇编代码,找到在每个phase程序段中,引导程...
分类:
移动开发 时间:
2016-05-23 15:26:30
阅读次数:
1562