
Linux
文章平均质量分 91
Hero 2021
想要上进的一名coder
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux线程的同步与互斥(二) 条件变量+信号量
例如:当一个线程访问队列时,发现队列为空时只能等待,直到其他线程将一个节点添加到队列中,显然,只有互斥锁的情况下,我们比较困难的知道临界资源的状态,此时我们需要一种机制或者策略来知道临界资源的状态——条件变量!对于生产函数,他关心的是空格子,所以先要申请空格子资源,申请成功,代码顺序往后执行,空格上就放上了数据,释放时,虽然格子被占据了,但是数据却多了,所以要释放数据资源!我们需要进行条件检测的时候,这里需要使用循环的方式,来保证退出循环一定是因为条件不满足导致的!刚刚开始的时候为空,拿和放在同一个位置;原创 2023-06-07 23:41:40 · 658 阅读 · 0 评论 -
Linux单例模式
单例模式是一种“经典的、常用的、常考的”设计模式。IT行业这么火,涌入的人很多。俗话说林子大了啥鸟都有,大佬和菜鸡们两极分化的越来越严重,为了让菜鸡们不太拖大佬的后腿,于是大佬们针对一些经典的常见的场景,给定了一些对应的解决方案,这个就是设计模式(也是经验模式)原创 2022-09-13 21:00:13 · 483 阅读 · 1 评论 -
Linux线程池
线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。提前准备好的线程,用来随时处理任务,就称之为线程池!原创 2022-09-13 15:11:53 · 297 阅读 · 2 评论 -
Linux线程的同步与互斥(一) 互斥锁+读写锁
为什么需要同步和互斥?因为多个线程共享地址空间,也就是很多资源都是共享的优点:通信方便缺点:缺乏访问控制线程安全:因为一个线程的操作问题,给其他线程造成了不可控、引起崩溃、异常、逻辑不正确等问题的现象。创建一个函数,它没有线程安全问题的的话,不要使用全局变量、STL、malloc、new等等会在全局有效的数据(会有访问控制的问题)我们之前写的函数为什么没有线程安全问题呢 我们之前所学的都是使用的局部变量!线程都有自己的独立栈结构!互斥同步相关的概念临界资源:凡是被线程共享访问的资源都是原创 2022-09-12 11:01:16 · 1886 阅读 · 0 评论 -
Linux线程控制
Linux支持POSIX多线程接口,称为平thread(POSIX Thread的简称),编写Linux下的多线程应用程序,头文件需要包pthread.h线程创建函数名称pthread_create函数功能创建一个线程头文件#include<pthread.h>函数原型int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void原创 2022-08-17 10:57:46 · 434 阅读 · 0 评论 -
Linux线程的概念
文章目录线程的概念一、Linux线程的概念重新理解进程内核视角的进程与线程二、Linux线程与接口关系的认识三、线程和进程的共享和私有资源四、线程的优缺点五、线程异常六、线程用途七、验证线程线程的概念一、Linux线程的概念一般教材中线程:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,其粒度要比进程更细和轻量化内部:线程在进程的地址空间内运行执行分支:CPU调度的时候,只看PCB中每一个PCB曾经被指派过的执行方法和数据,CPU可以直接调度进程的一部分:常规操作系统(如Win原创 2022-08-16 18:24:47 · 789 阅读 · 2 评论 -
Linux进程信号
首先明确:信号VS信号量他们两者毫无关系!信号入门背景知识生活中的信号——给人看的!计算机中的信号——给进程看的!什么是信号①进程具有识别并处理信号的能力(这个能力远远早于信号的产生),且进程知道该如何识别信号,且进程提前约定好当接收到信号时要执行了哪些操作,即约定信号的处理方式和安装信号处理函数。②进程收到某种信号的时候,并不是立即处理,而是在合适的时候。(信号随时都可能产生——异步性,但是当前进程可能会做更加重要的事情)③进程收到信号后,需要先将信号保存起来,以供在合适的时候处理信号的原创 2022-07-14 10:48:24 · 838 阅读 · 2 评论 -
进程间通信—管道
文章目录进程间通信概念介绍目的发展分类管道管道的概念匿名管道匿名管道的特点进程间通信概念介绍进程之间可能存在特定的协同工作的场景!一个进程要把自己的数据交付给另一个进程,让另一个进程进行处理——这就叫做进程间通信!通过之前所学,我们知道每个进程之间都有独立性!交互数据,那必然成本很高(意思就是一个进程看不到另一个进程的资源)。所以操作系统就要设计通信方式。两个进程要相互通信,但是进程间具有独立性,那么必须的先看到同一份公共资源。这里的资源:就是一段内存(可能以文件、队列、原始内存块等形式提供,这原创 2022-05-24 14:46:56 · 1003 阅读 · 33 评论 -
基础IO—动静态库
动态库和静态库查看动静态库指令:ldd 文件名功能:用于打印程序或者库文件所依赖的共享库列表进一步查看系统库安装在哪里:一般库分为两种:静态库和动态库,静态库以.a为后缀,动态库以.so为后缀!无论是静态库还是动态库都是文件,存放在磁盘上的实实在在的文件!库文件的命名:libXXXX.so 或者 libYYYY.a-…库的真实名字:去掉lib前缀,去掉.a .so等等后缀,剩下的就是库名字静态库概念动态库概念1、如何制作静态库?库本身就是2进制的文件,我们如何得知,一个库给我们提原创 2022-05-17 12:03:53 · 563 阅读 · 8 评论 -
Linux基础IO
一、回顾C和C++的文件操作链接三个流C程序运行起来,会默认打开三个输入输出流stdin ->键盘stdout ->显示器stderr ->显示器这三个流都是FILE* 类型的,fopen返回值,文件指针类型向显示器输出打印#include<stdio.h>int main(){ const char * msg="you can see me!\n"; fputs(msg,stdout); return 0;}结果演示:C原创 2022-05-07 17:00:13 · 536 阅读 · 30 评论 -
进程控制详解
进程控制详解,基本的进程控制函数原创 2022-04-29 18:55:04 · 2076 阅读 · 39 评论 -
进程地址空间
我们一起来看一看C/C++程序地址空间布局:问题:这个C/C++程序地址空间是内存吗?原创 2022-04-16 15:18:33 · 2690 阅读 · 42 评论 -
进程管理的概念
什么叫做进程如何管理进程原创 2022-04-11 17:02:06 · 3501 阅读 · 47 评论 -
Linux基本指令
1、ls指令语法 :ls [选项] [目录或者文件]功能:对于目录,列出该目录下的所有子目录和文件。对于文件,列出文件名及其他信息。常用选项:-a(all)列出目录下的所有文件,包含以 . 开头的隐藏文件。-l (long)列出文件的详细信息。注意:ls -l 可以连写成 ll-d(directory)将目录像文件一样显示,而不是显示其下的文件。-F(form)在每个文件名后面附上一个字符以说明该文件的类型。“*”表示可执行的普通文件;“/.原创 2022-02-14 22:41:59 · 2701 阅读 · 21 评论 -
shell命令以及运行原理和Linux权限
shell命令以及运行原理Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者注意:shell 是所有原创 2022-03-08 15:07:29 · 2329 阅读 · 31 评论 -
冯.诺依曼体系结构+操作系统
目录冯.诺依曼结构体系为什么会有内存这个单元的存在?关于IO基于冯诺依曼的数据流动操作系统一些操作系统的概念什么叫做管理?操作系统的所处体系位置:操作系统核心管理了四大系统软件:系统调用和库函数的概念:冯.诺依曼结构体系 数学家 冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成( 运算器 、 控制器 、 存储器 、 输入设备 、 输出设备 ),这套理论被称为冯·诺依曼体系结构。1、输入...原创 2022-04-08 11:35:56 · 1919 阅读 · 15 评论 -
Linux工具
Linux软件包管理器yum我们在Linux下有一般有三种软件安装方式1、源码安装2、rpm安装(安装包)3、yum安装我们一般都推荐yum安装,因为前者安装比较麻烦,可能存在大量的软件之间的依赖关系,(比如说,我们软件需要更新管理,想要下载新版本的就很麻烦)什么是yum?说简单明了:就是Linux下的应用市场英文缩写:yum=Yellow dog Updater, Modified 。主要功能是更方便的添加/删除/更新RPM包,它能自动解决包的倚赖性问题,它能便于管原创 2022-03-21 19:11:11 · 1681 阅读 · 59 评论