title: Linux&&网络通信
一、进程
(1)什么是进程?
进程是程序执行的过程,是linux的基本调度单位。
(2)进程和程序的区别。
程序是静态的,它是一些保存在磁盘上的指令的有序集合;
而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建、调度和消亡的过程。
(3)进程间的通信方式。
无名管道、有名管道、信号量、消息队列、信号、套接字、共享内存。
1)无名管道和有名管道的区别。
无名管道和有名管道都是半双工(固定的读端和写端)。
无名管道只能在亲缘关系的进程间通信,有名管道突破了这个限制。
(4)进程的状态转换。
(5)守护进程。
1)创建子进程,父进程退出。
子进程称为孤儿进程,
2)在子进程中创建新会话。
3)改变当前目录为根目录。
4)重设文件权限掩码。
5)关闭不必要的文件描述符。
二、线程
(1)什么是线程?
线程通常叫做轻量级进程。
(2)线程间的通信方式
1)锁机制
2)信号量机制
3)信号机制
三、线程和进程的区别。
1)进程有自己的独立地址空间,线程没有;
2)进程是资源分配的最小单位,线程是CPU调度的最小单位;
3)进程和线程间的通信方式不同;
4)进程切换上下开销大,线程开销小;线程之间的切换快,但不利于资源的保护和利用。
5)一个进程挂了不会影响其他进程,而线程挂了会影响其他线程。
四、I/O模型
1、同步和异步、阻塞与非阻塞的区别
2、select、poll和epoll的区别
五、死锁及其必要条件
1)产生死锁的原因
2)预防死锁
3)银行家算法流程,怎么检测不安全状态
六、Linux命令
1)du和df
du:显示每个文件和目录的磁盘使用空间。
du -s -h 目录路径
du -h 目录路径
df:显示指定磁盘文件的可用空间。
df -h
七、socket编程
1、使用TCP协议的流程图
1)TCP通信的基本步骤
服务器端:socket->bind->listen->while(1){->accept->recv->send->close-}->close
客户端: socket------------------------------------>connect->send->recv----------->close
2)服务器端函数:
socket函数:生成一个套接字描述符。
bind函数:用来绑定一个端口号和IP地址,使套接字与指定的端口号和IP地址相关联。
listen函数:使服务器的这个端口和IP地址处于监听状态,等待网络中某一客户机的连接请求。如果客户端有连接请求,端口就会接受这个连接。
accept函数:接受远端计算机的连接请求,建立起与客户机的远程连接。
recv函数:用新的套接字来接收远端主机传来的数据,并把数据存到由参数buf指向的内存空间。
send函数:用新的套接字发送数据给指定的远端主机。
close函数:发送完数据后可使用close()函数,close()会让数据写回磁盘,并释放占用的资源。
3)客户端函数:
connect函数:用来请求连接远程服务器。
标签:网络通信,函数,管道,线程,&&,Linux,进程,close,接字 From: https://www.cnblogs.com/blue-Suri/p/17342982.html