网站大量收购独家精品文档,联系QQ:2885784924

TCP/IP网络技术基础重点.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP/IP网络技术基础重点

用TCP/IP进行网际互连 ——客户-服务器编程与应用 1.客户-服务器模式 在分布式计算中,一个应用程序被动地等待,而另一个应用程序通过请求启动通信的模式,称为客户-服务器模式。其中:发起通信的应用程序称为客户,等待接收客户通信请求的程序称为服务器。客户和服务器分别指两个应用程序,但在实际工作中,我们也将运行服务器程序的计算机简称为服务器。 2.充当客户的服务器 在服务器计算某个请求的响应时,它可能需要访问其他的网络服务。因此,服务器也可能充当客户。在一个有许多可供使用的服务器的网络环境中,经常可以发现某个应用的服务器对另一个应用则是客户。 3.并发 是指真正或表面呈现的同时计算。真正的并发:DNA计算机、多处理器(Multiprocessing)计算机;表面呈现的并发:通过分时(time sharing)机制,使得单个处理器在多个任务之间足够快地切换,以致从表面上这些计算似乎是在同时进行的,从而获得并发的效果。 4.进程vs线程 进程:是执行程序的实例,是具有一定独立功能的程序关于某个数据集合上的一次运行活动,而不是程序的静态版本。进程包括一段地址空间和至少一个执行的线程。线程最重要的信息时一个指令指针,它指明该进程正在执行的地址。线程:是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。 关系:线程是进程的一个组成部分,线程由进程创建,因此一个进程中至少存在一个线程,线程还可以创建其它线程;进程是资源分配和保护的基本单位,线程只能在进程的地址空间活动,线程只能使用其所在进程的资源;线程作为基本的调度单位,其状态有:就绪、运行、阻塞等;进程中所有线程共享进程的存储空间和分配资源。 线程的特征:动态创建、并发执行、抢先、私有局部变量、共享全局变量、共享文件描述符、协调和同步函数。线程的优点:更高的效率:上下文交换的额外开销减少;共享的存储器:通信开销减少,且更容易构造监控系统。补充:创建和撤消线程的开销非常小:不需要向系统请求独立的地址空间及进行相关的地址空间复制(例如父子进程),因此创建和撤销线程系统的开销要远小于进程。线程的缺点:由于线程间共享存储器和进程状态,一个线程的动作可能对同一进程中的其他线程产生影响:线程安全;健壮性。进程中有多个线程在同时运行,而这些线程可能会同时运行一段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。多个线程操作同一个数据段时,用相应的互斥机制,避免数据段中的数据错误。 5.局部和全局变量的共享 如果多个线程在同一个进程内执行,则它们各自拥有一份独立的局部变量的副本,且都可以共享进程的全局变量副本。 fork()函数:将运行的程序分为两个几乎完全一样的进程。用户执行该并行程序时,OS创建一个含单线程的进程执行代码;当线程执行到fork()调用时,OS复制进程,每个进程都启动一个从代码的同一位置开始执行的线程,这两个进程中的线程继续执行,就像两个用户同时启动了该应用程序的两个副本。调用fork()函数的进程称为父进程, fork()函数新创建的进程称为子进程。虽然一个进程可以包含多个线程,但fork()函数新创建的进程均为单线程的;fork函数要向它的调用者返回一个值。返回给原来进程的值与返回给新创建进程的值是不同的。在新创建的进程里,fork返回零;在原来的进程里,fork返回一个小的正整数来标识(pid)新创建的进程。 #includestdib.h #includestdio.h int sum; main(){ int i; sum=0; fork(); for (i=1;i=5;i++) { printf(“The value of I is %d\n”,i); fflush(stdout); //在printf()后使用fflush(stdout)的作用是立刻将要输出的内容输出。 sum+=i;} printf(“The sum is %d\n”,sum); exit(0); } #includestdio.h int sum; main(){ int pid; pid=fork(); if(pid!=0) { printf(“The original process prints this.\n”); } else{ printf(“The new process prints this.\n”); } exit(0); 6.接口的功能 分配用于通信的本地资源;指定本地和远程通信端点;(客户端)启动连接;(客户端)发送数据报;(服务器端)等待连

您可能关注的文档

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档