Open Geekiter opened 2 months ago
如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完。相反,异步IO操作在后台运行,IO操作和应用程序可以同时运行,提高系统性能,提高IO流量。
在同步文件IO中,线程启动一个IO操作然后进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO中,线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求,将会通知线程IO操作完成。
![[Pasted image 20240417100925.png]]
![[Pasted image 20240417101258.png]]
每当子进程退出,父进程都会收到SIAGCHLD信号,故可在父进程中设置SIGCHLD信号的捕获函数,在捕获函数中回收子进程
void handler(int sig){ int status; if(waitpid(-1, &status, WNOHANG) >= 0){ printf("child is die\n"); } } int main(){ signal(SIGCHLD, handler); int pid = fork(); if(pid > 0){ while(1){ sleep(2); } } else if(0 == pid){ printf("i am child, i die"); exit(0); } }
以数字命名的目录表示当前一个运行的进程,目录名即为进程PID,其内的目录和文件给出了一些关于该进程的信息
线程不能独立运行,但一个线程的崩溃不一定导致整个进程崩溃
信号、信号量、互斥锁、条件变量、自旋锁、读写锁
IP地址由两部分组成,网络号和主机号。不过是要和子网掩码按位与上之后才能区分哪些是网络位哪些是主机位
应用程序ping发出的是ICMP请求报文 ping的原理是利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,通过对方恢复的数据包来确定两台机器是否连接相通,时延是是多少
![[Pasted image 20240417113955.png]]
![[Pasted image 20240417114654.png]]
本质是用套接字进行进程间通信,但是这些进程是分布在不同主机上的进程,因此网络编程在物联网方面有比较大的作用
五元组:客户端端口、客户端IP、服务端端口、服务端IP、传输协议
发送方发送的若干数据包到达接收方粘成一个包
同上
A:政府机关 B:中等规模企业 C:任何 D:多播 E:实验
1. 进程&线程
1.1 异步IO和同步IO区别?
如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完。相反,异步IO操作在后台运行,IO操作和应用程序可以同时运行,提高系统性能,提高IO流量。
在同步文件IO中,线程启动一个IO操作然后进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO中,线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求,将会通知线程IO操作完成。
1.2 进程间通信
1.3 进程的地址空间模型
![[Pasted image 20240417100925.png]]
1.4 进程的五种状态分别是?
![[Pasted image 20240417101258.png]]
1.5 子进程从父进程继承的资源有
1.6 什么是进程上下文、中断上下文
1.7 如何防止僵尸进程过多导致系统空间爆满?
每当子进程退出,父进程都会收到SIAGCHLD信号,故可在父进程中设置SIGCHLD信号的捕获函数,在捕获函数中回收子进程
1.8 /proc目录下,以数字命名的目录表示什么?
以数字命名的目录表示当前一个运行的进程,目录名即为进程PID,其内的目录和文件给出了一些关于该进程的信息
1.9 进程和线程有什么区别
1.10 什么时候用多进程?什么时候用多线程?
1.11 线程可以独立运行吗?
线程不能独立运行,但一个线程的崩溃不一定导致整个进程崩溃
1.12 写出下列线程、互斥锁、信号量的相关代码
1.13 线程间通信和同步方式有哪些?
信号、信号量、互斥锁、条件变量、自旋锁、读写锁
1.14 如何防止同时产生大量的线程
1.15 互斥锁与信号量的区别?
1.16 孤儿进程是什么?
2 网络编程
2.1 列举一下OSI协议的各种分层
2.2 TCP/IP协议包括?
2.3 TCP通信建立和释放的过程?端口的作用?
2.4 IP地址转换成物理地址的协议?反之?
2.5 IP地址的编码分为哪两个部分?
IP地址由两部分组成,网络号和主机号。不过是要和子网掩码按位与上之后才能区分哪些是网络位哪些是主机位
2.6 应用程序ping发出的是什么报文
应用程序ping发出的是ICMP请求报文 ping的原理是利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,通过对方恢复的数据包来确定两台机器是否连接相通,时延是是多少
2.7 socket编程的流程是?
2.8 epoll是什么?
2.9 TCP、UDP的区别?
2.10 TCP、UDP分别有什么优点和缺点?
2.11 TCP、UDP各自的适用场景
2.13 TCP如何保证可靠传输
2.14 简述TCP三次握手的过程
![[Pasted image 20240417113955.png]]
2.15 为什么需要三次握手
2.16 为什么服务器端易受SYN攻击?
2.17 简述TCP四次挥手的过程
![[Pasted image 20240417114654.png]]
2.18 TCP四次挥手中,为什么客户端最后还要等待2*MSL Maximun Segment Lifetime
2.19 为什么连接是三次握手,关闭是四次挥手?
2.20 DNS服务器和客户机设置完毕后,有哪三个命令可以测试其设置是否正确?
2.21 网络编程的作用?
本质是用套接字进行进程间通信,但是这些进程是分布在不同主机上的进程,因此网络编程在物联网方面有比较大的作用
2.22 socket网络编程中,哪5个元素可以明确标识一条连接?
五元组:客户端端口、客户端IP、服务端端口、服务端IP、传输协议
2.23 什么是TCP粘包?
发送方发送的若干数据包到达接收方粘成一个包
2.24 TCP粘包的原因
同上
2.25 什么时候处理粘包现象
2.26如何解决粘包?
2.27 IP地址分类
A:政府机关 B:中等规模企业 C:任何 D:多播 E:实验
IP地址和MAC地址的相同点和不同点?
2.29 路由器、交换机、集线器的区别