1.TCP通信中的三次握手和四次挥手过程
三次握手
1.客户端像向服务器端发送连接请求
2.服务器应答连接请求
3.客户端与服务器简历连接
四次挥手:
客户端或服务器端发起断开请求,这里假设客户端发送断开请求
1.客户端向服务器发送断开请求
2.服务器应答断开请求
3.服务器请求关闭连接
4.客户端发送确认应答
2.并发和并行的区别
并发:一个处理器同时处理多个任务。
并行:多个处理器同时处理多个不同的任务。
3.阻塞IO和非阻塞IO的区别
阻塞IO:若等待的事件没有发生,会一直阻塞等待,不会执行后序的任务
非阻塞IO:如果等待的事件没有发生,会立即返回,继续后序的任务
4.同步和异步的区别
同步是阻塞模式,异步是非阻塞模式
同步:进程必须按顺序执行。例:如果该请求需要一段时间才能返回信息,那么该进程将会一直等待,直到收到返回信息才会继续执行
异步:多个任务执行没有先后顺序,可以并发执行。例:进程不需要一直等下去,而继续执行下面的操作,不管其他进程的状态。节约了时间,提高了效率。
但有些时候必要要用同步解决,就比如必须拿到返回的数据才能对后面进行操作。
5.详细描述IO多路复用的原理
引入目的:
在有操作系统时,想多任务并发执行,可以使用多进程或多线程完成多任务并发执行。但在没有操作系统的情况下,就不能使用多进程和多线程,转而使用IO多路复用技术
原理:
将多个阻塞任务的文件描述符,统一放入到一个检测容器中,然后用一个阻塞函数进行管理,如果检测容器中有一个或多个文件描述符对应的事件产生,就会解除阻塞,进而去执行相应的函数。
6.广播的相关内容
1.主机之间是一对多的通信模式,网络对其中的每一台主机都会进行消息转发
2.在当前网络下的所有主机都会收到广播消息(无论对方是否愿意接受)
3.广播的实现方式是基于UDP通信模型
4.广播地址:当前网络号+全1的主机号
5.广播消息不允许穿过路由器
7.组播的相关内容
1.广播是给同一网络下的所有主机发送消息,会占用大量的网络带宽,影响正常的网络通信
2.组播也是实现一对多的通信机制,只有加入了同一个小组的主机可以收到该组内发送的数据
3.组播也是通过UDP实现的
4.组播地址:D类网络(224.0.0.0---239.255.255.255)
8.在使用套接字通信时,客户端就一定不需要绑定操作吗
不一定,对于报式域套接字,如果不绑定套接字文件,系统不会自动绑定,发送数据没有问题,但是服务器不能向客户端发送信息
9.进程间通信的方式有哪些
套接字、共享内存、管道(有名管道、无名管道)、信号、信号灯集、消息队列
10.线程的同步互斥机制
在多任务操作系统中,同时运行的多个任务可能:
都需要访问、使用同一种临界资源
多个任务之间有依赖关系,某个任务的运行依赖于另一个任务
同步:进程必须按顺序执行
互斥:一个临界资源在同一时刻只能被一个进程或线程使用,不能同时使用。
线程之间,如果要进行通信,需要引入同步互斥机制,避免产生竞态。保证任何一个时刻,只有一个线程处理临界资源。
1.互斥锁:
对于要访问临界资源的线程,在访问之前要先申请互斥锁
互斥锁只能保证临界区完整,只有一个线程访问,但无法指定访问者的顺序
2.信号量(信号灯)
对于要访问临界资源的线程,都去执行申请信号量的操作
互斥锁又称为二值信号量,只允许一个线程进入临界区,即信号量的初始值为1
PV操作:实现线程、进程同步互斥
P:申请信号量,减操作
V:释放信号量,加操作
3.条件变量
将不访问共享资源的线程直接休眠,并设置一个唤醒条件,该唤醒条件称之为条件变量
当到线程需要访问的时候,其他线程通过制定的条件变量唤醒该线程