IO模型:
(1)阻塞式IO模型:
最流行的I/O模型是阻塞式I/O模型,默认情况下,所有的套接字都是阻塞的。
如上图所示,进程调用recvfrom,其系统调用直到数据报到达且被复制到应用进程的缓冲区中或发生错误才返回。最常见的错误是系统调用被信号中断,我们说进程在从调用recvfrom开始到它返回的整段时间内是被阻塞的。recvfrom成功返回后,应用进程开始处理...
分类:
其他好文 时间:
2016-06-12 03:32:04
阅读次数:
148
大家都知道在Android中通过AIDL可以跨进程调用Service中的数据,网上也有很多实例,但是大部分实例都是关于基本数据类型的远程调用,很少讲到复杂数据的调用,今天我用一个例子来演示一下怎样用AIDL Service 传递复杂数据。 我们分2步开始: 第一步:部署我们的服务端,也就是Servi ...
分类:
其他好文 时间:
2016-05-25 09:19:56
阅读次数:
248
首先,每一个信号都有一个名字,这些名字都是使用相同的三个字母SIG 开始的。举例来说,SIGABRT是当进程调用数abort的时候生成的终止信号。SIGALRM是当函数alaram设置的定时时间到的时候生成的alarm信号。版本7已经有了15中信号;SVR4以及4.4BSD有31种不同的信号,Fre... ...
分类:
其他好文 时间:
2016-05-23 00:28:56
阅读次数:
1472
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不...
分类:
系统相关 时间:
2016-05-20 19:48:46
阅读次数:
266
3.1.1 内核对象的使用计数
内核对象由内核所拥有,而不是由进程所拥有。换句话说,如果你的进程调用了一个创建内核对象的函数,然后你的进程终止运行,那么内核对象不一定被撤消。在大多数情况下,对象将被撤消,但是如果另一个进程正在使用你的进程创建的内核对象,那么该内核知道,在另一个进程停止使用该对象前不要撤消该对象,必须记住的是,内核对象的存在时间可以比创建该对象的进程长。
3.2....
前两讲我们介绍了fork()系统调用以及execve()内核函数(注:所有的库函数exec*都是execve的封装例程)。
简单回顾一下fork()系统调用(传送门:fork()到底干了啥?):
进程调用fork()创建一个新的进程,新进程复制了父进程的task_struct(PCB,process control block,进程控制块),以及tas...
分类:
系统相关 时间:
2016-05-07 11:08:07
阅读次数:
193
本章讨论经典的IPC:管道、FIFO、消息队列、信号量以及共享存储器1 管道管道是Unix系统IPC最古老的方式。管道有下列两种局限性:
(1) 历史上,它们是半双工的(即数据只能在一个方向上流动)。
(2) 它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该进程调用fork,此后父子进程就可以应用该管道#include
int pipe(int f...
分类:
系统相关 时间:
2016-04-29 18:25:32
阅读次数:
218
1 fork基本概念
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同...
分类:
编程语言 时间:
2016-04-29 15:52:11
阅读次数:
179
异常可以认为是函数的另一种返回形式,区别在于它不仅会返回至调用者,还会返回至调用者的调用者,并一路向上,直到被捕获或抵达进程调用的起点(这时进程便会崩溃)为止。 Erlang的异常分为三类: error —— 这类是运行时异常,在发生除零错误、匹配运算失败、找不到匹配的函数子句等情况时触发。这些异常 ...
分类:
其他好文 时间:
2016-04-27 17:12:51
阅读次数:
143
本章讨论经典的IPC:管道、FIFO、消息队列、信号量以及共享存储器1 管道管道是Unix系统IPC最古老的方式。管道有下列两种局限性:
(1) 历史上,它们是半双工的(即数据只能在一个方向上流动)。
(2) 它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该进程调用fork,此后父子进程就可以应用该管道#include
int pipe(int f...
分类:
系统相关 时间:
2016-04-26 20:41:11
阅读次数:
260