发布时间:2015-08-20 17:24:40
假设在父进程中有个指针p指向地址0x1234,fork之后,在子进程中也会有一个指针p执行地址0x1234,
而且此时两个指针指向同一个物理地址,
但是在父子进程任意一方要对p指向的变量进行改写时,系统会调用copy_on_write技术,重新在物理内存中为子进程申请一块同样的地址空间,并用指针p指向之,其内容从父.........【阅读全文】
发布时间:2015-08-19 17:51:49
该讨论基于linux操作系统,其他Unix系统可能不适用
信号量分有名信号量、无名信号量,此处先讨论有名信号量
1、sem_t *sem_open(const char *name, int flag, mode_t mode, unsigned int value);
用于打开一个信号量,该信号量用参数name进行标示,指定同一个name调用sem_open.........【阅读全文】
发布时间:2015-01-19 16:05:03
(假定已存在hello.c文件),则将其编译成hello.ko的makefile可以有以下两种书写方式:方式1、obj-m := hello.o KERNEL_DIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) .........【阅读全文】
发布时间:2014-12-15 15:08:19
1、udp和tcp可以分别绑定到同一个端口 yes,比如DNS可以同时支持tcp和udp,端口都是53 注意与SO_REUSEADDR的区别2、udp也可以调用connect yes,如此即只收取connect指定的远端ip和端口发来的数据 此处connect不会触发三次握手,所以如果对端不可达,只有调用se.........【阅读全文】
发布时间:2014-12-11 16:34:13
假设有n个资源,t个线程,每个线程最多占用a个资源,保证无死锁则应满足条件:t(a-1)= a推理过程:下图矩阵中1表示占用一个资源,0表示等待一个资源 每行有t个,总共a行,前a-1行全1,最后一行至少一个01 1 1 1 ......... 1 1 1 1 1 ......... 1.......................1 1 1 1 ......... 10 0.........【阅读全文】
发布时间:2014-12-09 14:58:02
lst=(4 2 9 6 5 7 1 0 3 8) #定义数组n=${#lst[*]} #数组长度#冒泡for((i=1; i......【阅读全文】
发布时间:2014-12-04 15:50:04
Richards Stevens 《UNIX网络编程 卷1 第3版》35页,TCP状态转换图,有两个特殊情况:同时打开、同时关闭,虽然极其罕见,但可以想象一下:假设两台电脑A、B一、同时打开 1、A发SYNa给B,B在未收到SYNa之前发SYNb给A,此时A、B都进入SYN_SENT状态 2、假设B先收到SYNa(因为A先发的SYNa),此时.........【阅读全文】
发布时间:2014-11-19 19:34:11
转载自http://blog.chinaunix.net/uid-13746440-id-3547287.htmlsocket是用户API与网络协议栈之间的一个中间接口层,用户通过调用socket api将报文传给协议栈,或者从协议栈读取报文。对于用户来说,socket就是一个打开的文件,linux内核中为socket定义了sockfs文件类型:static struct file_system_type sock_fs_t.........【阅读全文】