操作系统与网络知识点梳理

1.死锁产生的原因与避免死锁的方法

死锁概念:多个线程因竞争资源而造成的一种僵局(互相等待)状态。
产生死锁的四个条件:
(1)互斥条件:资源只能由一个进程使用;
(2)请求与保持条件:已经得到资源的进程可以再次申请新的资源;
(3)非剥夺条件:已经分配的资源不能从相应的进程中被强制地剥夺;
(4)循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
避免死锁的方法:
(1)加锁顺序(线程按照一定的顺序加锁);
(2)加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁);
(3)死锁检测。

2. Linux 创建进程的函数

fork: 创造的子进程复制了父进程的资源,一旦子进程开始运行,则新旧进程的地址空间已经分开,两者运行独立。
优点:子进程的执行独立于父进程,具有良好的并发性;
缺点:两者的通信需要专门的通信机制,如 pipe、fifo 和 system V 等。

vfork: 创建的子进程完全运行在父进程的地址空间上,子进程对虚拟地址空间任何数据的修改都为父进程所见。vfork创建的子进程后,父进程会被阻塞,直到子进程执行exec()和exit()。

clone: 系统调用 fork() 和 vfork() 是无参数的,而 clone() 则带有参数。fork() 是全部复制,vfork() 是共享内存,而 clone() 是则可以将父进程资源有选择地复制给子进程。

(1)Cookie 和 Session 都是会话技术,Cookie 是运行在客户端,不会占服务器资源,Session 是运行在服务器端,会占用服务器资源。
(2)Cookie 有大小限制以及浏览器在存 cookie 的个数也有限制,Session 是没有大小限制和服务器的内存大小有关。
(3)Cookie 不可靠的,通过拦截或本地文件找得到你的 cookie 后可以进行攻击,session 是可靠地。
(4)Session 是保存在服务器端上会存在一段时间才会消失,如果 session 过多会增加服务器的压力。

4. 线程池作用

(1) 降低资源消耗;通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
(2) 提高响应速度;当任务到达时,任务可以不需要等到线程创建就能立即执行。
(3) 提高线程的可管理性。

5. HTTP 与 HTTPS 的区别

HTTP 协议运行在 TCP 之上,明文传输,客户端与服务器都无法验证对方的身份。
HTTPS 是身披 SSL 外壳的 HTTP,运行于 SSL 之上,SSL 运行于 TCP 之上,是添加了加密和认证机制的 HTTP。两者的不同之处如下所示:
(1)端口不同:两者使用不同的连接方式,端口也不一样,前者为80,后者为443;
(2)资源消耗:和 HTTP 相比,HTTPS 通信由于加密与解密机制(一种共享密钥加密和公开密钥加密并用的混合加密机制)消耗更多的内存资源;
(3)开销:HTTPS 通信需要证书,而证书一般需要向认证机构购买。

6. 对称加密与非对称加密

对称加密:加密与解密使用同一个密钥的方式。
存在的问题:如何安全地将密钥发给对方。
非对称加密:一对非对称密钥,公钥与私钥,发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
优点:由于不需要发送用来解密的私钥,所以可以保证安全性;
缺点:速度慢。

7. get 与 post 区别

(1)GET 一般用于获取服务器资源,POST 一般用于更新服务器资源,而GET无法改变服务器上的资源;
(2)GET 会将请求数据放在 HTTP 请求头,POST 会将请求数据放在请求体。
(3)POST 安全性会更高,GET 是明文;
(4)GET 请求的大小受浏览器 URL 长度限制,POST 则没有限制。

8. TCP 拥塞控制的四种方式

(1) 慢启动;
(2)拥塞避免;
(3)快重传;
(4)快恢复

发布了225 篇原创文章 · 获赞 648 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/huangfei711/article/details/82656880