Linux
文章平均质量分 87
Zevin~
这个作者很懒,什么都没留下…
展开
-
mmap(memory-mapped file)
对于文件的读写,内核会从文件的offset开始,将数据拷贝到内核中,设置好PTE指向物理内存的位置,后程序就可以使用load或者store来修改内存中文件的内容,完成后,使用munmap,将dirty block写回文件中,我们可以很容易找到哪个block是dirty,因为对应的PTE_D被设置了。这段代码实现将文件text.txt 打开,并用mmap函数将文件映射到虚拟内存中,通过执政start对文件进行读写,可以在中断中看到由文件写入的数据,程序结束后,可以查看text.txt文件,来查看写入的数据。原创 2022-12-14 16:31:50 · 568 阅读 · 0 评论 -
读者写者模型
🤔水文🤢使用代码完成读者写者模型:使用锁来维护上面三种关系,又线程承担321原则3:三种关系2:两种角色3:一个交易场所示例如何理解伪代码优先级:读者优先:让我们的读者和写者同时到来的时候,让读者先进入访问,写者优先:当读者和写者同时到来的时候,比当前写者晚来的所有的读者都不要进入临界区访问了,等临界区中没有读者的时候,让写先写入,但是这样,(读者多,写者少),所以会出现写饥饿问题(中性词),当我们的数据都被读完之后再给修改,挂起等待特性的锁vs自旋锁挂起等待的锁:挂起等待:就是时间等待的久..原创 2022-06-05 17:52:49 · 157 阅读 · 1 评论 -
单例模式
单例模式就是一种“经典的,常用的,常考的” 设计模式大佬对于一些常见的场景,给定了一个特定对应的解决方案,这个就是设计模式,这个是可以被推广使用的某些类,只应该需要又一个对象(实例),就称为单例例如:一个男人只能取一个老婆一般而言,我们的对象被设计称单例模式那么什么时候创建呢?饿汉模式实现单例模式只通过singleton这个包装类来使用T 对象,则一个进程中只有一个T 对象的实例像这种静态成员,只要创建了一个对象这个静态成员立刻就开辟了,这就叫做饿汉模式(延迟加载),在用的时候再加载,懒汉模式创建单例模式原创 2022-06-03 22:05:15 · 115 阅读 · 7 评论 -
线程池
当我们创建任务的时候再去申请线程,就相当于我们需要malloc的时候再去申请空间,创建线程也是有成本的,请求来了,线程要提前准备好,任务来了,就指派给他提前准备好的线程,原来随时处理任务就叫做线程池(提高效率)............原创 2022-06-03 21:36:12 · 143 阅读 · 6 评论 -
网络基础背景入门
计算机网络背景网络发展现有计算机再有OS,原来没有OS之前使用计算机的成本是很高的,只有科学家才可以使用,在有了OS之后,计算机的使用成本就降低了,之后计算机进入到高校里面,在有了OS之后再有网络我们做实验产生了数据,这个时候数据需要交给别人当企业里面有3个人A,B,C。A处理完数据后把数据传送给B,B在A处理完之前都在等待B处理完数据之后把数据传给C,C在AB都处理完之前在等待数据在来回传导高校内部有数据研究和沟通的需求,就需要产生网络(就是为了提高效率)如以前没有网络,我们想给原创 2022-05-25 21:56:51 · 202 阅读 · 0 评论 -
信号(2)
概念实际执行信号的处理动作叫做信号递达(delievery)自定义默认忽略信号从产生到递达之间的状态叫做信号未决(pending)本质上就是这个信号被暂存在task_struct 信号位图里面,未决我先不知道咋搞,先保存着进程可以阻塞(block)某个信号班长,在老师不在的时候,把不好的学生都记录下来,在下课的时候去找老师...原创 2022-05-14 22:50:05 · 206 阅读 · 6 评论 -
信号产生前
信号与信号量完全没有任何关系准备生活中还有没有信号的场景呢?:闹钟,烽火台的烽火,鸡鸣声。。。—》都是给人看的当我们体内到场景的时候,我们就立马能够想到某些东西的时候,这些都是信号信号的产生就代表上面的场景触发,信号的产生—》信号是要给进程的看的—》进程要在和是 的时候,要执行对应的动作...原创 2022-05-02 22:40:40 · 351 阅读 · 8 评论 -
命名管道于System V
管道的回顾进程是具有独立性的—>进程通信的成本比较高—>必须先解决一个问题—>要让不同的进程看到同一份资源(内存文件,内存,队列)【一定是需要OS提供的】----> pipe的本质:是通过子进程继承父进程资源的特性,达到一个目的让不同的进程看到同一份资源我们通常标识一个文件:路径+文件名(具有唯一性)命名管道为了解决匿名管道只能在父子通信,我们就引入了命名管道命名管道可以在命令行里面弄,也可以在程序里面弄mkfifo filename创建管道文件测试:我们虽然原创 2022-04-29 21:47:06 · 402 阅读 · 11 评论 -
进程间通信---匿名管道
导语我们需要不同进程之间相互协同,进程之间的协同本质上是程序员之间的协同,有可能为要从数据库中拿数据,你要从数据库中将数据格式化,写成特定的格式,我要根据特定的格式做数据统计,这一件事情,有一个无法实现这个事情就无法完成,我们可以将这一件事情拆分成3个事情:一个进程专门从数据库中拿数据,一个进程专门做数据格式化,还有一个进程专门做数据统计第一个处理完之后交给第二个,第二个处理完之后交给第三个这样我们就可以实现业务上的通信,这样就增加了代码的可维护性...原创 2022-04-25 22:19:25 · 1430 阅读 · 7 评论 -
动态库和静态库
时间Access:文件最近被访问的时间,Modify: 最近一次修改文件内容的时间Change:最近一次修改文件属性的时间Change time修改文件内容的时候,有可能也会修改文件的属性比如: 可能会更改文件的大小属性我们会发现操作下来, 文件时间貌似没有变化:在较新的Linux内核中,Accsee中不会被立即刷新更新,而是有一定的时间间隔进行刷新...原创 2022-04-21 15:20:21 · 1009 阅读 · 4 评论 -
文件系统与inode
文件=文件内容+文件属性一个文件没有被打开。那么这个文件就在磁盘里面存放着磁盘是:我们计算机中的一个机械设备(SSD,FLASH卡,USB)扇区:同心园中一道一道的以小块区域,磁道:每一快同心园柱面:半径相同的扇形围起来构成的一圈磁盘写入的基本单位:扇区! 512字节定位方式:可以把磁盘想象成线性结构,LBA可以理解为数组的下标,访问地址,如果我们要写到物理地址,我们就要转换成为物理地址类比(虚拟地址和物理地址)大磁盘管理成本就非常高先要把磁盘划分成一个有一个的小区域分区:磁原创 2022-04-19 16:29:18 · 1388 阅读 · 2 评论 -
Linux----基础IO
复习C语言io知识#include<stdio.h>int main(){ //FILE* fp=fopen("./log.txt","r"); FILE* fp=fopen("./log.txt","a");//追加,不会覆盖掉 if(NULL==fp) { perror("fopen"); return 1; } #if // char buffer[32];// while(fgets(buffer,sizeof(buffer),fp原创 2022-04-14 14:41:08 · 355 阅读 · 8 评论 -
Linux系统编程——控制进程
进程创建fork进程调用fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和核心数据结构给子进程(进程PCB,进程地址空间,页表,构建映射关系)将父进程部分数据结构内容拷贝至子进程添加子进程到系统列表当中fork返回后,开始调度器调度写时拷贝页表中需要有2^32个地址需要映射,如果页表每一部分6字节则一共需要24GB缺页中断:父子当中突然改变了数据,OS就发生了中断,但是之前那个空间是共享的,OS就开辟了一个空间,把老的空间给拷过来,OS重新修改了页表,映原创 2022-03-31 21:22:09 · 1280 阅读 · 10 评论 -
程序地址空间
进程地址空间c/c++程序地址空间不是内存而是进程虚拟地址空间1 #include<stdio.h> 2 #include<stdlib.h> 3 int g_unval; 4 int g_val=100; 5 6 int main() 7 { 8 const char* s="hello world";//在字符常量区域保存原创 2022-03-21 20:18:03 · 1281 阅读 · 8 评论 -
模拟实现ls的总结与感悟
文章目录前期准备[^1]argc与argvgetoptstatstruct stat结构体sprintf与fprintfopendir && closedirreaddir实现过程中遇到的麻烦颜色控制Linux中多文件操作代码实现引言我们每个人在学习Linux的时候使用的第一个命令都应该是ls,这个命令也开启了我们学习Linux的大门,但是应该很少有人知道ls是如何实现的,所以我便在自己的能力范围内对ls进行模拟实现前期准备1argc与argv我们在学习c语言的时候应该就应该对原创 2022-03-19 17:50:33 · 1397 阅读 · 11 评论 -
Linux ----环境变量
文章目录进程的相关概念环境变量常见的环境变量获得环境变量环境变量通常具有全局属性进程的相关概念竞争性:系统进程数目众多,而CPU 资源只有少量,甚至1个,所以进程之间具有竞争属性,为了高效的完成任务,就有了优先级独立性:进程本身具有独立性,打开如何软件其他软件都不会受影响,需要独享资源,多个进程之间互不干扰并行:多个进程再多个CPU 下分别,同时运行并发:多个进程在一个CPU 下采用切换的方式,在一个时间段,多个进程都得以推进环境变量 1 #include<stdio.h>原创 2022-03-17 16:00:19 · 1175 阅读 · 0 评论 -
操作系统与进程(1)
冯诺依曼体系结构冯诺依曼体系结构1.输入设备:键盘,磁盘(外设,读取文件(没读的时候就在磁盘)),网卡,显卡,话筒,摄像头(效率是s,ms级别)2.输出设备:显示器,打印机,磁盘(写文件,就是把数据写到磁盘上),网卡,显卡,音箱等3.存储器(内存):离cpu越近的设备存储效率越高也越贵,有了内存,cpu就不用直接和外设打交道,存储器的快慢决定快慢(内存是体系结构的核心设备)4.运算器&&控制器(CPU):运算器(算术运算与逻辑运算)控制器(读取指令,分析指令,执行指令)(效率n原创 2022-03-03 00:36:55 · 1228 阅读 · 6 评论 -
linux编程必备(yum vim gcc g++ gdb makefile)
yum(等同于手机上的应用市场)Linux中安装软件并不简单方法1.源码安装,编译一个源码进行安装2.rpm安装,安装包3.Linux可能存在大量软件之间的依赖关系,就需要安装许多第三方库,安装非常麻烦,因此可以使用yum,自己会考虑依赖关系,而不许要我们去处理查找软件可以搭配grep进行搜索过滤下载安装yum install (软件名)删除软件yum remove (软件名)...原创 2022-02-23 21:09:15 · 2675 阅读 · 24 评论 -
Linux权限
文章目录Linux中的用户切换用户sudo权限权限修改chmodchownchgrp粘置位umaskLinux中的用户Linux中,默认又两类用户1.root:超级管理员,具有非常高的权限2.普通用户:具有一般权限,需要受权限约束的,只有root可以创建普通用户切换用户使用su -我们对于root和普通用户应该要有两套完全不同的密码来区别从root切换回来1.2.exit或者ctrl d不建议直接用su - name(比较麻烦)sudo临时权限提升,我们提升后仍然要使用普通用户但原创 2022-02-03 22:57:43 · 940 阅读 · 0 评论 -
Linux认识(3)
远程管理常用命令shutdown格式: shutdown [选项] [时间] 关机/重启shutdown 不指定选项或者参数的话,就默认1分钟后取消选项: -r 重启时间 now 是现在就执行(时间可以我们自己随意设置)shutdown -c 可以把关机或重启的命令取消掉但是我们最好用-r选项查看或配置网卡信息网卡与IP地址网卡:是专门负责网络通讯的硬件设备(有线网卡,无线网卡(wifi))IP地址:即在网卡后的地址信息网卡与IP地址我们可原创 2022-02-02 21:16:30 · 644 阅读 · 0 评论 -
linux指令(3)
用户管理1.新增:adduser name2.密码:passwd name3:删除用户:userdel name写了一个简单代码nano就是一个记事本,退出就是ctrl xwhichwhich ls查看特定指令的路径stat查看时间原创 2022-02-02 21:15:17 · 1809 阅读 · 0 评论 -
Linux认识与操作(2)
文章目录treecpmv查看文件内容more catgrepgrep允许对文本进行模式查找(正则表达式)其他指令echo重定向|date时间戳treeLinux中的tree命令 :以树形结构显示文件目录结构(tree这个命令要我们在终端里面先下载才可以使用)tree什么都不加的话就显示当前目录下树形结构tree ~显示家目录下的目录以树形结构显示tree 加路径可以显示该目录下的树形图tree -d 只显示目录,不显示文件cpcp是一个复制拷贝的命令cp 源文件原创 2022-01-06 00:21:52 · 627 阅读 · 0 评论 -
Linux认识与基本操作(1)
文章目录Linux介绍与windows的区别linux主要目录速查表linux常用指令以及使用Linux终端命令模式在终端中查阅命令的相关信息command- - helpman command终端中常用技巧1)自动部全2)曾经使用过的命令常用命令拓展ls命令说明Linux下文件和目录的特点隐藏文件当前目录上级目录ls常用选项ls与通配符的使用cd命令说明相对路径与绝对路径touchmkdirrmLinux介绍linux是一款多用户多任务的操作系统,即同一时间内,可以有多个用户同时使用共享系统中的硬件原创 2022-01-03 21:49:59 · 1583 阅读 · 3 评论