![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 80
Hanani_Jia
这个作者很懒,什么都没留下…
展开
-
多路复用----epoll
上次我们介绍了多路复用IO的select。poll和select十分类似,把用户传入的数组拷贝到内核空间,然后查询每个fd的状态,如果对应设备就绪就放入等待队列中,如果没有设备就绪就把进程挂起,直到有设备就绪或者超时了,但是他比select好的一点是他没有数目限制,因为poll是基于链表来存储的,但是还是和select有相同的最大缺点:大量的fd数组从用户复制到内核,并且poll还有一个特点是...原创 2018-12-10 17:45:16 · 427 阅读 · 0 评论 -
Linux讲解 基础IO 软硬链接
今天我们介绍在Linux文件系统中的软硬链接的概念。 我们上次说了一个概念,一般情况下都是我们的一个文件名对应一个inode号,但是也存在我们不同的文件名字指向了同一个inode结点的可能性,也就是说我打开的不同文件但是内容确实一样的,这就让我想到了我们windows下边的快捷方式。这就是硬链接。可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件...原创 2018-09-21 16:11:03 · 934 阅读 · 0 评论 -
Linux讲解 进程间通信 消息队列
消息队列是进程间通信的另外一种方式,那什么是消息队列呢?消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过使用消息队列来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。消息队列,本质就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向...原创 2018-09-26 17:33:28 · 320 阅读 · 0 评论 -
Linux讲解 文件系统 inode节点
我们可以通过stat命令来查看更加详细的文件属性。 这里边其中有几个概念我们是要了解清楚的,就是Block,IO Block,以及Inode。 Inode是一个很重要的概念,理解透彻inode对整个文件系统的了解层次就会提升一个等级。 我们需要一点一点说起我们文件存储在磁盘上,磁盘存储的最小单位是扇区,每一个扇区的大小是512字节也就是0.5kb,但是我们的操作系统在读取磁盘...原创 2018-09-19 19:30:32 · 1687 阅读 · 1 评论 -
Linux讲解 文件系统 缓冲区
这次我们对Linux文件系统进行更加深入的介绍。我们先看一个程序。我们通过三个函数来进行一下输出。我们的printf自然就是直接在屏幕上的输出,fwrite是我们库函数里边的输出,他的参数(获取数据的地址,写入内容的单字节个数,写入单字节数据的个数,文件描述符)这里我们的文件描述符是stdout也就是我们的标准输出,所以他会直接打印到我们的屏幕上边。write有两种用法这里是用的复杂的...原创 2018-09-19 19:26:52 · 2294 阅读 · 0 评论 -
Linux讲解 进程间通信 命名管道
上次我们讲了进程间通过管道通信的方式,上次所说的管道也叫做匿名管道,匿名管道创建了一块缓冲区供进程来使用,但是这块缓冲区是没有名字的,因此除了具有亲缘关系的进程之外其他进程都找不到这块缓冲区。 今天我们要介绍的是命名管道,命名管道实际上是一种特殊文件,在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。在创建这个命名管道的时候给他起一...原创 2018-09-23 14:33:29 · 611 阅读 · 0 评论 -
Linux讲解 基础IO-系统调用
上次我们介绍了我们在C语言里边用到的一些IO接口,这些接口是其他人为我们编写好之后提供的,我们还可以通过一些系统的IO,我们要去分清这两个的区别,分清楚什么是系统调用什么是库函数。可以通过这张图来看一下,这张图通俗来说就是我们的系统调用要比我们的库函数要更加的接近硬件。系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、...原创 2018-09-10 21:20:23 · 1442 阅读 · 0 评论 -
Linux讲解 基础IO 重定向
重定向就是不使用系统的标准输入端口,标准输出端口和标准错误输出端口,而进行重新的指定,所以重定向分为输入、输出和错误重定向,通常情况下重定向到一个文件。重定向的符号有:> 输出重定向到一个文件或设备 覆盖原来的文件>! 输出重定向到一个文件或设备 强制覆盖原来的文件>> 输出重定向到一个文件或设备 追加原来的文件< ...原创 2018-09-15 22:23:22 · 1464 阅读 · 0 评论 -
Linux讲解 基础IO 文件描述符
上次我们介绍了Linux中基础IO的系统调用,这次我们介绍的是文件描述符。 文件描述符是我们之前所没有接触到的一个名词。内核是利用文件描述符来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。但是文件描述符这个概念是只有在Linux和unix才有。 在Linux下有一句话是一切皆文件,文件描述符...原创 2018-09-15 20:28:28 · 1895 阅读 · 0 评论 -
Linux讲解 进程间通信 管道
今天我们讲解进程间的通信,首先回顾一下进程的概念:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程的用户空间是相互独立的,一般来说是不能相互访问的,但是很多情况需要我们不同的进程共同完成一个任务,或者进程之间需要沟通交流的时候,就必须要用到我们的进程间通信。 经...原创 2018-09-21 20:05:33 · 708 阅读 · 0 评论 -
Linux讲解 进程间通信 共享内存
今天我们要介绍的是最后一个进程间通信的方式也是最重要的一个共享内存,共享内存是最快的一个IPC形式。所以在实际应用中有着很广泛的应用。 共享内存的意思是,我们现在把同一块物理内存映射到进程A和进程B两个进程的地址空间,两个进程都可以看到这一块内存。共享内存之所以要比其他的进程间通信快是因为,我们的进程可以直接读取内存的数据而不需要进行任何拷贝,不需要调用任何系统调用来传递数据。而我们...原创 2018-09-28 19:41:24 · 757 阅读 · 0 评论 -
多路复用IO----select
上次我们介绍了五种基本的IO模型,在这五种里边多路转接IO是我们要了解的重点。 为什么他重要,我们先拿他和我们基础的IO来进行一下区分,当我们遇到普通的IO时都会开启一个新的进程来处理这个IO,在现在网络的访问量来开,如果同时有五千个IO来恐怕普通的机器都难以处理,更别说动不动就上亿的点击了,那这时候你的CPU占有率会相当的高,并且他并不是在干活如果没有数据的话就会阻塞在那里,浪...原创 2018-12-08 11:44:14 · 589 阅读 · 0 评论 -
五种IO模型
了解了什么是阻塞什么是非阻塞和同步和异步理解起来五种IO模型就很容易了。 五种IO模型:阻塞IO、非阻塞IO、信号驱动IO、多路转接IO、异步IO 阻塞IO: 阻塞IO是最简单的一种,也就是所进程在等待某个条件的时候如果条件不满足就一直等待下去,一直到满足了再去执行下一个操作。这里再拿一个比较广泛的例子来说一下,就是钓鱼的例子,在网上浏览一些文章的时候会发现很多都是用这...原创 2018-12-02 20:22:54 · 356 阅读 · 2 评论 -
IO模型--同步/异步 阻塞/非阻塞
到底什么是IO,我们之前经常说的IO就是指进行文件的写入和读取操作所做的操作, 但是在操作系统层面的IO并不是这么狭义。从键盘获取数据从socket都可以称作IO。 在正式介绍IO之前我们需要先弄清楚几个概念。 用户空间和内核空间 我们都听过虚拟内存的概念,现在的操作系统都是采用的虚拟存储器,对于32位系统来说,他的地址位有32个比特位,也就是说他最大可以访问2的3...原创 2018-12-02 19:15:22 · 1185 阅读 · 2 评论 -
fork和vfork有什么区别
自己在刚刚学习Linux进程的时候接触到了一个进程里边的第一个函数fork,最初接触的时候还是感觉比较稀奇的,后来发现也不过如此,之前还写过一个关于fork的博客,fork就是只调用一次,但是却有三个不同返回值的函数,可以通过它的返回值来判断是子进程还是父进程。但是fork和vfrok有什么区别的时候,我只是听说过vfrok并不是很了解两个有什么区别,今天就来总结一下,这两个函数到底有什么区...原创 2018-11-13 23:18:43 · 444 阅读 · 0 评论 -
Linux讲解 生产者消费者模型
我们上次通过代码实现了进程间的互斥操作,解决了wps和word同时都去操作我们的队列的话怎么解决这个问题,但是打印机这边又出现了问题,因为我们的进程队列是有限制的,正常来说打印机就在我们的槽里获取数据打印就可以了,但是如果说我们槽满了,这时候应该怎么办?Wps和word是不是都要等着队列空了再往里边放,再或者如果说队列全部空了,打印机也要等着其他进程往里边放东西,所以wps、word和打...原创 2018-10-18 20:29:18 · 529 阅读 · 2 评论 -
Linux讲解 进程线程
我们之前在Linux中引入了进程的概念,今天我们就在仔细的分析一下什么是进程,什么是线程,进程和线程之间有什么关系。 现在有两个程序一个是小红,一个是小蓝。 在计算机发展初期的时候,CPU是一个很稀缺的资源,他们两个必须轮流使用,只有小红执行结束之后,让出CPU,小蓝才能从头开始运行。人们把这种方式叫做批处理。 慢慢的,随着计算机的不断发展,CPU的处理能力越来越快了,...原创 2018-10-15 15:07:47 · 391 阅读 · 0 评论 -
Linux讲解 进程间通信 信号量的互斥
我们在介绍进程间间通信的时候说到了共享内存,共享内存有一个特点就是共享内存并没有提供同步和互斥机制的,是需要我们自己来实现共享内存访问的同步和互斥。 首先要明白什么是同步与互斥。互斥就是:进程对临界资源的同一时间的唯一访问性。同步就是:进程对临界资源的顺序访问关系。通俗来说互斥就是一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。而同步就是:两个或两个以...原创 2018-10-08 20:31:07 · 1217 阅读 · 0 评论 -
C++服务器 十二 vim简单使用
我们接触过Linux的人那肯定都是知道vim的,我之前的博客也对vim有过一些介绍,这里也推荐大家看一下。https://blog.csdn.net/Hanani_Jia/article/details/81631386 vim教程一 基本使用https://blog.csdn.net/Hanani_Jia/article/details/81698760 vim教程二 简单配置 ...原创 2018-09-28 21:41:41 · 475 阅读 · 0 评论 -
VMware虚拟机(Linux)与windows传输文件
VMware虚拟机和Windows传输文件的方式; 这里有很多种传输文件的方式,比如安装VMware tools,xshell里边也有支持我们机型文件传输的插件,但是我们可以在Linux下安装一个小插件就可以实现虚拟机和windows下进行文件传输。lrzsz是一款在linux里可代替ftp上传和下载的程序,这里我已经安装过了就不给大家演示安装了。 Centos可以输入指令...原创 2018-09-03 11:39:11 · 10097 阅读 · 2 评论 -
Ubuntu不能链接xshell(没有ssh服务)
最近学习C++服务器的时候需要用的ubuntu系统,虽然之前也有ubuntu系统但是没有用过xshell这次链接的时候发现ubuntu不能直接连接Xshell提示连接失败。查了查,然后在ubuntu中看了一下发现可能是ubuntu中不会自带ssh服务通过ps -e |grep ssh指令来查看,这里截图里边我打错了,之后又纠正过来了,如果你打出来上边你的命令发现没有任何反...原创 2018-09-04 23:22:36 · 928 阅读 · 0 评论 -
Linux man指令
man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息 man指令的选项并不是很多:-a:在所有的man帮助手册中搜索-f:等价于whatis指令,显示给定关键字的简短描述信息-p:指定内容时使用分页程序-M:指定man手册搜索路径并且不是很常用,我们一般都是直接man,但是man是有参数的使用手册:压缩格式...原创 2018-08-21 20:22:44 · 854 阅读 · 0 评论 -
Linux权限详解
今天给大家讲解一下linux系统中的权限: Linux中的权限分为三种,分别是所有者,所在组和其他。 所有者:一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者。 所在组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。其它:除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组文件有三种权限,分别是-r可读,-w可写,-x可操作,每个权限...原创 2018-08-14 16:05:13 · 3948 阅读 · 1 评论 -
csv文件转换为excel文件
首先,这里需要简单的介绍一个软件PHPmyadmin,可能对一些大佬或者是学习python方向的同学对这个软件相对熟悉, 我是在一位学长帮我写过一个程序之后了解到这个软件,学长简单介绍的是这是一个可视化的数据库软件,今天在自己操作这个软件的时候遇到了一些问题,所以自己又了解了一些这个软件。 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数...原创 2018-07-26 13:05:19 · 43343 阅读 · 0 评论 -
Linux基础指令二
今天继续给大家介绍linux下的一些命令。 第一个head 这里拿head和cat进行一个对比,就可以看出来head是可以查看某个文件的指定前多少行。如果不加数字的话这里默认显示十行。既然有了显示前多少行,那就有显示后多少行,tail和head一样的使用方法不过这里显示的是文章末尾多少行。但是tail会有一个更加常用的选项 Tail -f 这里是不断的打印文件的最后一行,当然我的这个文件是看不出...原创 2018-07-07 10:35:19 · 279 阅读 · 0 评论 -
Linux基础指令一
最近再一次基础到了Linux系统,因为之前没有过多接触所以现在从最基础的指令开始。之前也给大家介绍过xshell虽然在自己电脑上第一个命令ls ls命令是浏览当前目录下的信息,但是ls还是有很多扩展的Ls -a是浏览目录中的所有文件,包括隐藏文件,Linux下是有很多隐藏文件的是以.开头,如果只输入ls的话是不会显示的但是ls -a是可以显示隐藏文件。ls -l 是显示文件的详细信息 第三...原创 2018-07-06 23:06:28 · 384 阅读 · 0 评论 -
Linux修改root密码
今天给大家介绍一个小操作,之前在安装虚拟机的时候当时感觉为了自己的安全在设置密码的时候设置了一个和复杂的密码, 每次登陆,每次需要权限的时候都会把密码输入一遍并且linux下为了保护密码,经常你输入的时候是不显示你输入了多少个,所以过于复杂的密码十分的繁琐,并且相对于我这种个人用户而言,也没有什么黑客来入侵我的电脑,所以就想把自己linux下权限密码进行一下更改,这里就介绍一下linux是怎么来更...原创 2018-07-03 17:26:10 · 10566 阅读 · 0 评论 -
CentOS设置中文教程
CentOS语言设置成中文教程原创 2017-11-16 23:09:04 · 57227 阅读 · 28 评论 -
联想电脑安装虚拟机出现不可恢复的错误
VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:376 bugNr=1036521 日志文件位于“F:\centos\vmware.log”中。 您可以请求支持。 要收集数据提交给 VMware 技术支持,请选择“帮助”菜单中的“收集支持数据”。 也可以直接在 Workstation 文件夹中运行“vm-support”脚本。 我们将根据您的技术支持权利做出回应原创 2017-11-16 00:48:10 · 9889 阅读 · 3 评论 -
Linux虚拟机的安装
虚拟机的安装教程原创 2017-11-16 00:26:38 · 985 阅读 · 0 评论 -
Linux下vim教程二 vim简单配置
我们继续讲解一些vim的基础使用在我们还没有配置vim的时候,我们的vim打开就是一个黑框,这是特别不方便的。这时候我们可以在末行模式下输入指令set nu我们vim中就会出现每一行的行号因为我的vim是已经配置好的,不需要输入指令就可以显示行号和一些语法高亮之后我会告诉大家应该怎么配置自己的vim,这里输入set nu之后就是上图中的效果。我们在vim中编写程序的时候常常...原创 2018-08-15 09:54:21 · 780 阅读 · 0 评论 -
Linux下vim教程 一
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。 VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Ema...原创 2018-08-13 16:04:31 · 2347 阅读 · 0 评论 -
Linux 进程讲解 六 进程地址空间
我们之前常说程序的地址空间,实际上来说应该是进程的地址空间,进程的地址空间到底是什么? 我们先说一下早起的地址是如何划分的, 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小,但是这种划分方法慢慢的出现了很多...原创 2018-08-24 16:17:41 · 589 阅读 · 0 评论 -
Linux讲解 基础IO-C库接口
我们在C语言的时候就接触了一些IO接口,用来向文件中写入或者在文件中读取一些数据,例如fopen打开一个文件fclose关闭一个文件,fread读取文件的内容,fwrite向文件中写入内容等等很多接口。这里我们写一个在C语言下边经常使用的往文件中写内容的程序,这里的fopen函数后边的选择有很多种。r是只读模式,我们可以尝试一下以只读模式打开我们的文件然后往文件里边写东西会有什...原创 2018-08-28 16:42:16 · 584 阅读 · 0 评论 -
Linux进程讲解 五 进程优先级
之前我们介绍进程的时候就说过,为什么要有PCB,PCB记录了很多信息,因为我们的程序并不是说,一直在CPU运行直到结束,而是一个进程运行一会,另一个再运行一会。所以来说进程占用CPU应该是一个我们可控的东西,因为有的进程相对来说比较重要,有的就不是很重要。我们就像让CPU先去执行那些比较重要的进程,并且给他分配相对多的时间。进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cp...原创 2018-08-23 16:45:13 · 1902 阅读 · 0 评论 -
Linux进程讲解 四 孤儿进程
上次我们介绍了僵尸进程,僵尸进程是进程的一种状态,我们今天说的是孤儿进程,孤儿进程并不是进程的一种状态,它是一类进程的名字,僵尸进程是因为我们的子进程突然死亡,并且我们的父进程没有查看他的死亡原因,他就会一直保留着自己的task_struct里边存储着他的一些死亡信息等等,这就形成了僵尸进程,孤儿进程和僵尸进程相反,孤儿进程顾名思义就是我们的父进程死亡了,但是我们的子进程依然存在,孤儿进程最后...原创 2018-08-23 15:06:37 · 935 阅读 · 0 评论 -
Linux 进程讲解 三 进程状态
之前在介绍PCB的时候给大家说过PCB中有一项是保存我们进程的状态,我们可以看一下Linux内核里边的源码里边的定义可以看出这个数组里边有7种状态:R(running)是我们的运行状态,但是这并不代表着这个程序一定正在执行,他很有可能是在我们的运行队列里边,也有很多人会把这个状态分成两个, 是在执行的程序才是我们的running状态在运行队列里边的是我们的ready状态,这里只有一...原创 2018-08-19 20:56:50 · 1477 阅读 · 0 评论 -
Linux进程讲解 fork函数
我们在学习进程的时候不得不提到一个函数fork(),fork还有一个名字叫做分叉函数,我们可以通过fork函数来创建一个和我们当前进程一样的新进程,并且我们通常把新创建的进程叫做子进程,把之前就存在的进程叫做父进程,并且子进程继承了父进程的整个地址空间,包括了程序上下文,包括堆栈体制,甚至我们上次刚刚说过的PCB他也是直接复制了过来。不过既然这是两个不同的进程那两个进程的进程id是不同的。...原创 2018-08-19 14:35:23 · 814 阅读 · 1 评论 -
gcc编译程序四个阶段 预处理、编译、汇编、链接
我们在windows下的时候大部分通过vs等编译器来编写我们的代码,这种编译器有一个统称的名字叫做IDE(Integrated Development Environment)中文名字是集成开发环境,为什么叫它集成开发环境,是因为你只需要安装一个vs你就可以做到对代码的编辑、编译、调试等等,每次我们在vs环境下编写完代码之后拿一下f5程序自动开始执行,我们就能得到程序的执行结果,实际上在你编写...原创 2018-08-16 09:30:05 · 10260 阅读 · 0 评论 -
Linux 进程讲解 一
最近刚刚接触了进程的概念,之前看了很多文章来讲解什么是进程什么是线程,简单的来说进程就是现在正在执行的一个程序,我们在windows下打开任务管理器里边就有进程这一项,简单来看我们运行着哪些程序进程里边就有哪些,但是又不止这些还有很多我们看不懂不知道的后台机进程。复杂点来说就是百度对进程的解释,进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调...原创 2018-08-18 19:50:54 · 652 阅读 · 0 评论