知识总结(2008.4)
1、Socket:基于C/S结构,用于描述IP地址和端口,进行连接建立的方法。由服务器指定ServerSocket监听的一个端口号;而客户端通过Socket对某一服务器上的某个端口发出连接请求,客户端的端口随机分配一个1024以上的,双方的协议地址与网间通信协议已知。从而可以在应用程序两端都会产生各自对等的Socket实例,通过对该实例的操作,完成所需的对话。通信完成后关闭套接字winsock建立连接的主要实现步骤:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。
2、TCP:传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,用于将以太网、分组交换网上面不规范的数据单元转换成“IP数据报”格式,并规定了IP地址。但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机,而使用TCP协议时,在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包,并可实现错误恢复。
TCP/IP 建立连接的过程:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
UDP:用户数据报协议(User Datagram Protocol)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。传送数据前并不与对方建立连接,使用源机器给出的端口号(如53)标识了请求目的机的何种应用程序,在传输数据前,发送方和接收方相互交换信息使双方同步。UDP传送数据较TCP快速,系统开销也少。
3、进程:程序在同一个数据集上运行活动,一个程序可能对应一个或多个进程(运行在不同的数据集上,通过进程控制块来唯一地标识每个进程);一个进程包括如下参数:实际UID,GID和有效UID,GID;环境变量;附加GID;调用exec()时的关闭标志;UID设置模式比特位;ID设置模式比特位;进程组号;会话ID;
控制终端;当前工作目录;根目录;文件创建掩码UMASK;文件长度限制ULIMIT。
子进程:对同一进程下,所有函数或线程的操作都对共享的数据进行处理,为了保护由于算法错误而造成的对共享地址空间数据的损坏,可以将一部分功能分立出去,仅提供对原进程地址空间的访问权限,从而就生成了一个子进程。子进程所体现出来的作用同函数和线程比较相似,可以看成是父进程在运行期间的一个过程,需要由父进程来掌握子进程的启动、执行和退出。
线程:线程位于进程之下,一个进程下的多线程共享该进程的内存空间,从而对系统的资源进行分配和调度,进行并发处理以提高效率,需要处理冲突(如加锁)。
线程同步机制:通过临界区、互斥量、信号量、事件来实现,还可以使用消息循环。临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问;互斥量:为协调共同对一个共享资源的单独访问而设计的;信号量:为控制一个具有有限数量用户资源而设计;事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
线程通信:同一进程的各线程可以直接读写进程数据段进行通信,也需要同步和互斥手段的辅助
死锁:系统中两个或者多个进程都无限期的相互等待对方释放资源才能继续运行,否则就阻塞,此时系统处于停滞状态,这就是死锁。产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
只要上四个条件一个不满足即可解开死锁
3、回调函数:一个由调用方(如API接口处)自己实现,供被调用方(如消息队列)使用的特殊函数。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
浙公网安备 33010602011771号