进程死锁及解决办法-紫魔戒

【摘要】进程死锁及解决办法一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件–以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁的预防策略中... 阅读全文

如何实现守护进程?

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 1、守护进程最重要的特性是后台运行。 2、守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。 3、守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用户终端(shell)执行。   总之,除开这些特殊性以外,守护进程与普...

Linux进程状态转换图

Linux进程状态 Linux内核中的进程状态 ◆运行状态(TASK_RUNNING) 指正在被CPU运行或者就绪的状态。这样的进程被成为runnning进程。运行态的进程可以分为3种情况:内核运行态、用户运行态、就绪态。 ◆可中断睡眠状态(TASK_INTERRUPTIBLE) 处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态。 ◆不可中断睡眠状态(TASK_UNINTERRUPTIBLE) 该状态的进程只能用wake_up()函数唤醒。 ◆暂停状态(TASK_STOPPED) 当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进...

C++ 4种强制类型转换

C++的四种强制类型转换为:static_cast、const_cast、reinterpret_cast和dynamic_cast 类型转换的一般形式:cast-name(expression); static_cast 任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast; double slope = static_cast(j) / i; 注:   顶层const:表示指针本身是个常量。如:int *const p;   底层const:表示指针所指的对象是一个常量。如:int const *p; const_cast 该运算符只能改变运算对象的底层c...

TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复

TCP超时重传   原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。   影响超时重传机制协议效率的一个关键参数是重传超时时间(RTO,Retransmission TimeOut)。RTO的值被设置过大过小都会对协议造成不利影响。   (1)RTO设长了,重发就慢,没有效率,性能差。   (2)RTO设短了,重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。   连接往返时间(RTT,Round Trip Time),指发送端从发送TCP包开始到接收它的立即响应所消耗的时间。 TCP滑动窗...

HTTP与HTTPS异同/HTTP1.0与HTTP1.1差别

HTTP状态码 分类 解释 描述 1XX 信息 服务器收到请求,需要请求者继续执行操作 2XX 成功 操作被成功接收并处理 3XX 重定向 需要进一步的操作以完成请求 4XX 客户端错误 请求包含语法错误或无法完成请求 5XX 服务器错误 服务器在处理请求的过程中发生了错误 常见的状态码 状态代码 状态消息 描述 200 成功 处理请求无误 301 永久移动 内容已移动到位置头中指明的主机上 400 错误请求 服务器不能理解请求 403 禁止 服务器无权访问所请求的文件 404 未发现 服务器不能找到所请求的方法 501 未实现 服务器不支持请求的方法 505 HTTP版本不支持 服务器不支持...

TCP三次握手四次挥手

TCP三次握手四次挥手 标志位缩写 全称 中文 SYN synchronous 建立联机 ACK acknowledgement 确认 PSH push 传送 FIN finish 结束 RST reset 重置 URG urgent 紧急 Seq Sequence number 顺序号码 ACK Acknowledge number 确认号码 状态名称 意义 LISTEN 侦听来自远方TCP端口的连接请求 SYN-SENT 在发送连接请求后等待匹配的连接请求 SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认 ESTABLISHED 代表一个打开的连接,数据可以传送给用...

string–C++ STL 学习

C++STL提供了string基本字符系列容器来处理字符串,可以把string理解为字符串类,提供了添加删除\替换\查找和比较等丰富的方法. 使用string容器,需要包含头文件声明#include 函数名 描述 begin 得到指向字符串开头的Iterator end 得到指向字符串结尾的Iterator rbegin 得到指向反向字符串开头的Iterator rend 得到指向反向字符串结尾的Iterator size 得到字符串的大小 length 和size函数功能相同 max_size 字符串可能的最大大小 capacity 在不重新分配内存的情况下,字符串可能的大小 empty 判...

vector–C++ STL 学习

vector对应的数据结构为数组,而且是动态数组,也就是说我们不必关心该数组事先定义的容量是多少,它的大小会动态增长。与数组类似的是,我们可以在末尾进行元素的添加和删除,也可以进行元素值的随机访问和修改。   vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似.   不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。   vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器...