信号实现进程间的通信 3.5.1.什么是信号 3.5.1.1.信号是内容受限(只是一个int型的数字)的一种异步通信机制 (1)信号的目的:用来通信(进程与进程之间的通信) (2)信号是异步的(对比硬件中断),信号好像就是一种软件中断. (3)信号本质上是int型数字编号(事先定义好的) 3.5.1.2.信号由谁发出 (1)用户在终端按下按键…
  Linux下高并发网络编程 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统 为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄). 可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:     [speng@as4 ~]$ ulimit -n 1024 这表示当前用户的每个进程最多允许同时打开1…
3.1.1.应用编程框架介绍 3.1.1.1.什么是应用编程 (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机.C高级.uboot和系统移植.linux应用编程和网络编程.驱动. (2)典型的嵌入式产品就是基于嵌入式linux操作系统来工作的.典型的嵌入式产品的研发过程就是:第一步让linux系统在硬件上跑起来(系统移植工作),第二步基于linux系统来开发应用程序实现产品功能. (3)基于linux去做应用编程,其实就是通过调用linux的[系统API]来实现应用需要完成…
老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分   老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/guobaoyuan/ 开哥blog: https://home.cnblogs.com/u/Neeo 女神笔记 目录结构: https://www.cnblogs.com/Eva-J/p/7277026.html 哪吒笔记 目录结构: https://www.cnblogs.com/liwenzhou…
3.7.1.再论进程 3.7.1.1.多进程实现同时读取键盘和鼠标 3.7.1.2.使用进程技术的优势 (1)CPU时分复用,单核心CPU可以实现宏观上的并行.微观上的串行 (2)实现多任务系统需求(多任务的需求是客观的,多任务就是同时要做很多事情) 3.7.1.3.进程技术的劣势 (1)进程间切换开销大(进程断点的保护和进程断点的恢复) (2)进程间通信麻烦而且效率低(进程与进程之间天生是隔离的或者说是独立的) 3.7.1.4.解决方案就是线程技术 (1)线程技术保留了进程技术实现多任务的特性…
术语概念描述: IO有内存IO.网络IO和磁盘IO三种,通常我们说的IO指的是后两者. 阻塞和非阻塞,是函数/方法的实现方式,即在数据就绪之前是立刻返回还是等待. 以文件IO为例,一个IO读过程是文件数据从磁盘→内核缓冲区→用户内存的过程.同步与异步的区别主要在于数据从内核缓冲区→用户内存这个过程需不需要用户进程等待.有个数据拷贝的过程,是拷贝完再通知还是在内核缓冲区就通知.(网络IO把磁盘换做网卡即可) Linux IO模型 同步阻塞 同步非阻塞 IO复用 信号驱动 异步非阻塞 同步阻塞 去餐…
常见的Linux服务端的开发模型有多进程.多线程和IO复用,即select.poll和epoll三种方式,其中现在广泛使用的IO模型主要epoll,关于该模型的性能相较于select和poll要好不少,本文也主要讨论该模型而忽略另外两种IO复用模型. 多线程相较于多进程开销比较小,但是要注意线程间数据的同步访问. epoll模型在Linux2.6内核中引入的,改进了select模型一些明显设计上的明显缺点,具有更高的效率.主要体现在以下几个方面: 1. epoll的通知机制.不同于select查…
网络基础 协议的概念 什么是协议 从应用的角度出发,协议可理解为"规则",是数据传输和数据的解释的规则. 假设,A.B双方欲传输文件.规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方: 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK: 第三次,传输文件内容.同样,接收方接收数据完成后应答OK表示文件内容接收成功. 由此,无论A.B之间传递何种文件,都是通过三次数据传输来完成.A.B之间形成了一个最简单的数据传输规则.双方都按此规则发送.接收数据.A.B之间达…
Linux网络编程数据收发的API流程分析        只要把数据在协议栈中的流动线路和脉络弄清楚了,关于协议栈的实现部分,理解起来就轻松多了.在网络编程章节的数据接收过程中,我们主要介绍过read().recv().recvfrom()还有一个recvmsg()没介绍到,今天我们就来看一下这几个API函数到底有什么差别. 数据接收        在接收数据的过程,主要分两个阶段:BOTTOM-HALF和TOP-HALF.        BOTTOM-HALF:        当从网卡驱动收到…
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(family,type,protocol) 当我们在开发网络应用程序时,使用该系统调用来创建一个套接字.该API所做的工作如下所示: 该系统调用主要完成两个任务:"创建套接字"和"为套接字绑定文件句柄". socket{}<include/linux/net.h>结构…