Linux
文章平均质量分 69
奋斗的小跳蛙
仰望天空,脚踏实地。
展开
-
zlib安装
zib底层时deflate算法. 详讲https://blog.csdn.net/ghevinn/article/details/45747465sudo yum install zlib-develgzFile gzopen(const char* path,const char* mode)path:要打开的gzip文件名mode:rb读/wb写返回值 : 返回一个gzFile指针,失败返回NULL .int gzread(gzFile file,void buf,unsigned le原创 2021-04-08 16:38:49 · 613 阅读 · 0 评论 -
Centos7.x系统下重置用户登录密码方法
1、开机后进入以下界面,然后按Esc或者E键编辑选项:2.添加相关命令行。3.按下Ctrl+X,以单用户模式启动,输入相关命令修改用户密码,mount -o remount,rw /sysroot 修改文挂载文件系统为可写入。chroot /sysroot 改变文件系统的root:参考文章链接:https://blog.csdn.net/userpass_word/article/details/81807316...原创 2020-05-15 16:48:09 · 717 阅读 · 0 评论 -
五种典型IO模型学习笔记
五种典型IO阻塞IO非阻塞IO信号驱动IO异步IO前四种IO模型对比多路转接IO多路转接IO的实现模型select模型:阻塞IO阻塞IO: 发起IO调用后,若当前不具备IO条件则阻塞等待。流程非常简单,一次只能进行一个IO,多个IO的情况下,过程是串行的。进程对cpu利用率不高(因为可能有大量的时间在等待IO就绪)非阻塞IO非阻塞IO : 发起IO调用后,若当前不具备IO 条件,则立即...原创 2020-05-09 13:22:55 · 318 阅读 · 3 评论 -
Shell里sort详讲
Linux里的sort是一个可执行程序,位于/usr/bin/sort,它的功能就是将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。sort -u 文件名在输出行中去除重复行sort -r 文件名sort默认的排序方式是升序,如果想改成降序,就加个-r。sort -o 文件名由于sort默认是把结果输出到标准输出,所...原创 2020-04-13 09:25:42 · 554 阅读 · 0 评论 -
Linux下线程池源码实现
线程池:初始化阶段创建有最大数量限制的线程,以及一个线程安全的任务队列,若有任务需要处理,则将任务抛入线程池中,线程池中的的线程就会去处理这个任务。优点1.避免峰值压力下,资源耗尽的风险;2.节省线程创建、销毁带来的时间成本为什么需要线程池?针对请求处理,单个线程处理,效率过低,采用多线程处理。但是每个请求都创建一个线程,有可能线程创建过多,效率没有增加反而降低/瞬间资源消耗过度,程...原创 2020-03-22 09:51:42 · 132 阅读 · 0 评论 -
面试题(一)死锁
死锁概念多个执行流在对多个锁资源进行争夺操作,但是因为推出顺序不当,而导致互相等待,流程无法继续推进的情况(就是程序卡死这了)。死锁产生的四个必要条件:1.互斥条件: 一个锁只能有一个人能加,我加了锁,别人就不能加了。2.不可剥夺条件:我家的锁,别人不能替我释放3.请求与保持条件: 我加A锁,然后去请求B锁,但是请求不到B锁,我也不释放A锁。4.环路等待条件: 我拿着A锁请求B锁,对方...原创 2020-03-21 20:22:29 · 233 阅读 · 0 评论 -
生产者与消费者模型实现
生产者与消费者模型特点:解耦和,生产者模块与消费者模块并不直接交互,都是仅操作线程安全的队列支持忙闲不均,队列中有对个节点可以起缓冲作用支持并发生产者与消费者模型的实现:一个场所,两种角色,三种关系。生产者与生产者应该具备互斥关系消费者与消费者应该具备互斥关系。生产者与消费者应该具备同步 + 互斥关系。实现一个线程安全的队列 +多个角色的执行流#include<io...原创 2020-03-21 18:22:15 · 136 阅读 · 0 评论 -
多线程(二)线程安全
线程安全在多个执行流中对同一个临界资源进行操作访问,而不会造成数据二义,这就是线程安全。如何实现线程安全: 同步于互斥互斥:通过保证同一时间只有一个执行流可以对临界资源进行访问(一个执行流访问期间,其它执行流不能访问),来保证对临界资源访问的安全性。同步:通过一些条件判断来实现多个执行流对临界资源访问的合理性(有资源则访问,没有资源则等待,等有了资源再被唤醒)如何实现互斥: 互斥锁如何...原创 2020-03-21 15:16:12 · 138 阅读 · 0 评论 -
多线程(一)线程控制
线程概念在Linux下使用pcb描述实现了程序调度,并且这些pcb共用同一个地址空间,相较于传统的pcb更加轻量化一点,因此也把Linux下的pcb称之为轻量级进程。进程是系统资源分配的基本单位线程是cpu调度的基本单位线程间的独有与共享独有: 栈,寄存器,信号屏蔽字,errno,标识符**共享:**虚拟地址空间(代码段,数据段),文件描述符表,信号处理方式,工作路径,用户ID ...原创 2020-03-20 20:57:16 · 303 阅读 · 0 评论 -
进程信号
进程信号信号概念信号就是一个软件中断,通知进程发生了某个事件,打断进程当前的操作,去处理这个事件。信号是多种多样的,并且一个信号对应一个事件,这样才能做到收到一个信号后,知道到底是一个什么样的事件,应该如何处理(但是要保证必须识别这个信号)信号种类 kill -l 可以查看所有的信号。 一共62种信号,1~31 是非可靠信号,34~64是可靠信号。信号的生命周期整个流程可以...原创 2020-03-20 10:05:25 · 114 阅读 · 0 评论 -
进程间通信(三)信号量
信号量信号量用于实现进程间的同步与互斥互斥: 保证同一时间只有一个进程访问临界资源实现临界资源的互斥访问保证安全性。同步: 通过一种条件判断,不能访问则等待,能访问再唤醒,实现对临界资源访问的合理性。本质: 内核中的一个计数器+pcb等待队列(对资源进行计数);互斥的实现: 通过只有0/1的计数器,实现对临界资源访问状态的标记;在临界资源访问之前获取信号量,计数减一,若计数小于<...原创 2020-03-19 19:16:27 · 157 阅读 · 0 评论 -
进程间通信(一)管道
进程间通信 (IPC)(一)操作系统为用户提供进程间通信的目的进程间因为每一个进程都有一个虚拟地址空间,在保证了进程独立性的同时,(都是操作自己虚拟地址空间,无法访问别人的地址,无法直接通信)却使得进程间无法直接通信,因此需要操作系统给用户提供一些公共的媒介让多个进程都能够通过访问这个媒介进行通信,所以操作系统来提供进程间通信方式,并且因为通信场景不同,提供的方式也有多种。(二)进程间通信...原创 2020-03-19 16:14:26 · 123 阅读 · 0 评论 -
文件描述符详讲
文件描述符文件描述符是一个正整数,是内核中文件描述信息结构体的下标。pcb里面有一个指针,指向了struct files_struct 结构体,里面还有一个struct file fd_array[]结构体数组,这个结构体数组里的每个元素指向一个struct file的结构体,这个结构体里是对一个文件的描述,也就是通过这个结构体来对文件进行管理。而这个数组元素的下标就是fd(文件描述符)。...原创 2020-03-18 16:39:48 · 324 阅读 · 0 评论 -
系统调用IO接口
open/write/read/lseek/closeint open(const char * pathname,int flags,mode_t mode)功能:打开文件 pathname :指定要打开的文件名称flages: 选项参数 必选参数: O_RDONLY (读) O_WRNOLY (写) O_RDWR(只能选一)(读写) 可选参数: O_CREAT ...原创 2020-03-18 15:33:27 · 131 阅读 · 0 评论 -
Linux下进程控制
进程创建创建一个进程的流程 : 创建一个pcb,复制父进程中的信息。Linux创建进程有两个函数1. pid_t fork()返回值: 父进程返回子进程的pid,子进程返回0,创建错误返回-1父进程创建子进程后,代码共享,数据独有 (利用了写实拷贝技术,)用fork()函数建立的子进程几乎与父进程完全一样,子进程中的所有变量均保持他们在父进程中的值(当然fork的返回值除外),因为...原创 2020-03-18 13:23:34 · 145 阅读 · 0 评论 -
Linux下进程地址空间
进程地址空间每个进程都有一个自己的进程地址空间。而我们在进程中所访问到的地址实际 都是一个虚拟地址。虚拟地址空间:为什么不直接使用物理内存?因为直接使用内存利用率低,缺乏内存访问控制,所以才采用虚拟地址空间Linux下是通过一个mm_struct结构体描述 出一块完整的连续的线性的地址空间。因此有时候也叫作内存描述符struct mm_struct 内存描述符{ulong me...原创 2020-03-17 22:02:18 · 98 阅读 · 0 评论 -
进程概念
1.进程是什么?在Linux下 进程就是一个pcb,是一个运行中程序的描述,通过描述信息中的内存指针可以找到内存中运行的程序代码以及数据,并且通过上下文数据可以保存程序调度切换时正在处理的数据,以及通过程序计数器保存进程切换时程序即将执行的下一步指令,通过这些描述信息来实现控制一个程序的运行,因此对操作系统来说进程就是pcb。pcb在Linux下是struct task_struct结构体pc...原创 2020-03-17 21:18:23 · 265 阅读 · 0 评论 -
Linux下静态库与动态库总结
1.什么是库文件?库文件实际上就是封装了一大堆已经编译完成的代码文件通过连接这个库进而获取到响应函数实现.举个例子: 就是当我们要把自己的代码给别人用的时候,又不想给别人源代码,就需要封装成库文件。**** 注意: 库文件里不能有main函数 ****2.Linux下库的种类?Linux下的库文件一般分为静态库和动态库两种。3.静态库的制作与使用 静态库是指编译链接时,把库文...原创 2020-03-17 18:43:38 · 169 阅读 · 0 评论 -
gcc编译器
gcc是一个编译器,可以将高级语言c语言编译成机器可以识别的语言。首先,我们先说一下gcc工作流程预处理: 去掉注释,展开代码编译: 语法语义纠错,将c语言解释成为汇编代码汇编: 将汇编代码解释成为机器语言.链接: 链接库文件中的代码.gcc常用选项-E 只进行预处理 生成.i-S 只进行编译 生成.s-c 自进行汇编 生成...原创 2020-03-17 16:18:56 · 138 阅读 · 0 评论 -
自主实现minishell
自主实现minishellshell就是一个命令行解释器。1.等待用户的标准输入 【ls -l -a】 scanf ,fgets2.对用户数据进行解析,得到程序名称【ls】以及参数信息【-l】和【-a】;3.创建子进程,在子进程中进行程序替换。4.shell程序需要等待子进程退出。...原创 2020-01-29 14:41:54 · 332 阅读 · 0 评论 -
Linux中权限划分
用户分类:linux下的用户分为两类,一类是管理员用户 ,即root用户;另一类是普通用户。创建新用户需要在管理员用户下使用 useradd 用户名来添加新用户, 修改用户密码则使用passwd另外** 系统级参数得修改就是需要root用户权限了**文件权限linux下一切皆文件,所以文件也有权限,这样才能更加符合实际需求。文件操作分用户.文件所有者 文件所属组 其它用...原创 2019-11-23 09:38:15 · 1288 阅读 · 0 评论 -
强大的less
在Linux众多的查看文件软件中,功能最强大的非less莫属。关于这个命令,我们可以通过用 man less 这条命令来查看less的用法,但是不知道你们有没有跟我一样,感觉对初学者不太友好,所以我就记录了一些常用的用法。使用less的格式:less 参数选项 文件路径|文件名-N 显示行号我们这里就是用less来打开根目录下的passwd文件。然后我们就可以看到文件里的内容...原创 2019-10-24 21:16:36 · 76 阅读 · 0 评论