Linux
文章平均质量分 89
没什么..
一个可爱的人
展开
-
Linux---线程池
线程池1. 线程池概念及应用场合2. 线程池完整代码3. 惊群效应1. 线程池概念及应用场合线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。线程池的应用场景:需要大量的线程来完成任务,且完成任务的时间比较短。 WEB服务原创 2021-04-29 21:56:20 · 197 阅读 · 0 评论 -
Linux---POSIX信号量和基于环形队列的生产消费模型
POSIX信号量和基于环形队列的生产消费模型1. POSIX信号量1.1 POSIX信号量接口函数1. POSIX信号量是什么?描述临界资源有效个数的计数器为什么?因为临界资源可以看成多份,不冲突,提高效率1.1 POSIX信号量接口函数初始化信号量#include <semaphore.h>int sem_init(sem_t *sem, int pshared, unsigned int value);参数:pshared:0表示线程间共享,非零表示进程间共享val原创 2021-04-27 16:37:14 · 191 阅读 · 0 评论 -
Linux---生产者消费者模型
生产者消费者模型1. 强耦合和解耦合2. 生产者消费者模型3. 基于BlockingQueue的生产者消费者模型3.1 BlockingQueue(阻塞队列)3.2 模拟阻塞队列的生产消费模型1. 强耦合和解耦合解耦合的目的就是能够让函数之间更加高效。2. 生产者消费者模型生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞原创 2021-04-21 19:07:09 · 255 阅读 · 0 评论 -
Linux---线程互斥和同步
这里写目录标题1. 线程互斥1.1 互斥量的接口1. 线程互斥进程线程间的互斥相关背景概念临界资源:多线程执行流共享的资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用原子性:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。但有时候,原创 2021-04-20 23:13:33 · 378 阅读 · 0 评论 -
Linux---线程相关函数
线程相关函数1. 线程相关函数1.1 pthread_exit函数1.2 pthread_join函数1.3 pthread_cancel函数1.4 pthread_detach1. 线程相关函数线程终止从线程函数return。这种方法对主线程不适用,从main函数return相当于调用exit。线程可以调用pthread_ exit终止自己。一个线程可以调用pthread_ cancel终止同一进程中的另一个线程。1.1 pthread_exit函数exit()是终止进程,并不是终止原创 2021-04-20 13:06:05 · 502 阅读 · 0 评论 -
Linux---多线程初识
多线程1. Linux线程概念1.1 线程的优点1.2 线程的缺点1.3 线程异常2. Linux线程控制1. Linux线程概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”(线程是一个进程的虚拟地址空间内运行的执行流)一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化(轻量级进程)透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合原创 2021-04-13 11:14:43 · 149 阅读 · 0 评论 -
Linux---进程信号续
进程信号二1. 阻塞信号1.1 在内核中的表示1.2 sigset_t1.3 信号集操作函数1.4 sigprocmask1.5 sigpending2. 信号的捕捉2.1 sigaction2.2 可重入函数1. 阻塞信号实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞 (Block)某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.注意,阻塞和忽略是不同的,只要信号原创 2021-04-12 19:24:07 · 135 阅读 · 0 评论 -
Linux---进程信号
进程信号一1. Linux信号的基本概念1.1 生活角度的信号1.2 注意1.3 用kill -l命令1.4 信号处理常见方式2. 信号产生的一般方式2.1 通过终端按键产生信号2.2 调用系统函数向进程发信号2.3 由软件条件产生信号2.4 硬件异常产生信号1. Linux信号的基本概念1.1 生活角度的信号这个生活的故事,其中包含了信号的方方面面,只要好好理解这个过程,就能够融会贯通到我们接下来的信号理解中。你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递原创 2021-04-08 19:11:14 · 160 阅读 · 1 评论 -
Linux---进程间通信
进程间通信11. 管道1.1 匿名管道1.2 命名管道2. system V 共享内存2.1 ftok2.2 共享内存函数要是想让两个进程之间通信,就是想尽一切办法,让两个进程能够看到同一份资源(内存)。其中内存的提供是通过文件的方式就叫做管道,如果绕过文件那么就到做system V进程间通信介绍数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进原创 2021-04-08 09:31:44 · 215 阅读 · 0 评论 -
Linux---动静态库的原理和实现
这里写目录标题1. 磁盘2. 文件系统3. inode4. 软硬链接5. 认识并制作动静态库5.1 静态库5.2 动态库1. 磁盘磁盘的描述性结构盘面、柱面、扇区就能定位到我想找的文件。但是对于操作系统来说,他不可能还要关心这里问题,所以把物理的地址转化为了对于逻辑数组的管理。2. 文件系统可以理解为每一个盘面就是一个分区,但是这个分区还是太大了,所以还需要分成很多的块组(Block group),那么管理好一个块组类比于其他的,就能把所有的块组都管理好,也就可以把这个分区管理好了。这个原创 2021-04-03 11:49:43 · 444 阅读 · 0 评论 -
Linux---基础IO
基础IO1. 复习C文件IO相关操作2. 认识文件相关系统调用接口3. 认识文件描述符,理解重定向4. 对比fd和FILE,理解系统调用和库函数的关系1. 复习C文件IO相关操作2. 认识文件相关系统调用接口3. 认识文件描述符,理解重定向4. 对比fd和FILE,理解系统调用和库函数的关系...原创 2021-04-01 15:18:02 · 151 阅读 · 0 评论 -
Linux---制作简易shell
考虑下面这个与shell典型的互动:用下图的时间轴来表示事件的发生次序。其中时间从左向右。shell由标识为sh的方块代表,它随着时间的流逝从左向右移动。shell从用户读入字符串"ls"。shell建立一个新的进程,然后在那个进程中运行ls程序并等待那个进程结束。然后shell读取新的一行输入,建立一个新的进程,在这个进程中运行程序并等待这个进程结束。所以要写一个shell,需要循环以下过程:1.打印命令提示符[用户名@主机名 当前目录] 提示符(对于普通用户$,对于root用户显示#)2.原创 2021-03-22 19:12:14 · 1479 阅读 · 3 评论 -
Linux进程控制
进程控制1. 进程创建1.1 fork函数初识1.2 写时拷贝2. 进程终止3. 进程等待3.1 wait3.2 waitpid1. 进程创建1.1 fork函数初识在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程(子进程是以父进程为模板创建的)pid_t fork(void); 这个函数会有两个返回值(给子进程返回0,给父进程返回子进程的pid),那么为什么会这样呢?第一种理解方式:对于一个父进程来说,是可以有多个子进程的,那么对于父进原创 2021-03-17 21:39:31 · 219 阅读 · 1 评论 -
Linux操作平台上传代码到github
三步走原创 2021-03-11 11:06:59 · 198 阅读 · 0 评论 -
Linux程序地址空间
程序地址空间1. 程序地址空间回顾二级目录三级目录1. 程序地址空间回顾在学习C语言的时候,就经常看到这样的空间布局图二级目录三级目录原创 2021-03-08 21:40:51 · 1108 阅读 · 3 评论 -
Linux环境变量
这里写目录标题1. 进程的优先级1.1 基本概念2.3.1. 进程的优先级1.1 基本概念2.3.原创 2021-03-08 19:36:13 · 2618 阅读 · 7 评论 -
Linux进程
Linux进程1. 通过系统调用创建进程1.1 如何理解进程的创建?1.2 fork为什么会有两个返回值?2. 进程状态2.1 进程状态的查看2.2 R运行状态(running)2.3 S休眠状态(浅度休眠状态)2.4 D磁盘休眠状态(深度睡眠状态)2.5 T停止状态(stopped)2.6 Z僵尸状态(zombie)2.7 孤儿进程进程的相关概念(一)链接: link.1. 通过系统调用创建进程使用man fork 可以看到fork的功能(创建一个子进程)以及所需要包含的头文件(#include原创 2021-02-07 15:23:51 · 384 阅读 · 2 评论 -
Linux编辑器vim和gcc/g++以及gdb的使用
Linux基础知识1. Linux软件包管理器yum1.1什么是软件包1.2 如何安装软件2. Linux编辑器-vim的使用2.1 vim的基本概念2.2 vim的基本操作2.3 vim正常模式的命令集2.4 vim末行模式命令集3. Linux编译器-gcc/g++使用3.1 背景知识3.2 gcc如何完成3.3 函数库4. Linux调试器-gdb使用4.1背景4.2 使用1. Linux软件包管理器yum1.1什么是软件包在Linux下安装软件, 一个通常的办法是下载到程序的源代码原创 2021-02-05 09:12:46 · 1609 阅读 · 0 评论 -
Linux的进程概念
进程概念1.冯诺依曼体系结构(理解进程前的补充知识)2. 操作系统(理解进程前的补充知识)3.进程3.1 基本概念3.2 描述进程---PCB(Process control block)3.2 查看进程3.3 通过系统调用获取进程标识符1.冯诺依曼体系结构(理解进程前的补充知识)我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。关于冯诺依曼,必须强调几点:这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备原创 2021-02-04 19:22:10 · 1260 阅读 · 1 评论 -
Linux项目自动化构建工具---make/Makefile
make/Makefile1. 背景1.1 如何编写Makefile1.1.1 依赖关系1.1.2 依赖方法1.1.3 项目清理2. Linux第一个小程序---进度条2.1 回车和换行概念2.2 行缓冲区概念2.3 完整的进度条代码和解析1. 背景会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于原创 2021-01-29 22:28:10 · 681 阅读 · 0 评论 -
Linux下的基本指令
Linux下的基本指令1. ls指令2.pwd命令cd指令1. ls指令2.pwd命令cd指令原创 2021-01-24 10:24:54 · 3670 阅读 · 3 评论