Linux
文章平均质量分 83
*闲鱼
一名摆烂的全能fw
展开
-
IO复用函数的使用
其次,epoll 把用户关心的文件描述符上的事件放在内核里的一个事件表中。fd拷贝呢,select和poll是每次调用函数时,将整个集合的数据拷贝一份到内核中,内核进行运算得到有没有就绪的描述符,存在就绪描述符我们将进行下一步重新遍历寻找就绪的描述符并且做处理,而epoll呢在eoill_ctl函数时就将数据从拷贝进了内核,之后运行epoll函数时就不需要进行拷贝,内核会直接将就绪描述符存放进evs数组中,后面也不需要进行整体遍历,直接进行处理该数组即可。为什么IO效率是O(1)呢?原创 2023-03-19 13:37:39 · 189 阅读 · 0 评论 -
【HTTP协议与Web服务器】
浏览器与Web服务器再应用层通信使用的是HTTP协议,而HTTP协议在传输层使用的是TCP协议。那么浏览器需要和web服务器进行三次握手建立连接之后才能发送HTTP请求报文,服务器收到请求保温,向浏览器回复HTTP应答报文。浏览器服务器建立连接之后,如果两次以上的请求复用同一个TCP连接,则称之为长连接。如果浏览器发送一次请求报文,服务器回复一次应答就断开连接,下次交互重新进行三次握手建立连接,这种称之为短连接。现如今大多数为长连接,可以减少网络中的同步报文,也使得服务器的响应速度变快。原创 2023-03-10 17:49:22 · 813 阅读 · 0 评论 -
【Tcp和Udp】
所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。交互数据仅包含很少的字节。但 IP 层只能提供尽最大努力的服务,也就是说,TCP 下面的网络所提供的是不可靠的传输。双方都必须为连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。Tcp字节流的特点,发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,应用程序对数据从的发送和接收时没有边界限制的。原创 2023-03-04 10:47:45 · 377 阅读 · 0 评论 -
【socket网络编程】
大端模式是指一个整数的高字节位存储在内存的低地址处,低位字节存储在内存的高地址处。返回值是实际读到的字节数,如果recv()返回值为 0, 说明对方已经关闭了 TCP 连接。通常,人们习惯用点分十进制字符串表示 IPV4 地址,但编程中我们需要先把它们转化为整数方能使用,下面函数可用于点分十进制字符串表示的 IPV4 地址和网络字节序整数表示的 IPV4 地址之间的转换。connect()方法一般由客户端程序执行,需要指定连接的服务器端的 IP 地址和端口。TCP提供的是面向连接的可靠的字节流服务。原创 2023-03-02 18:13:15 · 187 阅读 · 1 评论 -
【计算机网络基础】
如果电脑适配器换了,我们换了一台适配器,那我我们对应的MAC地址也就发生了改变,因此局域网中某个主机的地址不可能告诉我们这台主机位于什么地方,因此寻找主机位置还得通过ip地址进行查找。前者是32位,由“,”分成四个段,每个段是8位(0~255),由十进制表示。网络是由若干结点和链接这些结点的链路组成,网络中的结点可以是计算机,交换机,路由器等设备。TCP:传输控制协议,一种面向连接的,可靠的,基于字节流的传输层通信协议。应用层,传输层,网络层,数据链路层,(物理层)网络设备:交换机,路由器,集线器。原创 2023-02-27 10:20:01 · 309 阅读 · 0 评论 -
线程的创建与同步
此处要注意:例如线程5,我们将i的地址赋值给线程5时,此时i为4,但是当线程获取i的值时,i已经进入了我们第二次获取退出信息的循环,此时i=0,所以线程5才会输出0。线程的同步指的是一个线程在对某个资源进行操作时,其他线程都不可以对这个资源进行操作,直到该线程完成操作,其他线程才可以操作,也就是协同步调,让线程按预定的先后顺序进行运行。以上程序我们有五个线程,每个线程打印三次,将主程序中的i的地址传递给我们的线程,线程获取i的值将其打印。等待thread指定的线程退出,线程未退出时,该方法阻塞。原创 2023-01-06 16:43:39 · 211 阅读 · 0 评论 -
进程间通信
进程间通信:管道 ,信号量,共享内存,消息队列,套接字。(信号量,共享内存,消息队列)同步机制:管道 消息队列。管道写端写满阻塞,管道为空,读端阻塞。同步:同一时刻只能一个进程访问资源,若资源被占用程序就会被则色,对程序的控制同步。原创 2022-12-28 18:22:26 · 474 阅读 · 0 评论 -
信号与进程间通信
该函数我们是约定接收到命令之后调用fun函数使用,我们可以发现使用该函数,第一次接收到信号之后会执行输出命令,第二次接收命令之后会默认操作。原创 2022-11-30 17:36:41 · 288 阅读 · 0 评论 -
进程替换与复制
进程替换:把当前进程换为其他进程执行。(其他进程:创建新进程,生成可执行程序,装在进内存)进程替换替换的是进程实体。PCB使用以前的只是修改。原创 2022-11-26 16:22:04 · 535 阅读 · 0 评论 -
【操作文件的系统调用】
在上一篇讲述僵尸进程的文章中对文件的系统调用做了一点点的代码讲述,这篇文章对操作文件的系统调用进行细节讲述。原创 2022-11-19 20:01:43 · 742 阅读 · 0 评论 -
【僵尸进程和文件系统调用】
一个进程的信息都在PCB中保存,所以一个进程的页表信息也在PCB中保存,(一个进程的创建先出现PID,接着才会出现进程实体。僵尸进程:子进程先于父进程结束,父进程没有回收子进程,子进程进入僵尸进程。子进程的退出,父进程未获取子进程的退出码,所以子进程进入僵尸进程。父进程通过wait命令等待子进程结束之后获取子进程的退出码然后父进程运行。孤儿进程:父进程先于子进程结束,子进程的父进程由init进程接管子进程。子进程结束之后父进程获取子进程的退出码便不会出现僵尸进程。4G供内核1G,用户态的3G,原创 2022-11-16 17:47:59 · 362 阅读 · 0 评论 -
【进程复制】
输出六个程序刚开始进入进程复制时 ,i都等于0,我们首先执行父进程,父进程先输出一个A,再次进入循环,父进程又一次进行分裂,分裂之后的父子进程i=1,所以此处的父子进程都会输出一个A,第一次分裂之后的父进程输出三个A,再看第一次分裂之后的子进程,同父进程一样,先输出一个A,再次进入循环,再次分裂,分裂的两个程序都输出A,所以第一次分裂的子进程输出三个A,随意总共输出6个A,如图。此处是三个A,考察返回值。此处输出两个A,程序刚开始先进行复制,父进程继续向下运行,输出一个A,子进程也继续输出一个A。原创 2022-11-15 17:32:44 · 421 阅读 · 0 评论 -
【计算机理论基础】
进程:一个正在运行的程序。进程=程序+数据+PCB。PCB:进程控制块,是进程存在的唯一标识。用来描述进程的属性信息。系统是根据PCB来对并发执行的进程进行控制和管理的。一个程序的启动,先出现PCB,再有进程。一个进程的消失,先进行进程实体的消失,接下来才会有伴随着PCB的销毁。系统正在运行的程序称为进程。是操作系统资源分配和调度的基本单位。原创 2022-11-09 15:42:05 · 322 阅读 · 0 评论 -
【动态库和静态库】
使用该命令之后便可以直接使用命令->gcc -o main main.c -L. -lfoo,默认使用动态库(当前路径,前提修改系统路径)是当前路径下的,若不修改系统配置,方式使用不通过,则需要使用方法一(移动动态库至lib目录下)静态库在链接是将用到的方法包含到最终生成的可执行程序中,而共享库不包含,只做标记,在运行程序时,才动态加载,所以共享库体积小。(-L后加入静态库的位置,-l后加入静态库的名字(名字不包含lib和.a))命令:gcc -o main main.c -L. -lfoo(同静态库)原创 2022-11-03 11:52:45 · 159 阅读 · 0 评论 -
【程序进程及相关命令】
时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。当进程用完分给它的时间片后,系统的计时器发出时钟中断,调度程序便停止该进程的运行,把它放入就绪队列的末尾;并发:一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。(先扫地一分钟,没有扫完,开始进行拖地,拖地一分钟再继续扫地,再继续拖地,这样循环下去完成扫地和拖地任务)OS对进程描述:PCB(进程控制块)记录当前的进程运行状态。原创 2022-11-02 11:32:17 · 187 阅读 · 0 评论 -
makkefile文件自动化编译以及基础文件命令(补)
1)分解解压:gzip file.tar.gz (将file.tar.gz解压为file.tar)grep “int” main.c :过滤出main.c文件中包含“int”字符所在行进行输出。压缩:tar zcvf file.tar.gz main.c add.c mul.c。1)打包:tar cvf file.tar main.c add.c mul.c。2)编辑c源文件 add.c mul.c main.c…解压:tar zcvf file.tar.gz。2)压缩:gzip file.tar。原创 2022-10-30 13:25:12 · 525 阅读 · 0 评论 -
【代码执行以及调试】
我们知道bin文件中是命令文件,可以查看到bin文件中全是命令,所以我们只需要将main文件移动到bin文件中,便可以直接执行main文件。2、上面的演示代码中,我们可以看到.c文件中引入.h文件时,用的是双引号“”,能不能用代替呢,为什么?同样运行之后需要移动回来,***如果移动的文件名同库文件中的文件名相同,移动文件便会将两文件合并。我们执行的.c文件中的引入我们自己编写的头文件.h文件即可,紧接着正常编译.c文件并执行。命令:sudo mv /usr/include/add.h ./原创 2022-10-27 17:37:53 · 611 阅读 · 0 评论 -
【linux基础命令(3)】
合并文件:cat 1.c 2.c 3.c >main.c (将1.c 2.c 3.c 的文件内容合并输出到main.c文件种)gcc -o main main.c:将main.c文件进行数次编译(一步编译),编译为最终可执行的main文件。3)追加文件:cat >> main.c (在main.c文件中追加输入 )很显然,多了一个main文件,该文件便是最终编译结果的可执行文件,终端1:cat >> main.c 重定向(ctrl+d退出)2)重定向:cat >main.c (自行输出文件)原创 2022-10-24 16:47:56 · 630 阅读 · 0 评论 -
【linux基础命令(2)】
例:cp main.c …/newmain.c 当前文件下的main.c拷贝一份到上一级目录下,名为newmain.c。例:cp main.c …当前文件main.c拷贝到上一级目录,并且名为main.c。mv ./filename ./name 当前路径下的filename文件重命名为name。cat:查看本文件所有内容,内容打印到终端上。2) cp 路径+文件 路径+文件。例:cp main.c a.c。mv 文件 文件(相同路径)1)cp 路径+文件 路径。mv 路径+文件 路径。原创 2022-10-19 16:16:25 · 329 阅读 · 0 评论 -
【vim命令介绍使用】
打开文件后默认命令模式,切换编辑模式按(a,i,o,s)四个按键中任意一个,编辑完成后按Esc按键还原为命令模式,输入:切换到末行模式,退出在”:“后输入q,保存退出输入wq,按下enter按键退出,该图中r–rw-r–分三种类型权限依次为:使用者权限(u),组权限(g),其他者权限(o),该文件中使用者权限为只读,组权限为可读可写,其他者权限为只读。参考图中chmod命令:u为使用者权限,-rwx为去除其读写执行权限,a.c为该文件权限改变,同样+rwx为给该文件的使用者增加读写执行权限。原创 2022-10-15 21:09:06 · 975 阅读 · 0 评论 -
【linux目录及命令(1)】
sudo ls+路径:以管理员身份执行命令(有的文件无权查看)cd .:切换到当前路径 (cd mntcd ./mnt)创建文件,删除 批删除:*touch a.c b.c c.c。main.c文件->编译要求编译c程序,找到文件必须见到.c。 ls-a:显示显示该文件下所有目录(包含隐藏文件) sudo ls+路径-l:查看指定文件的详细信息。rm*.c:删除当前目录下的以.c结尾的所有普通文件。rm-r:强制删除文件(目录是否为空都可以删除) ls+路径:查看指定路径下的文件。原创 2022-10-13 19:00:10 · 1372 阅读 · 0 评论 -
Linux介绍
xin-virtual-machine:主机名。$:普通用户身份(#:管理员身份)原创 2022-10-09 13:12:52 · 197 阅读 · 0 评论