操作系统
-
进程和线程的区别:
进程是操作系统资源分配的最小单位;线程是任务调度的最小单位(线程也叫做轻量级进程)
每个进程都有独立的内存空间;线程则共享所属进程的空间和资源(所以进程间切换消耗比线程大)
每个进程包含一个或多个线程;线程则是所属进程中的不同执行路线
-
进程通信
管道:用于父子(兄弟)进程间通信,半双工
有名管道:所有有权限的进程都能访问(文件名做索引),半双工,创建有名管道mknod()或mkfifo()
信号量:同步
信号:发送信号和处理信号(捕捉信号、忽略信号、执行默认操作)
消息队列:保存在内核中的一串消息列表(链表),有特定的消息类型和优先级,可以自定义消息接收的类型
共享内存:允许两个或多个进程共享一个给定的存储区,这一段存储区可以被两个或两个以上的进程映射至自身的地址空间中,一个进程写入共享内存的信息,可以被其他使用这个共享内存的进程,读取或写入信息,因为不需要做数据的拷贝直接读取内存所以效率更高 建立共享内存mmap() 解除munmap()
套接字:
-
进程调度
先来先服务、优先级、时间片轮转、最短响应时间优先、最短作业优先
-
磁盘调度
先来先服务(FCFS)、最短寻道时间(SSTF)、SCAN、C-SCAN、LOOK、C-LOOK
-
僵尸进程、孤儿进程、守护进程
僵尸进程:子进程结束而父进程没有用wait()或waitpid()获取子进程信息,导致子进程的状态描述符一直保存,消耗系统的PID资源
孤儿进程:父进程先于子进程结束,子进程由init进程管理
守护进程:是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。特殊的孤儿进程
-
线程池、内存池
-
Linux API
-
I/O模型 select,poll,epoll的区别
https://www.cnblogs.com/duanxz/p/5155926.html
https://blog.youkuaiyun.com/nbadwde/article/details/79298919
-
死锁
死锁是多个进程在运行过程中因争夺资源而造成的一种僵局。
产生的必要条件:
互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用
请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放
不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放
环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链避免死锁:银行家算法
解除死锁:剥夺资源、撤销进程
预防死锁:
资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)
可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
-
linux shell命令
基本命令:ls、cat、mkdir、rm、tar......
进程管理:ps、top、kill..
磁盘管理:df、du、mount
数据文件处理:sort(排序)、grep(搜索)
文件编辑器:vim、gedit
-
gdb调试
先gcc生成可执行文件然后gdb进入调试模式输入 file 文件名 开始调试 或者直接 gdb 文件名
命令参数 : break(b) 设置断点; list(l) 显示源码; display(disp) 追踪变量; next(n) 执行下一条语句但不会进入函数内部; step(s) 执行下一条语句会进入函数内部; continue(c) 继续执行直到下一个断点; kill(k) 停止调试; quit(q)退出gdb
网络编程
-
网络七层模型(OSI)
OSI:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/IP四层:网络接口层、网络层、传输层、引用层
TCP 、UDP 、 FTP、 DNS、 ARP、 ICMP 、FTP 、IP等协议属于哪层
-
TCP、UDP区别
udp 是数据报协议 是无连接的; tcp 传输控制协议 是面向连接的
tcp提供可靠地数据传输服务(超时重传、拥塞控制、滑动窗口);udp尽最大努力交付,不保证可靠性
tcp相比udp传输慢,对网络要求高
-
TCP连接和释放(三次握手、四次挥手)
三次握手和四次挥手的具体过程?
wait_time状态为什么要等待2MLS时间?
为什么是三次握手?
断开连接为什么要多发送一次?
TCP长连接和短连接
长连接的心跳机制
-
TCP可靠传输
超时重传、拥塞控制、滑动窗口
-
Linux网络编程API
socket()、bind()、listen()、accept()、connect()
字节序转化问题
-
HTTP和HTTPS
HTTP :基于TCP 明文传输
HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议的主要特点:
支持客户/服务器模式。支持基本认证和安全认证。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。HTTPS:基于HTTP,密文传输 内容加密、身份认证、数据完整(防止第三方篡改)
-
输入网址浏览器响应过程
1、浏览器提取域名,DNS系统进行域名解析
2、通过解析出来的IP进行TCP连接
3、发送http请求
4、服务器收到请求并响应
5、浏览器解析HTML并请求其中的资源(图片)
6、TCP断开连接
7、显示网页