
Linux系统编程
文章平均质量分 94
Linux系统编程
LuckyRich1
一个正在努力学习的小菜鸡
展开
-
【liunx系统编程】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题
本文就目前为止所学的线程知识总体运用写了一个线程池,顺便把线程池改成单例模式,那什么是单例呢,单例实现的有什么方式呢?在见一见其他常见的各种锁,其中对自旋锁我们举个例子帮助理解,并学会它的使用!最后我们学了读写锁,同样举个例子帮助理解,读写锁为什么读加锁和写加锁用的接口不一样?读者写者天然会造成写者饥饿问题等等。同样这也是linux系统编程最后一篇博客,下一篇进入网络编程!原创 2024-01-09 16:59:25 · 1903 阅读 · 40 评论 -
【linux系统编程】POSIX信号量+基于环形队列的生产消费模型
本文主要就信号量和基于环形队列的生产消费模式为主要内容,我们从上篇文章遗留下来的问题为切入口对我们所写的代码有没有优化的地方。引出什么是信号量,为什么要信号量,怎么办信号量,然后讲解环形队列生产消费模型从而把我们所学的信号量给用上。帮我们深刻理解这个知识!原创 2024-01-09 10:59:02 · 1172 阅读 · 21 评论 -
【linux系统编程】线程同步+基于BlockingQueue的生产者消费者模型
在线程互斥写了一份抢票的代码,我们发现虽然加锁解决了抢到负数票的问题,但是一直都是一个线程在抢票,它错了吗,它没错但是不合理。那我们应该如何安全合理的抢票呢?引出来了线程同步,然后在学习生产者消费者模型,从多方面讲解什么是生产者消费者模型,生产者消费者的关系,到后来321原则。现在左手拿着生产者消费者模型,右手拿着互斥和同步,由此写了一份基于BlockQueue生产者消费者模型。并引出生产者消费者凭什么就是高效的,高效在哪里?它的意义在哪里?并且提出一个问题下一篇文章来解释!原创 2024-01-04 17:15:17 · 1712 阅读 · 66 评论 -
【linux系统编程】线程互斥
本篇文章着重讲的是线程互斥的内容,我们知道线程创建处理几乎大部分资源都是共享的,那多线程访问同一份共享资源有没有什么问题,本文从这里开始引入,并开始介绍互斥锁,使用互斥锁的函数,并对互斥锁进行了简单的封装, 有了锁会不会产生问题?由此引出死锁的问题,以及解决方法!原创 2024-01-03 11:02:49 · 1431 阅读 · 24 评论 -
【linux系统编程】线程控制
上篇文章几乎都在解释什么是线程,这篇文章就是线程的实践,主要分为线程创建,线程终止,线程等待,线程取消,以及实现一个简易的线程封装。其中我们把上篇文章遗留下来的线程ID到底是什么,每个线程都有自己独立的栈结构到底在哪等等问题的解决!原创 2023-12-26 16:55:06 · 1464 阅读 · 22 评论 -
【linux系统编程】线程概念
本文主要内容是在解答什么是线程,之前学linux学的一直都是进程,那线程到底是什么,和进程有什么不一样。linux下的线程是如何实现的?以及从另一个视角重新理解进程,那之前讲的进程与今天的进程有冲突吗,线程一旦创建大部分资源几乎都是共享的,那有没有自己私有的?一个线程出现了异常会影响其他线程吗?为什么?l等等!原创 2023-12-26 16:41:42 · 1346 阅读 · 17 评论 -
【linux系统编程】信号——信号保存+信号处理
这是一篇将近3w字的超长文章,是信号三部曲的第二部曲及第三部曲的集合,并且还包含以前没学过信号不能讲的知识这里都进行了补充。首先讲了信号保存,信号是如何保存的。然后讲了信号处理,以前说过信号是在合适的时候被处理,什么合适的时候?进程从内核态返回用户态的时候,那什么是用户态,内核态,进程什么时候去OS中执行代码的,进而将虚拟地址空间在做进一步的阐述。以及有关信号的一些接口和接口的使用,并且还阐述如果同一时间发送同类型的信号OS会做什么处理等等知识,以及可重入函数volatile关键字SIGCHLD信号相关知识原创 2023-12-02 16:40:01 · 1777 阅读 · 23 评论 -
【linux系统编程】信号——信号产生
这一篇信号三部曲,第一部信号产生的话题,本文首先讲述学习信号的预备知识,信号不等于信号量,信号要学什么,都有什么信号。然后从生活的角度理解信号再代入到概念中帮你理解信号。如何理解信号的发送?谁发送的信号,发送的信号保存在哪里,什么时候处理信号,发送信号的方式有那么些,什么是核心转储有什么用等等!!原创 2023-11-29 15:09:22 · 1846 阅读 · 28 评论 -
【linux系统编程】进程间通信——共享内存+消息队列+信号量
这是进程间通信的第二方式,System V标准的进程间通信,包括共享内存,消息队列,信号量。本文详细讲解了三种方式的原理,接口的介绍,以及共享内存的实现,共享内存的特点,关键在于如何理解key,用来表示共享内存,消息队列,以及消息量在内核中的唯一性等等!原创 2023-11-18 15:30:05 · 1136 阅读 · 30 评论 -
【linux系统编程】进程间通信——管道
这是一篇万字以上的博文,详解总结了什么是通信,为什么要通信,怎么通信,通信的本质,通信的前提。以及第一种通信方式:管道,管道分为匿名管道和命名管道。分别见识这两种管道,学习它们的学习。并且总结知识。原创 2023-11-11 17:35:03 · 1492 阅读 · 36 评论 -
【linux系统编程】文件系统+软硬连接+动静态库
这同样是一篇万字以上的文章,也是是linux基础IO最后一些内容,包括文件系统,前面了解进程与被打开文件的关系,那没有被打开的文件如何在磁盘中存放的,这些工作是由文件系统做的;什么是软硬链接,软硬链接的作用,如何实现动静态库,动静态库的加载原理!原创 2023-10-28 10:30:53 · 929 阅读 · 33 评论 -
【linux系统编程】重定向+缓冲区
这是一篇万字文章,详细讲解了重定向的本质,重定向接口,重定向分类,以及自己实现的shell增加重定向功能。还有缓冲区是什么,缓冲区再哪里,自己简易实现一个缓冲区,并且有缓冲区和操作系统的关系!原创 2023-10-17 14:49:15 · 1303 阅读 · 20 评论 -
【linux系统编程】基础IO+系统文件IO+文件描述符分配规则
这是一篇有关文件内容万字详解,深度从各个方面解释了有关文件的底层操作,以及内容。看完一定对文件有更深层次的理解!原创 2023-10-14 10:21:07 · 1052 阅读 · 15 评论 -
【linux系统编程】实现shell
本文详细描述了自己实现一个shell需要做那些工作,以及3个需要注意细节的地方!以及对前面知识点的总结概况运用这些知识来实现shell!原创 2023-09-25 10:40:36 · 917 阅读 · 14 评论 -
【linux系统编程】进程等待,进程替换
这是一篇万字以上博文,详细总结了进程等待,进程替换详细知识点。以及各自注意事项。看完一定大有收获!原创 2023-09-24 09:25:01 · 697 阅读 · 7 评论 -
【linux系统编程】进程创建,进程终止
返回的本质就是写入,所以谁先返回,谁就先写入id,因为进程具有独立性,所以写时拷贝,因此同一个id,地址是一样,但是内容是不一样。前面所说父子进程共享fork之后的代码,其实不准确,在fork函数之内父子进程就已经分流共享了,所以父子进程各自执行return。在前面创建子进程的时候就学过了fork函数,它能从已经存在进程中创建一个新进程,新进程为子进程,而原进程为父进程。通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。0具体是几,标识不同的错误。原创 2023-09-17 14:23:06 · 916 阅读 · 2 评论 -
【linux系统编程】进程地址空间
本文详细讲解了什么是地址空间,见见地址空间,感性认识地址空间,理性认识地址空间,为什么要有地址空间。从几个方面详细解读地址空间!原创 2023-09-12 10:24:20 · 336 阅读 · 1 评论 -
【linux系统编程】环境变量
详细解读环境变量到底是什么,如何查看环境变量,以及获得环境变量的三种方式。原创 2023-09-10 15:50:01 · 709 阅读 · 5 评论 -
【linux系统编程】进程优先级,进程切换
一个进程刚出来是有优先级的,并且linux支持进程运作中,进行优先级调整的,调整的策略就是更改nice完成的。系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。这是因为进程在运行的时候,都有自己的时间片,超过时间不管该进程有没有执行完都会被剥离,等待下次运行。在任何时候,cpu里面的寄存器里面的数据,看起来是大家都能看到的寄存器上,但是寄存器内的数据,只属于当前进程。多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。原创 2023-09-09 11:50:13 · 351 阅读 · 1 评论 -
【liunx系统编程】进程的状态
写了一会操作系统发现我们电脑变得很卡,操作系统是很聪明的,它去查看,发现这个进程导致电脑变卡,如果不删去这个进程而去删别的进程就会导致其他进程有意见,所以操作系统决定给它删了,过了一会磁盘写数据遇见错误,呼叫进程,但是进程被删了,所以最终导致写入数据失败。所以进程退出的时候,不能立即释放该进程对应的资源(代码和数据释放掉,PCB保留),保存一段时间,让父进程或者操作系统来进行读取,因什么原因而退出。所谓孤儿进程就是,当父进程先退出,这个子进程会被操作系统(1号进程)领养,这个子进程叫做孤儿进程。原创 2023-09-08 10:31:32 · 413 阅读 · 2 评论 -
【Liunx系统编程】进程概念,查看进程,进程调用,创建子进程
以前我们在书上或者其他途径了解到进程的概念。一个运行起来(加载到内存)的的程序叫做进程。在内存中的程序叫做进程。进程与程序相比具有动态属性。这里的概念比较抽象,没有那么容易理解,下面对进程到底是什么做了详细解答。程序的本质是文件,文件是在磁盘上放着的。当我们的可执行程序要运行的时候,会由磁盘将程序代码和数据加载到内存中,然后在由cpu去执行,如果只有一个程序还还好说,但是内存不可能只放一个程序的代码和数据。内存中有太多加载进来的程序,操作系统要不要管理加载进来的多个程序呢?原创 2023-09-07 11:10:01 · 353 阅读 · 4 评论 -
【Liunx系统编程】操作系统
详细讲述了操作系统的概念,作用,操作系统式如何管理硬件,软件的,以及贯穿整个Liunx学习的知识点。原创 2023-08-24 11:40:52 · 393 阅读 · 7 评论 -
【Liunx系统编程】冯诺伊曼体系结构
但是内存并不是天然就有数据的,数据真正都存在在磁盘上,实际上cpu读的数据早就预先由磁盘搬到内存中。问当你登录qq和你的某位朋友聊天,从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程,是怎么样的?那么就有问题了,谁帮我预先读,谁帮我刷新,那些数据需要加载到内存,什么时候加载。内存和外设都可以存储数据,从外设拿数据以外设的速度进行,从内存拿数据以内存速度进行。因此为了提高整机效率,cpu在读和写的时候,在数据层面,只和内存打交道。到目前为止,我们所认识的计算机,都是由一个个硬件所组成的。原创 2023-08-22 22:35:24 · 292 阅读 · 2 评论 -
Liunx环境下git的详细使用(gitee版)
本文详细介绍了git是什么,git三板斧:add,commit,push的作用,操作,和演示,以及git其他命令原创 2023-08-03 16:29:46 · 2263 阅读 · 10 评论 -
【Liunx系统编程】开发工具
本文详细介绍了Liunx编辑器vim,编译器gcc/g++,调试器gdb,vim配置,sudo配置,以及简单了解Liunx项目自动化构建工具make/makefile。原创 2023-08-02 20:29:16 · 612 阅读 · 3 评论 -
【Linux系统编程】yum工具的认识及使用
我们(Liunx客户端)用Liunx下载软件,要不要有人提供对应的软件?肯定是需要的;谁提供的?我们知道Liunx是一个开源的,因此谁开源谁提供;放在哪里呢?其实是本组织开源软件对应的服务器上;原创 2023-07-31 21:48:31 · 835 阅读 · 6 评论 -
【Linux】权限
按照我们自己的理解,权限是自己有权做什么事情。其实意思也差不多。总结:权限是约束人的(一个人或某些群体)目标对象:做本来就没有对应的属性(业务),比如要在播放视频的软件做在线oj题。。。权限:一件事情是否允许被谁做。Linux权限更多的是文件权限文件权限=人+文件属性比如这个文件允许张三读,不允许李四读等等。允许王二写,不允许其他人写。如果是这样针对每个人进行权限的划分的话,就太麻烦了。因此把人换成角色就好一些。可能有人会觉得按照拥有者和其他人划分不就可以了吗?为什么要存在所属组呢?原创 2023-07-14 09:11:30 · 326 阅读 · 4 评论 -
【Linux系统编程】基本指令
当“该文件的内容被取用”时,就会更新这个读取时间。举例来说,我们使用cat去读取一个文件时,就会更新该文件的Access,原创 2023-07-05 13:45:53 · 1060 阅读 · 4 评论