
Linux系统
文章平均质量分 95
Linux学习
sy'ty
学习
展开
-
【Linux多线程】线程池
单例模式是一种 "经典的, 常用的, 常考的" 设计模式。原创 2024-02-01 10:34:58 · 1272 阅读 · 0 评论 -
【Linux多线程】POSIX信号量
此时由于生产者生产的很快,运行代码后一瞬间生产者就将环形队列打满了,此时生产者想要再进行生产,但空间资源已经为0了,于是生产者只能在p_space_sem的等待队列下进行阻塞等待,直到由消费者消费完一个数据后对p_space_sem进行了V操作,生产者才会被唤醒进而继续进行生产。虽然消费者消费的很快,但一开始环形队列当中的数据资源为0,因此消费者只能在c_data_sem的等待队列下进行阻塞等待,直到生产者生产完一个数据后对c_data_sem进行了V操作,消费者才会被唤醒进而进行消费。原创 2024-01-26 11:31:04 · 1012 阅读 · 0 评论 -
【Linux多线程】生产者消费者模型
我们看下面这张图,如果我们只看红色方框里面的内容,生产者和消费者就是生产者生产数据和消费者获取数据,而且生产者生产数据和消费数据是同步关系的,消费者必须要等生产者生产数据之后再来消费,如果我们只是这样看生产者消费者模型的话效率是低下的!生产者消费者模型是多线程同步与互斥的一个经典场景,我们生活中也有许多的消费者与生产者模型,下面我们来举一个生活中的生产者消费者模型的例子——超市。从上面基于任务的生产者消费者模型的过程我们可以看到,消费者获取数据后,还需要将数据进行计算,这个过程也是要花时间的!原创 2024-01-22 10:06:47 · 940 阅读 · 1 评论 -
【Linux多线程】线程的互斥与同步
同样的,我们只进行单纯的加锁,如果一个线程竞争力很强,每次都是申请到锁,但是不干活有可能会导致其它线程长时间竞争不到锁,从而引起饥饿问题。通过运行结果我们可以看到,我们唤醒的这五个线程是有顺序性的,主要是因为这几个线程启动时默认都会在该条件变量下去等待,而我们通过pthread_cond_signal函数每次都唤醒的是在当前条件变量下等待的首个线程,当该线程执行完打印操作后会继续排到等待队列的尾部进行wait,所以我们能够唤醒的线程是有顺序性的。所以也就相当于它是拿着钥匙走的,别人是拿不到这把锁的。原创 2024-01-18 11:09:09 · 968 阅读 · 1 评论 -
【Linux】多线程
什么叫线程?我们认为,线程就是操作系统调度的基本单位!!我们上面说线程是在进程内部运行的一个执行分支,这里的内部是什么意思呢?那什么又叫做一个执行分支呢?这里的内部指的是线程是在进程的虚拟地址空间中运行的。执行分支指的是CPU调度的时候只看PCB,每一个PCB曾经被指派过指向方法和数据,CPU是可以直接调度的。什么叫进程?我们之前认为的进程:进程 = 内核数据结构(task struct) + 代码和数据了解了Linux下的线程之后,我们又该如何理解我们之前讲的进程呢?原创 2023-12-22 16:30:11 · 989 阅读 · 0 评论 -
【Linux】进程信号
除了可以使用kill函数向进程发信号外,我们还可以使用另外两个系统调用向进程发信号:rasie函数与abort函数,下面我就来为大家介绍一下这两个函数。原创 2023-12-17 15:03:10 · 1447 阅读 · 0 评论 -
【Linux】进程间通信
进程间通信(IPC,InterProcess Communication)是两个或者多个进程实现数据层面的交互。日常生活中,一个大型的应用系统往往需要众多进程协作进行,进程通过与内核及其他进程之间的互相通信来协调它们的行为。但是进程间通信是有成本的,因为进程独立性的存在,导致进程通信的成本较高。管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。举例:who | wc -l。原创 2023-12-10 19:50:05 · 1115 阅读 · 0 评论 -
【Linux】基础IO
操作系统有自己的刷新机制,我们并不需要去关心操作系统的刷新机制原创 2023-11-25 16:35:25 · 1272 阅读 · 0 评论 -
【Linux进程】进程控制
main函数的返回值,本质表示:进程运行完成时是否是正确的结果,它又称为进程的退出码!0代表运行正确,如果不是正常退出,可以用不同的数字,表示不同的出错原因!进程退出码只跟代码运行完毕,结果正确或者代码运行完毕,结果不正确这两种情况有关系,进程异常退出我们不再关心他的进程退出码,而是关心为什么会异常退出。只有在main函数中return才能起到退出进程的作用,在非main函数中return表示函数返回。在任意地方调用exit或者_exit函数,都能够起到终止进程的作用,原创 2023-11-13 20:31:54 · 314 阅读 · 0 评论 -
【Linux进程】进程地址空间
我们发现static修饰的局部变量的地址是在全局数据区的,也就是说虽然static修饰的局部变量作用域是在函数内,但是他的声明周期已经是全局变量了。看完结果我们会有疑问:怎么可能父子进程中g_val变量的地址是一样的,同时读取,打印出来的值却是不一样的。所以之前说‘程序的地址空间’是不准确的,准确的应该说成 进程地址空间 ,那该如何理解呢?我们把它叫做程序地址空间。我们之前学习C语言的时候,应该见过下面的空间布局图。我们在上面代码中把变量a改为static变量。变量内容不一样,所以父子进程输出的变量。原创 2023-11-06 13:38:54 · 142 阅读 · 1 评论 -
【Linux进程】环境变量
因为我们自己的进程本身是没有环境变量,但当他启动起来,变成进程之后就具有环境变量,因为./运行我们的myproc之后,它会变成进程,而./myproc又是我们的bash的一个子进程。我们一个进程在运行时,不要简单认为我的进程启动就是把程序加载到内存,而是当我们的程序变成进程在启动时,我们一定要有人调main函数,其实我们的main函数是可以带参数,并且它是有三个参数的,因为我们平时基本上都不怎么用他们,所以我们并没有将这三个参数给写出来。下面我们再来运行一下系统的指令。1.为什么我们执行指令时不用带路径?原创 2023-11-03 21:51:46 · 604 阅读 · 0 评论 -
【Linux进程】再谈进程—进程概念
为了让父和子执行不同的事情!需要想办法。原创 2023-11-03 14:45:31 · 78 阅读 · 1 评论 -
【Linux进程】再谈软件—操作系统(Operator System)
操作系统对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境。操作系统中,注定了,一定存在大量的数据结构!计算机管理硬件——先描述再组织1. 描述被管理对象,用struct结构体。2. 组织被管理对象,用链表或其他高效的数据结构。用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。原创 2023-11-01 22:03:34 · 197 阅读 · 1 评论 -
【Linux进程】先谈硬件—冯诺依曼体系结构
键盘输入消息到内存,CPU处理消息后写回内存,此时你的网卡从内存获取消息并发送到网络,经过处理后,另一端的网卡获取消息并加载到内存,CPU再从内存获取消息并解包处理,然后写回到内存,最后显示器从内存获取消息并并显示在朋友的电脑上。在使用QQ与朋友进行聊天,都是需要联网的,而我们的电脑都是冯诺依曼体系结构,这个聊天的这个过程中,你的键盘相当于输入设备,显示器和网卡相当于输出设备,而你朋友的电脑网卡相当于输入设备,显示器相当于输出设备。从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程。原创 2023-11-01 15:36:15 · 149 阅读 · 1 评论 -
【Linux】权限和权限管理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。原创 2023-10-30 16:15:40 · 224 阅读 · 3 评论 -
【Linux】环境基础开发工具使用
三种模式正常模式插入模式底行模式我们一共有12种总模式,大家下来可以研究一下vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。练习:当堂口头模式切换练习。原创 2023-07-30 19:16:07 · 93 阅读 · 0 评论 -
【Linux】常见基本指令
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。原创 2023-05-22 22:17:30 · 74 阅读 · 0 评论