上一篇博文可以实现基本的网络通信,但是只能服务给一个人,我们可以通过给每个客户端fork()一个子进程,来实现一对多的服务。
方法:
客户端连到服务器以后,服务器启动一个新创建的套接字对话,也就是说父进程可以继续连接下一个客户端,而子进程来需要处理
accept()创建的副套接字,实现通信功能。父进程克隆子进程后可以关闭副套接字close(connect_d),而子进程可以关闭主监听套...
分类:
其他好文 时间:
2014-05-26 05:02:14
阅读次数:
228
sleep_on用于进程休眠,原型如下:
void sleep_on(struct task_struct **p)
当进程访问某个互斥资源时,如果资源被另外进程占用,当前进程就需要休眠。
假设资源的结构如下:
struct res
{
....
struct task_struct *wait;
}
其实我们参考下文件系统的i节点就会发现,i节点也是一种资源,它的结构体中就有一...
分类:
系统相关 时间:
2014-05-26 04:28:02
阅读次数:
439
PGA (ProgramGlobal Area
)程序全局区
PGA是用户进程连接到数据库并创建一个对应的会话时,由ORACLE为服务器进程分配的专门用于当前用户会话的内存区,每个Oracle服务器进程都包含有属于自己的PGA,它只存储这个服务进程的相关信息。PGA是私有的而非共享的,当它对应的用户进程死掉后可将服务器进程及其资源清除和释放。PGA的构成:
l 排序区
用于存放排序操作产生...
分类:
数据库 时间:
2014-05-26 03:46:18
阅读次数:
375
1 进程终止的方法:
主线程的进入点函数返回(最好使用这个方法)
进程中的一个线程调用ExitProcesss函数(应该避免使用这种方法)。
另一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法)。
进程中的所有线程自行终止运行(这种情况几乎从未发生)。
1.1 主线程进入点函数返回
始终都应该这样来设计应用程序,即只有当主线程的...
进程
1 进程的含义:
1.1 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
1.2 另一个是地址空间,它包含所有可执行模块或DL L 模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
2 操作系统启动应用程序的步骤
2.1 调用C/c++运行时的启动函数
启动函数总共4种,WinMainC...
压力测试web压力测试的实现原理都是通过发送大量的重复的页面请求来模拟多用户对被测系统的并发访问,以此达到产生压力的目地。产生压力的手段都是通过录制或编写压力脚本,这些脚本以多进程或多线程的方式在客户端运行,这样通过人为制造各种类型的压力,我们可以观察被测系统在各种压力情况下的反映,从而定位系统瓶颈,作为系统调优的基础。目前已经市场上的性能测试工具不下一百种,从单一的开放源码的免费小工具如 Apa...
分类:
其他好文 时间:
2014-05-26 03:22:29
阅读次数:
305
伴随着多核时代的到来,怎样充分利用好你的多个CPU的优势成了技术的关注点,那就是多线程多进程编程,二者的区别也很明显,进程是操作系统中拥有资源的最小单位,但是是重量级的。线程是系统调度的最小单位,是轻量级的,一个进程可以拥有很多个线程,但是线程是不拥有资源的,同一个进程中的线程共享这个进程中拥有的资源。以前学习java,一个灰常重要的并发方式就是多线程,因为线程的开销要比进程的少很多,而通过加锁来...
分类:
编程语言 时间:
2014-05-24 23:04:56
阅读次数:
389
SocketServer
TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer...
分类:
编程语言 时间:
2014-05-24 22:03:54
阅读次数:
424
每个Erlang进程创建之后都会有自己的PCB,栈,私有堆。erlang不知道他创建的进程会用到哪种场合下,所以一开始分配比较小。如果分配的空间不够了,erlang gc会动态调整堆大小以满足需求,如果分配的空间大了,就会回收内存。文章主要讲述Erlang进程堆垃圾回收机制,以及如何利用erlang gc机制对系统做一些优化...
分类:
其他好文 时间:
2014-05-24 14:28:44
阅读次数:
507
进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft
Win32应用编程接口(Application Programming Interface, API)....