网络应用程序的实现
来源:互联网 发布:高乐股份 人工智能 编辑:程序博客网 时间:2024/05/23 19:19
分类: 虚拟化
主框架通常是用中文编写,自然、简单。Socket线程,非阻塞式线程调度,阻塞式线程调度都是内核实现的,无需用户编写;我会陆续给出它们的源码。我的意见是有志于智能系统领域的兴趣者都应学习简单的汇编语言及CPU的结构。不要在C语言,高级语言上浪费时间,对于熟识硬件毫无帮助。汇编语言的熟识可以玩下MSP430单片机或ARM的CortexM3。不要去了解IN*,AM*那些垃圾CPU。更不要去试图了解WINDOWS,LINUX的内核;那会把你弄得晕头转向!LINUX虽然是公开源代码,但给你1000万行;你有时间?
网络应用程序通常是使用非阻塞式线程调度;非阻塞意思是在进程的时间片内,如果线程的执行时间是比较长,甚至在时间片内都无法完成一个线程。就不应等一个线程执行完毕才运行下一个线程。应公平分配各个线程的执行时间片,让每个线程在进程的时间片内都可能有机会执行。即是说一个线程不应阻塞另一个线程;每个线程按优先级都论一遍后再从头按优先级轮转。
入口:入口在进程的初始化中实现。非阻塞线程的条件限制在应用程序中的线程实现。通常处理x包数据后先让位,下次轮到后再接着继续。
R2 = 网络应用程序数据段.线程位图地址;
R1 = 网络应用程序数据段.非阻塞线程位图地址;
R3 = 网络应用程序数据段.线程数;
R4 = 线程入口表地址;
非阻塞线程调度{ // 这是内核类库中的非阻塞式线程调度宏代码
Mp1;
MOV( *R1,*R2,R3 ); // 复制线程位图到非阻塞线程位图,长度R3。
SS1( R0,*R2,R3 ); // 搜索线程位图最高位为1的高优先级中断号送R0。
BTB1 Z, 内核开始; // 到达尾部结束跳,无线程任务将时间片交回给内核。
Mp2;
SS1N( R0,*R1,R3 );// 搜索非阻塞线程位图高位为1的线程号送R0,并置位为0。
BTB1 Z, Mp1; // 到达尾部结束,所有需运行的线程已经执行一遍跳新一次循环。
TBH( R4,R0 ); // 查表跳转指令; 运行相应线程。
JMP Mp2; // 继续,将所有需运行的线程执行一遍。
}
网络应用程序主框架。
main{ // 代码根节点,JDMUF根节点(进程)描述符由内核定义。
非阻塞线程调度; // 编译器会自动替换该节点为内核类库中相应的宏代码。
线程入口表地址; // 线程接口,标号要顶格写。
初始化函数; // 包含线程初始化代码,Socket系统调用。
SNP对象通信线程; // 1号消息处理线程。
鼠标键盘消息处理线程; // 2号消息处理线程。
定时器消息处理线程; // 如需要处理定时器消息则增加这一个线程。
中断消息处理线程; // 如需要处理中断则增加这一个线程。
Socket线程; // 该线程代码在类库
用户线程6; // 6号用户处理线程。如需要则增加,一切随意。
。。。。。。。。。
}
- 网络应用程序的实现
- Windows实现基于TCP的网络应用程序
- 【WM】应用程序实现网络去附着(unregister)的简便方法
- 网络应用程序的框架
- 基于TCP的网络应用程序
- 实现应用程序的功能
- 动手实现TCP的Nagle算法,提高网络应用程序的性能
- NAT技术的主要实现方式及其对网络应用程序的使用影响
- 在低速网络下利用VNC实现应用程序共享的解决方案
- TCP 的 网络应用程序的编写
- Socket:应用程序与网络之间的应用程序编程接口
- 影响网络应用程序性能的因素
- 影响网络应用程序性能的因素
- Java应用程序的网络运行环境编程
- Java应用程序的网络运行环境编程
- 编写地址族无关的网络应用程序
- Libnids---编写网络应用程序的利器
- 如何提高网络应用程序的性能
- TCP/IP,HTTP,SOCKET的区别
- Unity3D手机中Input类touch详解
- TCP实现1
- 网络通信协议的实现
- 在vim和macvim中使用中文帮助文档!
- 网络应用程序的实现
- 2015 Small Business Book Awards Community Choice Winners
- 获取手机屏幕大小
- CentOS 6.5 (CentOS 7)安装过程记录
- Hibernate Java、Hibernate、SQL 之间数据类型转换
- 字符之谜
- unity官方教程Space Shooter 学习笔记
- 第三节 常用组件 之 Lookup 关系和平面文件查找
- jquery中止冒泡行为