网络编程
计算机的发展史
最初的计算机是一台很大的机器,没有操作系统,cpu直接与插线板相连接的,计算机在计算一个程序的时候是不能同时计算其他的程序的,一次只能一个程序员使用,由于每次开启cpu计算都需要插线,都需要手动输入数据,导致upc长时间都是空闲的状态,他的好处是一个人可以独享一个计算机,在代码执行过程中遇到bug可以及时修复,但是每次开启cpu都需要一定的时间,当一个人正在计算他的程序的时候,有更加紧急的程序等着cpu计算的时候,这时候cpu正在执行前一个任务,自然是执行不了更加重要的任务了
后来由于每次不同的程序员去使用计算机时都要开启计算机输入数据太耗费时间了,人们就发明了一个机器,将序员写的代码刻进磁带里,集齐十个程序员写的代码,由一位工作人员将准备好的磁带放进机器里,由cpu同时执行这十个人的代码,等cpu执行完了之后,再由统一输出,这一改变虽然是解决了一部分cpu的使用效率,但是程序在出现问题的时候由于程序员不在计算机旁边,也不能对代码进行任何更改,如果有问题也只能等到十个程序运行完了看了结果在进行更改,,后来觉得人工收集好代码给cpu执行的时候,既耗费人工,又认为人工在传输的时候还是会没有机器执行的快,所以就有了第三代计算机,也就有了多道技术
多道技术:就是cpu在执行一条指令的时候,遇到io阻塞就切换到执行下一个任务,或者是当一个cpu长时间执行一个任务的时候,操作系统强行将此任务挂起,去执行其他任务,这一改版提高了cpu的使用效率.,
关于cpu执行任务的方式,有如下几个方式
串行:cpu启用先来后到的方式,先执行先传过来的任务,不管中间有没有io阻塞,都会等任务执行完了之后再去执行下一个任务,这样会导致cpu大部分时间都在未被使用状态
并发:cpu在执行任务时,遇到io阻塞就切换到下一个任务,或者长时间执行一个任务的时候,操作系统会强制将这个任务挂起,去执行其他的任务
并行:多个cup同时执行多个任务
阻塞:input,print,recv,send,read,等都是阻塞,
非阻塞:高计算,不涉及到阻塞里面那些关键字的都是非阻塞
同步:执行一个程序一直等到代码结束在进行下一个任务
异步:执行程序的时候遇到io阻塞就切换到下一程序