Linux
文章平均质量分 85
内容主要是 Linux 操作系统的CentOs 的指令学习,还有操作系统的知识,以及Linux下常用工具的介绍,Linux 下的代码编写以及常用系统调用函数介绍
Naxx Crazy
这个作者很懒,什么都没留下…
展开
-
线程基础概念
还有就是线程的私有栈结构里面的数据也是私有的,其实还有线程的id也是私有的,当然假设一个线程出错了,那么当然是需要有错误返回码的,那么如果错误返回码是共享的,那么就是有问题的,所以每个线程的错误码也是私有的,当然还有就是每个线程的重要性是不同的,所以线程的优先级也是不同的,所以线程的优先级也是私有的。线程运行于进程内部:同一个进程内部的线程使用的是同一个进程地址空间,还有页表等,所以同一个进程里面的线程看到的资源是相同的也就是同一个进程里面的线程都运行于这个进程的地址空间中,所以线程运行于进程内部。原创 2023-11-09 17:27:36 · 89 阅读 · 0 评论 -
基于阻塞队列的生产者消费者模型
因为如果资源不满足的话,是需要wait的,wait是一个函数,既然是函数,那么就有可能调用失败,那么如果调用失败的话,如果底层使用的是数组迷你队列,那么此时就可能发生越界等等问题,如果使用的是 stl 那么最大容量可能就超了,也可能会直接奔溃,所以此时是有危险的,所以有可能唤醒是伪唤醒,所以这里需要循环判断,然唤醒的位置,继续在判断一次,如果满足条件的话,那么就去执行后面的代码!当有空位置的时候,那么就是资源满足,所以当消费者消费数据后,那么就资源满足了,所以当消费者消费数据后,那么就可以唤醒生产者。原创 2023-11-25 18:43:50 · 496 阅读 · 0 评论 -
信号的阻塞与递达
当我们一个进程不想要关心某个信号的时候,我们应该怎么做呢?那么有没有办法就是可以完全不用管某一个信号呢?其实时有办法的——阻塞信号!我们知道,信号是不一定会立马被处理的,所以信号就有一个保存的过程!信号产生————————>信号保存————————>信号处理信号未决 信号递达我们把处理信号的过程叫做信号递达当信号从产生到信号处理的过程叫做信号未决进程可以选择阻塞某个信号当一个信号被阻塞时,即使信号产生了(信号未决),信号也不会被递达,知道进程解除了信号阻塞,信号才会被递达。原创 2023-11-07 15:58:14 · 152 阅读 · 0 评论 -
线程的控制
性能损耗:如果再计算密集型的情况下,线程的数量大于处理器的数量,那么会引起性能损耗,因为计算密集型基本一直在使用CPU,但是如果线程较多的话,那么就需要切换线程,此时本来可以一直进程计算,但是线程多的话,还需要去切换线程,所以再计算密集型的情况下,一般不需要线程多。这里看试验结果,当线程被创建后 3秒,然后所有线程都退出了,包括主线程,而监测脚本也是3秒后一个i小鹌鹑都没了,所以我们也就可以得出试验结论, exit 是用于退出进程的,如果线程调用该函数的话,那么会导致整个进程退出。done #监测脚本。原创 2023-11-12 09:50:43 · 164 阅读 · 0 评论 -
线程的互斥
一般情况下,如果函数是可重入的,那么线程就是安全的。如果函数是不可重入的,那么说明多线程访问会有问题,所以就不能多线程访问。线程安全的不一定是可重入函数,而可重入函数一定是线程安全的。例如:如果对临界资源访问加上锁,那么说明这个是线程安全的,但是如果这个函数是可重入的,那么当锁还未释放的时候就重入了,此时会竞争锁,此时救护产生死锁,所以是不可重入的。原创 2023-11-13 08:23:47 · 116 阅读 · 0 评论 -
线程同步——条件变量
还有两个函数是用来对条件变量操作的,和 mutex 基本相同,mutex 的操作有个 lock 和 unlock 操作,那么条件变量是用来控制同步的,那么当然需要控制线程的启动与终止,所以就有两个 wait 和 signal ,意思就是在对应的条件变量下面等待,还有就是唤醒等待的线程。此时你在排队的时候,你前面有一个又高又壮的男生,此时到他打饭了,然后他打完饭之后,瞬间就吃完了,然后他还是在打饭,就这样,他刚打完饭就吃掉,然后食堂阿姨又给打,就这样一直下去。原创 2023-11-15 07:55:45 · 108 阅读 · 0 评论 -
基于环形队列的生产者消费者模型&线程池
那么当环形队列刚开始的时候,是没有数据的,那么当消费者想要消费的时候,一旦申请了信号量,那么就会阻塞住,所以此时一定是生产者来生成,当生产者生产资源后,那么就说明现在以有了数据资源,也就是可以让数据的信号量进行加加操作,也就是V操作,而当消费者在消费后,那么此时一定是有空位产生的没那么此时消费者也就可以让空位置的信号量加加也就是空位置的V操作。不访问也关系,我们可以后面去访问,即使后面去访问,那么一定还是有一个数据是属于我们的,那么当我们申请资源后,那么此时的数据的信号量一定是需要减减操作的。原创 2023-11-25 08:13:27 · 154 阅读 · 0 评论 -
Linux 信号
红绿灯闹钟电话铃声.....在日常生活中,上面以及很多东西都算是信号,那么这些信号的特点是什么?日常生活中的信号就是发生后,我们就可能要做一件事:当我们过马路时,遇到绿灯才可以通过,当我们看到我们的手机电话响了后,我们可能会接电话,也可能会挂掉,或者直接忽略掉,等....这些日常生活中的信号,我们有时候并不知道什么时候会发生,比如电话,我们并不知道谁会在什么时候给我们打电话。我们遇到一个信号后,也会做几件事,比如听到上课铃后,我们就会去上课。原创 2023-11-05 15:44:13 · 182 阅读 · 0 评论 -
进程间通信
命名管道实际上和匿名管道差不多匿名管道是操作系统帮我们创建的一个系统级别的文件,没有名字,所以只能通过父子进程继承的方式来获得文件描述符命名管道索然也是系统帮我们创建的,但是是有名字的,所以可以由没有关系的进程打开来共享,所以命名管道即使是不相关的进程也可以通信而匿名管道和命名管道是差不多的,只是实现进程看到同一份资源的手段不同而已。原创 2023-10-29 17:39:39 · 133 阅读 · 0 评论 -
Linux 文件系统
当我们创建一个文件的时候,操作系统会帮我们到特定的分区中的块组中的 inode bitmap 中找一个空的,没有使用的 inode ,然后写入文件的属性,如果有数据的话,那么还回分配对应的 data block。inode Tbale:inode 大小为 128 字节,inode里面存的是对应文件的属性,所有文件的inode文件的集合,都要有一个inode编号,一般而言,一个文件,一个inode,一个inode编号。原创 2023-10-12 08:34:49 · 157 阅读 · 0 评论 -
Linux 文件系统
下面我们说一下本次的学习顺序。首先我们会理解一下重定向,以及如何是实现重定向。接着我们理解一下缓冲区,以及缓冲区是在哪里的,还有就是缓冲区的作用是什么。最后,我们会模仿C语言实现一个自己的 FILE下面前面我们已经知道什么是文件描述符了。文件描述符实际就是数组下标。也就是 PCB 里面有一个指针数组,里面存的都是 struct file 结构的指针,而该结构体里面保存的是一些关于文件的内容属性,所以只需要找到对应的数组下标就可以找到相关的文件,就可以对对应的文件进行操作。原创 2023-10-09 10:50:02 · 144 阅读 · 0 评论 -
文件描述符
我们可以像stdout 和 2 号文件描述符里面写,看是否会打印到显示器上,然后我们向stdin 和 2 号文件描述符里读,看是否是键盘,实际上 stderr 也是显示器,所以这里就不测试了。但是这次我们并不想使用这个接口,我们使用一个其他的接口,这个接口和 fwrite 基本一样,所以换一个接口使用,C语言中还有很多不同类型的接口。我们可以调用 umask 函数然后将当前进程的权限掩码修改为 0 ,这样我们设置的是多少,那么创建的文件的权限就是多少。返回值是一个 int 类型,这里先不说,先使用!原创 2023-10-07 15:11:38 · 71 阅读 · 0 评论 -
Linux 进程控制
进程等待是什么:就是一个进程被系统给阻塞住了,然后等待某一种系统资源,直到这种系统资源到了的时候,系统又会将这该进程给恢复运行(唤醒)。为什么需要等待:因为如果子进程不等待的话,那么子进程退出后没有人回收子进程,导致子进程变成僵尸进程而浪费系统资源,或者是父进程需要拿到子进程的退出信息,而等待子进程。如何等待:wait/waitpid。原创 2023-10-05 17:59:13 · 190 阅读 · 0 评论 -
程序地址空间
在实际中,我们的程序是如何访问内存的呢?是上面的这样吗?也就是CPU直接访问我们的物理内存?显然不是上面的这个样子。如果是上面这样的话,那么假如我们有一个程序不小心越界访问了,修改到其他程序的数据了,那么就是有问题的。而且,我们的进程都是由独立性的,如果是上面这样的话,那么进程之间就不具有独立性了。所以实际上,我们是通过程序地址空间(虚拟内存/线性内存)来实现的。实际上应该想下图一样。应该是 CPU 通过虚拟内存区找物理内存中的数据。下面来介绍一下什么是程序地址空间。原创 2023-10-04 11:15:23 · 216 阅读 · 0 评论 -
linux_进程状态
运行 (R):进程正在运行或已经准备好运行。休眠 (S):进程处于休眠状态,等待某个事件的发生,如I/O操作或信号。中断 (D):进程处于不可中断的睡眠状态,通常是等待设备或资源,如磁盘I/O。僵尸 (Z):进程已经终止,但是其父进程还未收到终止信号或未进行处理,进程存在但没有参与运行。停止 (T):进程被暂停或停止,通常是由于收到停止信号,如Ctrl+Z。僵尸 (X):进程已经终止,但是其父进程已经终止或退出,僵尸进程被init进程(PID为1)接管。原创 2023-07-30 10:02:37 · 247 阅读 · 0 评论 -
进程_PCB 的理解
我们这里说的 task struct 就是 PCB ,而PCB是所有操作系统里面进程的一个叫法,而我们的task struct 是一款具体的操作系统(linux)里面的PCB的一个叫法。task struct 里面的属性和PCB里面的都是差不多的,但是肯定是有差别的。下面我们就先简单的看一下 linux 里面的进程PCB 就是一个用来描述进程的一个控制块,操作系统通过对 PCB 进行管理来达到对进程进行管理。原创 2023-07-30 08:22:39 · 779 阅读 · 0 评论 -
调试工具_gdb使用教程
我们要知道我们的程序有两种,一种是release 还有一种是 debug 版本的,我们的调试只有咋 debug 版本下才可以调试,我们只需要在编译的时候在后面加 -g 选项就是添加调试信息,也就是debug 版本。原创 2023-07-11 19:31:07 · 2601 阅读 · 0 评论 -
理解进度条代码
实际中,我们并不会去自己控制进度条的速度,例如:我们在下载东西的时候我们的已下载内容 的多少来控制,所以下面我们会用 download函数来模拟下载,然后调用进度条下面我们会分开,使用头文件来声明,以及主函数实现逻辑和函数实现分开来写。原创 2023-07-04 20:46:25 · 187 阅读 · 0 评论 -
CentOS/ubuntu 环境下git的安装与卸载
git是一款管理系统,常用于管理电脑上的文件,git是任何文件都可以进行版本的管理,并且每一次修改文件git都会有记录。原创 2023-06-23 18:25:23 · 1046 阅读 · 0 评论 -
gcc-g++使用&编译链接理解
在讲gcc/g++使用之前我们先讲一下背景,编译链接编译链接我们之前讲过一次,但是这里在深入理解一下编译链接,以及我们看一下现象。原创 2023-06-03 15:05:39 · 1570 阅读 · 0 评论 -
CentOS7vim的配置
由于vim没有配置并不好使用,所以vim是需要我们自己配置的,这里说一下vim怎么配置在一台机器上,我们可能有多个用户,对于vim来说每个用户的vim配置并不会影响其他的用户,所以我们每次都只能配置当前用户的vim。原创 2023-05-20 18:38:49 · 303 阅读 · 0 评论 -
CentOS中vim的使用
我们这里输入4 + shift + g我们就到了第4行既然我们可以到指定的行了,那么我们每一行太长我们又不想一个字符一个字符的点呢?原创 2023-05-20 15:51:25 · 2361 阅读 · 0 评论 -
Linux CentOS7中yum的使用&&更新yum源
我们在windows中我们是经常需要下载一些我们需要的软件,那么我们在Linux中理所当然也是需要的,那么我们如何安装软件呢??原创 2023-05-20 14:02:11 · 11473 阅读 · 1 评论 -
Linux中添加sudoers
我们在自己的用户里想要执行某些命令,经常需要用root才可以执行,我们为了方便一点,我们可以之间把我们的用户添加到sudoers里面,下面说一下如何添加。然后我们找到大概100行左右,大概就在100行附近,我们看到图片上的那一条内容,我们把它复制一条,然后把前面的root改成自己的用户名就可以了。进来是这样的,不过有一些可能是英文,不过都是一样的,我们输入E,编辑。我们现在就是root用户,然后我们到root用户的根目录下。然后我们看一下里面的内容,找到 /etc 目录,然后进去。原创 2023-05-15 20:44:33 · 1187 阅读 · 0 评论 -
Linux文件属性修改
关于我们的文件属性如何修改呢?我们今天来看一下。原创 2023-05-13 20:10:31 · 864 阅读 · 2 评论 -
Linux基本权限
我们在windows中也经常有文件的创建和修改时间,那么我们的linux中在哪呢??原创 2023-05-13 19:37:20 · 594 阅读 · 0 评论 -
Linux查找指令 && 时间查看
我们看一下就是这样查找,假设我们像查找当前目录及以下目录中的所有test.c文件,我们就可以find -name 文件名 就可以 查找了,find是一个很强大的工具,它是正真的在磁盘中查找,不过由于fing的指令比较多,所以这里只介绍一个 find -name。我们在windows中想要看一下时间,我们可以直接在显示器上看到,但是如果我们用的是linux远程登录软件我们像查看一下时间,我们应该怎么做?我们看到,我们的包含hello的都没有出现 ,这个就是我们的-v选项。原创 2023-05-13 18:32:17 · 2725 阅读 · 0 评论 -
Linux指令 && 快捷键
上一次我们说到了linux的基本指令,这次我们先说一下热键。原创 2023-05-13 13:52:21 · 761 阅读 · 0 评论 -
Xshell CentOs Linux命令2
上一次我们说了几个命令,文件的创建删除等,还有就是文件查看,今天我们继续看几个命令。原创 2023-04-25 14:12:08 · 449 阅读 · 1 评论 -
Xshell中的基本命令
我们看到也删除成功了,但是这是我们的普通用户下的删除,如果式 root 下的删除我们可能每次都会询问是否确认删除,我们每次都需要点 yes 确认删除,如果我们嫌麻烦的话,我们可以加 -f表示不需要提醒。我们看到,我们刚开始的位置是在 test 下,然后我们 cd . 之后我们继续查看我们的位置,我们的位置还是在 test 文件下,所以我们的 . 是当前目录文件下。我们发现没删除掉,上面显示我们的 d2 不为空,到这里我们发现如果我们的目录不为空的话,我们的 rmdir 没法删除目录,那么我们怎么办呢?原创 2023-04-23 20:53:08 · 3644 阅读 · 3 评论