- 博客(20)
- 收藏
- 关注
原创 线程的创建、等待、终止、分离
在linux的下线程是在进程的地址空间中运行的是进程内部的一个执行分支,被称为轻量级进程。线程的原理如下图: 如图所示上图中的所有线程都是和主线程公用同以空间通过页表映射到同一物理内存。由于同一进程的多个线程共享同一地址空间,因此文本段和数据段都是共享的,如果定一个函数,在各个线程都可调用,如果定义一个全局变量,在各个线程中都可以访问到,除此之外,各线程贡献一下进程资源和环境。
2017-07-31 17:47:31
528
原创 进程间通信之共享内存
什么是共享内存?共享内存顾名思义就是:两个不同的进程之间共享同一块内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址。从上面这张图中我们可以看出,共享内存其实是两个进程通过各自的地址空间加页表的映射,映射到同一块物理内存区域
2017-07-28 21:34:51
432
原创 进程间通信之消息队列
消息队列:消息队列本质上是提供了一种从一个进程向另一个进程发送数据快的方法。每个数据快都被认为是有一个类型,接受者进程接收的数据块可以有不同的类型值。消息队列和管道的区别:(1)、消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先进先出的。(2)、消息队列的生命周期是随内核的(不随进程的结束而结束),而管道的生命周期是随进程的。(3)、消息队列与命名管道有一
2017-07-25 16:09:46
445
原创 NAT技术与代理服务器调研
NAT技术NAT是地址转换协议,将内网地址转换为公网地址。简单的说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共IP地址紧缺的问题。NAT功能NAT不仅能解决了lP地址不足的问题,而且还能够有效
2017-06-25 21:37:21
383
原创 端口分类调研
端口端口:"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。端口的分类按照端口号的大小分类,可分为如下几类[1] :(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口
2017-06-25 21:30:50
277
原创 CRC校验
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC码由两部分组成,前一部分是k+1个比特的带发送信息,后一部分是r个比特的冗余
2017-06-19 16:58:32
3648
原创 守护进程
守护进程:守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。守护进程的特点:(1)、Linux系统启动
2017-06-18 13:52:45
502
原创 子进程的异步等待方式
原来只给大家介绍过僵尸进程,而没有介绍僵尸进程是怎么回收的,今天就给大家介绍一下如何回收僵尸进程。用wait和waitpid函数清理僵尸进程,父进程可以阻塞等待子进程结束,也可以非阻塞地查询是否有子进程结束等待清理(也就是轮询的方式)。采用第一种方式,父进程阻塞了就不能处理自己的工作了;采用第二种方式,父进程在处理自己的工作的同时还要记得时不时地轮询一下(也就是过一段时间过来看一下是否有子进程
2017-06-16 23:50:58
269
原创 信号的捕捉
信号的捕捉信号捕捉:如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。(递达在前面已经讲过了)。先画张图来简单的描述一下信号捕捉的过程。上图中很好的说明了信号的处理是从内核态切换到用户态是处理的信号,而上面的ABCD则是4次模式切换。其中CB是从内核态切换到用户态,而AD则是从用户态切换到内核态的。而C的这一步则是信号的捕捉(用户自定义捕捉信号)假
2017-06-14 23:17:35
939
原创 atexit()函数
Atexit简介函数名: atexit头文件:#include功 能: 注册终止函数(即main执行结束后调用的函数)用 法: void atexit(void (*func)(void));注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。
2017-06-13 00:02:13
468
原创 线程安全和可重入函数
线程安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提
2017-06-08 22:35:59
277
原创 死锁
什么是死锁?死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或者系统产生了死锁,这些永远在互相等待的进程称为死锁进程。产生死锁的死歌必要条件。1、互斥条件:指进程对所分配的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占
2017-06-06 23:56:07
342
原创 多态与继承中多态
多态多态:一词最初来源于希腊语,意思是具有多种形式或形态的情形,在C++语言中多态有着更广泛的含义。 【静态多态】静态多态:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。静态多态的事例:int my_add(int a, int b){ return
2017-04-18 14:06:49
437
原创 继承
继承概念:继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程 。class Base{public: Base() { cout<<"B()" <<endl; }
2017-04-16 15:54:45
269
原创 宏
在c语言中我们写好代码首先就是预处理、编译、链接、然后就是生成.c文件。预处理(宏替换、去注释、头文件展开、条件编译),编译(翻译成汇编语言),汇编(翻译成二进制),最后链接(其实就是链接函数,比如pritnf函数,我们自己不用写,而是直接调用库函数这时候就是链接库函数使我们的printf能正常使用或者我们自己定义的函数自己就要本地自己调用自己的函数等等)。今天我就写一些关于宏的一些知识有些地
2016-11-03 17:05:52
406
原创 初次见面请多多关照
我来自西安工业大学,是一个不起眼的学生,也没什么特长,此时此刻的我就是有点爱玩游戏,但是现在大三,对于大三的我没有多少时间在玩了,必须努力的学习恶补一下以前没有学好的东西。希望一年以后的我能够信心满满的去参加面试。
2016-09-25 21:43:45
824
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人