
从零开始学Linux
文章平均质量分 93
该栏目是我学习linux的知识的总结,方便复习,也希望能够帮助到大家!!!!!
努力学习的少年
一分耕耘,一份收获
展开
-
【Webserver】——线程池的原理,手写线程池
线程池是一种 利用 池化技术思想 来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的 创建和任务的执行 解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程所带来的资源消耗。原创 2023-08-07 18:22:37 · 942 阅读 · 0 评论 -
【Linux系统命令】——平均负载分析,以及cpu的性能检测,进程上下文切换分析
所谓的上下文切换,就是把上一个任务的寄存器和计数器保存起来,然后加载新任务的寄存器和计数 器,最后跳转到新 任务的位置开始执行新任务。可以分为:进程上下文切换,线程上下文切换,以及中断上下文切换。原创 2023-06-24 01:24:26 · 3514 阅读 · 1 评论 -
【Linux & IO多路转接】——epoll详解
epoll的功能一样跟select和poll一样,都是用来检测文件描述符中的事件是否就绪,当有事件就绪,可以通知给应用层,上层调用 read,recv,write,send 等类似接口就不会被阻塞原创 2022-08-24 22:09:25 · 3391 阅读 · 2 评论 -
【Linux】——select详解
select函数是IO多路复用的函数,它主要的功能是用来等文件描述符中的事件是否就绪,select可以使我们在同时等待多个文件缓冲区 ,减少IO等待的时间,能够提高进程的IO效率。原创 2022-08-17 16:17:58 · 24769 阅读 · 7 评论 -
【Linux系统编程】——深度理解5种IO模型
磁盘IO是十分缓慢的,所以Linux为了减少磁盘IO,在系统调用后,会利用DMA技术先将磁盘中的数据拷贝到内核的缓冲区中,这个缓存就是页缓存,只有当缓存满足某些条件时,才会发起磁盘IO。原创 2022-08-12 22:12:12 · 1534 阅读 · 3 评论 -
【linux多线程(四)】——线程池的详细解析(含代码)
什么是线程池?线程池是一种线程使用模式,它是将线程和缓冲队列预存在一个池子中,等待监督管理者分配可并发执行的任务,当有任务时,可以避免重新创建线程和销毁线程所带来的性能开销,makefile文件threadpool:threadpool.cc g++ $^ -o $@ -lpthread .原创 2022-02-14 16:52:48 · 2296 阅读 · 10 评论 -
【线程(三)】———条件变量的详细解析
目录???? 1.同步概念???? 2.条件变量条件变量函数???? 3.生产者消费者模型生产者消费者模型优点生产者消费者的321原则生产者消费者问题BlockingQueue的生产者消费者模型 ????作者:努力学习的少年????个人简介:双非大二,一个正在自学c++和linux操作系统,写博客是总结知识,方便复习????目标:进大厂???? 如果你觉得文章可以的话,麻烦你给我点个赞和关注,感谢你的关注!???? 1.同步概念在并发多线程原创 2022-02-08 19:14:48 · 2839 阅读 · 0 评论 -
【线程(二)】——互斥量的详细解析
进程线程间的互斥的相关概念临界资源:多线程执行流共享的资源叫做临界资源 临界区:每个线程内部,访问临界资源的代码叫做临界区。例如如下:count是临界资源,因为它是全局变量,所以它存储在数据段中,新线程和主线程都可以访问到它,新线程中代码count++和主线程代码printf("%d\n",count);都是临界区,因为它们都访问了临界资源。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用 原子性:不会被任何调度机制打断的操作,该操作..原创 2022-02-07 16:31:49 · 3886 阅读 · 5 评论 -
【linux线程(壹)】——初识线程(区分线程和进程,线程创建的基本操作)
种一颗树最好是10年前,其次是现在!! ..原创 2022-01-23 15:41:30 · 1649 阅读 · 7 评论 -
【linux操作系统】——页表的深入理解
在每一个进程中,每个进程都有自己的虚拟内存空间,这能使进程与进程之间相互独立,互不影响,当运行一个进程的时候,cpu是先看到进程的虚拟内存上的数据,然后在通过页表的映射关系找到物理内存中代码和数据,而页表就是将虚拟地址和物理地址建立起映射关系。今天我们要讲的是虚拟地址与物理地址是怎样进行映射的呢。我们以32位linux的操作系统为例。在32位的平台下,每个地址都是32个字节,那么就有2^32对映射关系。假设我们只有一张页表是将虚拟地址和物理地址映射的,那么这张表就有2^32对页表项,..原创 2022-01-20 20:13:48 · 6768 阅读 · 5 评论 -
【linux】——信号详解和实操代码
kill -l查看进程所有的信号1.每个信号都有一个编号,每个信号都对应一个宏定义,例如2号信号是SIGINT2.我们看到总共有62个信号,没有32和33号信号,1到31是普通信号,34到64是实时信号。在这里我们只讨论1到31信号产生信号1.通过按键产生信号。例如【ctrl】+【c】进程接受信号的过程进程收到信号可能不能够立即的去处理信号,那么我们的进程就需要将该信号保存起来,那么进程是如何记录这些信号的?在进程...原创 2021-11-16 21:54:54 · 2361 阅读 · 15 评论 -
【linux之进程通信】——共享内存
目录????.共享内存的机制????. 创建共享内存????. shmget函数????.ftok函数????. shmctl函数????. shmat函数????. shmdt函数????. 代码实例????.区分key值和shmid????. 管道的方式进行通信往期linux文章????.共享内存的机制让进程拿出一块虚拟地址空间来,映射到相同的内存中,使不同的进程都能看到同一块空间,这样就能实现不同的进程进行通信。????. 创建共享内原创 2021-11-10 14:56:45 · 1325 阅读 · 0 评论 -
【linux】——动静态库
在linux操作系统中,函数库是一个非常重要的的东西,因为很多软件之间都会互相使用彼此提供的函数来使用其特殊的功能。例如我们在写c语言的时候,但我们要使用printf这个函数时,我们都会包含stdio.h这个库,因为printf的具体实现是放在stdio.h文件里面的。什么叫做库呢?函数库其实本质是一堆非包含main的函数的.c文件,通过编译后形成相对应的.o文件,然后将这堆.o文件中所有代码打包在一个文件下,这个文件就是库,也就是说函数库是一堆.o文件的集合。当我们要...原创 2021-11-02 20:30:10 · 3094 阅读 · 9 评论 -
【linux】——文件系统
目录????.什么是inode????.目录????.硬链接????.软链接????.什么是inode当我们创建一个文件时,我们不对文件中写入任何内容,请问该文件是否占磁盘空间?答案是肯定的,因为文件中的属性信息也占了磁盘空间。首先我们得认清一个概念:文件构成=文件属性信息+文件里存储的内容。文件属性:文件的权限,文件文件里存储的内容的空间大小,文件的创建时间等等。在linux中,文件的属性和内容是分开存储的,我们把把存储文件属性信息的结构称为inode,i原创 2021-10-30 10:03:38 · 1134 阅读 · 4 评论 -
【linux】——基本的文件操作
文件操作头文件#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //定义宏打开文件——openint open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); pathname: 要打开的文件或创建...原创 2021-10-27 14:07:39 · 671 阅读 · 0 评论 -
【Linux]——进程控制
1.fork函数fork函数是非常重要的函数,它能从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。#include <unistd.h> pid_t fork(void); 返回值:子进程中返回0,父进程返回子进程id,出错返回-1当进程调用fork时,当控制会转移到内核中的fork代码中后,内核中的fork中实现细节:也就是说在fork中return的前面,子进程就已经创建完成了,所以到return那里,子进程和父进程分别返回不同的pid..原创 2021-10-25 14:57:03 · 835 阅读 · 4 评论 -
【Linux】 ——gcc/g++的使用
<font color = blue size = 4>原创 2021-09-25 09:15:31 · 1055 阅读 · 8 评论 -
Linux项目自动化构建工具-make/Makefile (●‘◡‘●)
目录1.为什么要使用make2.makefile的基本语法与变量1.为什么要使用make假设我们的执行文件里面包含2个源文件,分别是main.c , test.c ,如果想要这个程序运行起来,那么就需要先编译:# 先对源文件进行编译,产生test.o,main.o文件[sjp@iZwz97d32td9ocseu9tkn4Z ~]$ gcc -c test.c [sjp@iZwz97d32td9ocseu9tkn4Z ~]$ gcc -c main.c# 将..原创 2021-09-15 18:37:53 · 779 阅读 · 15 评论 -
Linux学习笔记(二)之权限的管理
这里写目录标题1.Linux权限的概念2.Linux权限管理设置权限chownchgrpLinux 授予普通用户root权限方法1.Linux权限的概念超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情,受到某些权限的限制。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。命令 :su 【用户名】作用:切换用户su - 从普通用户切换到超级用户。exit,logout退出当前用户。2.Linux权限管理文件的权限主要是用来限制普通的用户,原创 2021-08-09 17:04:44 · 1292 阅读 · 7 评论 -
【Linux】—— vim常用操作命令
这里写目录标题1.vim的基本概念2.命令模式的操作光标跳转剪贴复制撤销修改3.底行模式4.配置vim编辑器使用文件配置快速配置1.vim的基本概念概念:vim重点解决代码编写的问题,本质文本编辑器,是具有多模式的编辑器vim中有很多种模式,目前掌握三种模式即可在vim编辑器写代码:分别是命令模式,和插入模式,底行模式。正常/普通/命令模式(Normal mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段插入模式(Insert mode)只有在Insert mode原创 2021-08-06 21:05:57 · 2183 阅读 · 3 评论 -
【从零开始学linux】——常见的基本指令(上机演示)
linuxls指令文件或目录的创建指令touchmkdir删除文件或者目录rmdir指令rm指令pwd指令cd指令ls指令用法: ls 选项 文件或文件 功能:查看文件中的信息或者显示目录中包含的目录和文件选项:-a: 列出目录下所有的文件,包含.开头的隐含文件。(在linux中,隐含文件都是以.开头)文件或目录的创建指令指令功能touch在当前目录下创建普通文件mkdir创建目录touch用法: touch 文件 ‘作用:在当前目录下创建文件原创 2021-07-30 17:57:31 · 1178 阅读 · 9 评论