linux
Mrsw
沧笙踏歌,静水流深。
展开
-
线程池
线程池1.线程池线程池:线程的池子,有很多线程,但是数量不会超过池子的限制。需要用到多执行流进行任务处理的时候,就从池子中取出一个线程去处理。应用场景:有大量的数据处理请求,需要多执行流并发/并行处理。实现:一堆线程+线程安全的任务队列,然后不断取出任务进行处理。如果一次数据请求的到来伴随一个线程的创建去处理,则会产生一些风险以及一些不必要的消耗:1.线程若不限制数量的创建,在峰值压力下,线程创建过多,资源耗尽,有程序崩溃的风险。2.每次创建线程和销毁线程都需要时间。线程池使用已经创建好的线程原创 2020-05-14 21:56:42 · 139 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型1.概念生产者消费者模型就是通过一个容器来解决生产者和消费者的强耦合问题。应用场景:有线程不断的生成数据,有线程不断的处理数据。优点:解耦合,支持忙闲不均,支持并发。2.基于阻塞队列的生产者消费者模型在多线程编程中阻塞队列是一种常用于实现生产者和消费者模型的数据结构。与普通队列的区别在于,当队列为空时,从队列获取元素的操作会阻塞,直到队列中放入了元素;当队列满时,往队列中存元素的操作也会阻塞,直到有元素被从队列中取出。#include<cstdio>#includ原创 2020-05-12 19:13:52 · 207 阅读 · 0 评论 -
Linux多线程
Linux多线程1.线程概念线程是进程中的一条执行流。在之前进程的章节,我说进程就是一个pcb,是程序动态运行的描述,通过pcb可以实现操作系统对程序运行的调度管理。在本章节,我们知道线程是进程中的一条执行流,这个执行流在linux中是通过pcb来实现的,因此linux下的线程就是一个pcb,但是这个pcb共用同一个虚拟地址空间,相比较传统pcb更加轻量化,因此也被称为轻量级进程。lin...原创 2020-05-08 17:12:32 · 219 阅读 · 0 评论 -
Linux进程信号
Linux进程信号信号是一个软件中断。操作系统通过信号告诉进程发生了某个事件,打断进程当前的操作,去处理这个事件。1.信号的查看kill -l //查看系统中的信号种类在Linux操作系统中,一共有62中信号。1~31号信号:从unix借鉴而来的,每个信号都有具体对应的系统事件------非可靠信号。34~64号信号:后期扩充的,因为没有具体对应事件,因此命名比较草率------可靠...原创 2020-04-23 19:03:45 · 154 阅读 · 0 评论 -
Linux进程间通信
Linux进程间通信每一个进程之间具有独立性,因此无法直接通信所以才需要操作系统提供进程间通信方式,实现进程间的通信。操作系统针对不同的通信场景提供了多种不同的通信方式:数据传输–管道/消息队列;数据共享–共享内存;进程控制–信号量。1.管道本质:内核中的一块缓冲区,多个进程访问同一个管道就可以实现通信。种类:匿名管道/命名管道。匿名管道内核中的缓冲区没有具体的标识符,因此只能用于具...原创 2020-04-19 20:19:01 · 129 阅读 · 0 评论 -
基础IO—02
Linux基础IO—021.文件描述符与文件流指针的关系文件描述符:是一个非负整数—系统调用的IO接口。文件流指针:FLIE结构体—库函数IO接口的操作句柄。我们知道,库函数是对系统调用接口的一层封装。通过文件流指针进行最终文件操作的时候,依然还要能够找到文件对于的文件描述符才可以。文件流指针是一个结构体,结构体中有很多成员变量,其中就有一个叫_fileno,它就是文件描述符。int m...原创 2020-04-17 19:32:51 · 134 阅读 · 0 评论 -
基础IO—01
Linux基础IO—011.标准库的IO接口标准库的IO接口有:fopen/fwrite/fread/fseek/fcloseFILE* fopen(char* filename, char* mode);//(文件名称,打开方式)打开方式:r只读/r+读写/w只写/w+只读/a追加写/a+追加读写/b二进制操作r+和w+的区别:r+读写打开文件,若文件不存在则报错/w+读写打开文件,若...原创 2020-04-15 21:40:51 · 145 阅读 · 0 评论 -
Linux进程控制—02
进程控制—021.程序替换程序替换本质来说就是替换一个pcb在内存中对应的代码和数据。加载另一个程序到内存中,然后更新页表信息,初始化虚拟地址空间。这个进程pcb将从头重新开始调度新的程序运行。程序替换函数族int execl(const char* path, const char* arg, ...);int execlp(const char* flie, const char* ...原创 2020-04-14 16:54:15 · 125 阅读 · 0 评论 -
Linux进程控制—01
进程控制—011.进程创建fork函数的使用pid_t fork(); //创建一个进程,父子进程数据独有,代码共享。//子进程中返回0,父进程返回子进程id。写时拷贝技术:子进程复制了父进程,一开始与父进程指向同一块物理内存。因此看起来父子进程完全相同,但是进程之间具有独立性。意味着当这块物理内存中数据即将发生改变时会重新给子进程开辟物理内存,将数据拷贝过来,因为子进程应该有自己的数据...原创 2020-04-13 19:03:32 · 196 阅读 · 0 评论 -
Linux进程概念—02
进程概念—021.进程地址空间我们先通过一段代码来了解一下。#include<stdio.h>#include<unistd.h>#include<stdlib.h>int g_val = 1;int main(){ pid_t pid = fork(); if(pid == 0) { g_val = 100; printf("ch...原创 2020-04-11 19:03:12 · 96 阅读 · 0 评论 -
Linux环境变量
Linux环境变量基本概念配置系统运行环境参数的变量。作用:使系统运行环境配置更加简单灵活;可以通过设置环境变量给一个进程传递参数信息。环境变量是具有继承性的,子进程也拥有父进程的环境变量。相关命令echo //显示某个环境变量的值export //设置一个新的环境变量set //显示所有变量(包括环境变量)env //显示所有环境变量unset //删除环境变量代码中...原创 2020-04-09 22:06:26 · 410 阅读 · 0 评论 -
Linux进程概念—01
Linux进程概念基本概念进程:就是一个运行起来的程序。程序:一系列有序的指令集合描述进程-pcb操作系统如何实现多个程序的调度运行:将这个运行中的程序描述起来,然后将这些描述组织起来进行管理。通过实现对pcb的调度管理实现对运行中程序的切换调度运行—对于操作系统来说这个描述信息-pcb就是进程进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述实现对程序的运行调度。在Li...原创 2020-04-07 21:53:18 · 123 阅读 · 0 评论 -
Linux常用工具—02
Linux常用工具—02编译器-gcc/g++通常我们所写的c语言程序是一种高级的语言程序,这些程序cpu是无法直接识别的,需要编译器将我们所写的代码解释为机器指令之后才能执行。1.编译过程预处理:展开头文件、宏替换、去掉注释、条件编译gcc -E test.c -o test.i编译:检查语法,生成汇编代码gcc -S test.i -o test.s汇编:汇编代码转成二进制...原创 2020-04-02 19:55:50 · 105 阅读 · 0 评论 -
Linux常用工具—01
Linux常用工具—01软件包管理工具:yum查看有哪些软件包yum listyum search name安装软件包yum install package_name移除软件包yum remove package_name开发工具:vim1.基本概念vim有多种模式,我们主要了解命令模式、插入模式和底行模式。命令模式:完成对文本内容指令操作。插入模式:向文本中插入数...原创 2020-03-30 15:59:27 · 84 阅读 · 0 评论 -
Linux权限管理
Linux权限管理1.权限用户对操作系统所能进行的操作进行权力限制。管理员-root/普通户2.对文件操作的用户分类文件和文件目录的所有者:u文件和文件目录的所有者所在的组的用户:g其他用户:o3.用户对文件进行的操作分类可读r:对文件而言具有读取文件内容的权限/对目录而言具有浏览目录信息的权限可写w:对文件而言具有修改文件内容的权限/对目录而言具有删除移动目录内文件的权限可执...原创 2020-03-24 18:10:59 · 130 阅读 · 0 评论 -
Linux基础指令—02
Linux基础指令—021.cat该命令作用是打印文件内容到终端显示。cat -b 对输出的非空带有行编号。cat -n 对输出的所有行编号。cat -s 不输出多行空行。2.more指令对文件内容进行分页显示。more -n 对输出的所有行编号。q 退出more。3.less指令less与more相似,但使用less可以随意浏览文件。less -i 忽略搜索时的大小写。...原创 2020-03-10 17:50:56 · 92 阅读 · 0 评论 -
Linux基础指令—01
Linux基础指令—011.ls指令该命令列出该目录下的所有子目录与文件,将显示出文件名以及其他信息。ls -l 列出文件的详细信息。ls -a 列出所有文件,包括隐含文件(以.开头的文件)。2.pwd命令该命令显示用户当前所在的目录。绝对路径:以根目录作为起始路径。相对路径:以当前目录作为起始路径。3.cd指令该命令改变工作目录。cd … 返回上一层目录。cd - 返回最...原创 2020-03-09 17:21:06 · 87 阅读 · 0 评论