- 博客(16)
- 收藏
- 关注
原创 进程(二)进程的状态
运行态:工人正在机床前加工零件(使用CPU阻塞态:工人需要等下一批原料送达才能继续工作。他停在机床边,什么也不做,但人还在车间里(占用内存),随时等原料一到就开工。挂起态:因为车间(内存)太拥挤,而这位工人暂时没活干(阻塞)或优先级低,工长让他先离开车间回家休息(换出到磁盘),等需要他时再打电话叫他回来(换入内存),回来后再根据情况进入阻塞或就绪状态。
2025-12-05 19:04:45
799
1
原创 进程(一)进程的介绍和创建
fork的使用案例,这里我们创建了一个进程,先让他打印“我是一个进程”,之后用fork创建子进程让他在打印“我是一个进程(2)”,(这里我隐藏了创建maekfile的过程,实际将test,c编译成了provcess)我们可以发现一个叫做cwd的东西,这个东西就是我们所说的当前路径(实际上是工作路径),当我们修改了工作路径,在发生上面的情况(写入文件但是文件不存在),系统就会在我们修改后的路径中新建文件(log.txt)这是正常的因为在你看不见的后台,实际上还有其他的进程正在运行,所以pid不同是正常的。
2025-12-03 19:56:40
687
1
原创 操作系统:隐形的协调者与守门人
通过上面的结构图不难看出:操作系统分为广义和狭义两种,从广义上来讲,操作系统就是我们常见的所谓:安卓,windows,但实际上,我们接下来要说的操作系统都是从狭义视角来看,即:没有原生库,预装文件(从手机上理解就是我们买完手机后内置好的各种软件“qq”“微信”“应用商店”),外壳shell等。这就通过结构体进行了对硬件信息的管理,在放眼长远,除了管理硬件,是否还需要管理软件(QQ,微信,csdn)这样多个结构体,我们同样需要进行管理,我们就用到了学习过的“数据结构”,这都是后文,我们后面再讲。
2025-12-02 16:04:53
589
1
原创 冯·诺依曼体系结构
首先我们要知道,如果没有内存这个快速传递数据的东西,那么数据的传输方向就是“输入设备->CPU->输出设备”但是,输入设备从上面的分级图来看(例如本地磁盘)它的数据传输速度是非常慢的,这就会导致我们的整体效率是低的,那么如何提高整体的效率?关于与存储分级我们看见了成本的问题(计算机全用输入+输出+CPU,会使用大量CPU会导致造价过高),体系结构效率又是看见了效率的问题(单用输入+CPU+输出又会导致效率太低),这时候我们就引出“内存”作为中间过渡,平衡了效率和成本的问题。
2025-11-29 13:10:50
1050
原创 Linux C/C++ 调试神器:GDB 核心命令与实战
简单来说:在开发时,你永远应该使用Debug 模式。它能让你快速定位和修复 Bug。在发布时,你必须使用Release 模式。它能给你的用户带来最好的性能体验。把 Debug 模式看作是给开发者用的“诊断版”,而 Release 模式是给用户用的“性能版”。你不能开着诊断版去比赛,也不能要求用户用性能版来帮你找 Bug。理解并正确运用这两种模式是专业软件开发的基本功。
2025-11-28 21:08:14
973
原创 【实战】用C语言编写命令行进度条
再回头看第一个例子,我们在刚开始的时候并没有写\n主动清理缓冲区,但是程序结束后我们还是看到了"hello world",这时候我们就能知道另一个知识点:程序结束后会自动刷新缓存区,所以我们就能在程序结束后看见我们的"hello world",也就是说我们所看见的"hello world"是我们自动刷新缓冲区的结果。我们发现,程序数列依次输出倒计时,这和我们目标的原地倒计时显然不符,所以我们修改代码,取消使用换行刷新,使用主动刷新。所以我们也能知道:程序运行结束,缓冲区内部的数据,会被自动刷新。
2025-11-27 18:03:03
877
原创 《Makefile 从入门到精通:一篇就够了》
伪目标是一个不代表实际文件名的 Makefile 目标。它不代表要创建或更新的文件,而是代表一个需要被执行的特定动作或任务。(也就是说你在使用make "目标"不会去检查你的时间戳而是直接执行)例:这里我们发现,我们不断执行make clean没有报错 就是因为我们将clean声明为伪目标用.PHONY显式声明一个目标为伪目标,就是告诉make"嘿,这个目标不是一个文件,请不要检查磁盘上是否存在同名文件,直接执行它下面的命令就行了。
2025-11-25 21:55:24
891
原创 你所不知道的GCC:按下gcc,为何在终端和Vim里是完全两个世界?
S选项把.c文件编译成为.s格式(汇编语言)就停止,-o作用于将处理后的文件放置到指定文件内(这里我的指定文件就是code.s)-c选项把汇编语言翻译成为.o(二进制)就停止,-o作用于将处理后的文件放置到指定文件内(这里我的指定文件就是code.o)-E选项把.c文件预处理成.i格式就停止,-o作用于将处理后的文件放置到指定文件内(这里我的指定文件就是code.i)不加选项默认把.c编译成为可执行文件,-o作用于将处理后的文件放置到指定文件内(这里我的指定文件就是code)文件变成可执行程序的编译器。
2025-11-24 22:29:35
967
原创 《高效编程的终极武器:深入理解Vim》
我们上面提到了vim那么,什么是vim呢?Vim是一个高度可配置、运行于终端命令行中的文本编辑器。它的名字是的缩写,意为“改进的 Vi”,是在另一个经典编辑器vi基础上发展而来的。下面我们来看看关于vim的一些相关知识,首先vim有多种模式,分别有不同的作用和工作行为,让我们继续往下看:首先我们先来看一下这个vim就是是何方神圣?这样看来vim也就是个普通的命令就像我先前使用的ls,pwd一样。
2025-11-24 19:46:13
1030
原创 关于Linux开发工具
开源”即开放源代码。它指的是软件的源代码是公开的,任何人都可以查看、使用、修改和分发。但这不仅仅是“代码可见”那么简单。根据开源倡议组织自由再分发:允许自由地销售和分发软件。源代码必须公开:并且必须是可读的、可修改的形式。允许派生作品:允许修改源代码并生成衍生版。保持原作者代码的完整性:可能要求衍生版使用不同的名称或版本号。不歧视个人或团体:对任何人一视同仁。不歧视任何领域:允许任何领域的用户使用,包括商业用途。许可证的发布:权利自动附加到程序上,不需要再单独申请。许可证不能针对特定产品。
2025-11-23 23:45:10
753
原创 关于Linux的基础指令和权限(补)
关于这个修改文件掩码,我们就首先要知道什么是文件掩码,通俗的来说,就是一个“权限过滤器”,打个比方,天上在下“雨”(权限),而你(文件)打了一把名叫“文件掩码”的伞,这个伞虽然能挡住部分雨水(权限),但是伞上有洞,会允许一部分特定的“雨水”(权限)落到你身上,这些掉落在你身上的“雨水”,就是你所拥有的权限。这样我们就给目录new加入了-t权限,这个权限确保了除超级管理员和文件的所属人之外,所有人不能对文件进行删除,也就保证了j不能删除w和b的文件。读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;
2025-11-19 21:37:56
598
原创 关于Linux基础指令
Linux命令行入门指南 本文系统介绍了Linux常用指令,帮助用户高效管理文件与系统。主要内容包括: 基础操作指令:ls查看文件(-a显示隐藏文件,-l显示详情),pwd显示路径,cd切换目录(..返回上级,~回家目录) 文件管理:touch创建文件,mkdir建目录(-p递归创建),rm删除(-r递归,-f强制),cp/mv复制/移动文件 内容查看:cat显示全文,less分页浏览(支持搜索),head/tail查看首尾n行 实用工具:grep文本搜索,find文件查找,alias设置快捷命令,ctrl
2025-08-08 19:05:09
605
原创 C语言中的变量和数据类型(一)
既然说到了C语言,那么就离不开程序中的“数据”,不同的数据对应着不同的数据了类型,就像不同的小人住在不同的家,我们根据数据的不同,划分了不同的数据类型,不同的数据类型代表着不同的数据和他相应的表达形式。我们把数据类型从大类上划分为内置类型和自定义类型,所谓内置类型,就是在C语言中本身所具有的,由编程语言的规范所定义的,它们直接由语言本身和编译器/解释器支持,不需要用户定义即可直接使用,内置类型就像是预先准备好的蛋糕粉。
2025-01-19 20:44:19
1163
原创 关于C语言的初始入门
说完了主函数,库函数我们再来简单说说上面还未提及的"int",int就是一个关键字,它的作用表示main函数的返回值类型,再回归正题,说说关键字是什么,就像你去学钢琴,每一个按键都是用他自己声音,你能做的,就是把声音联合起来形成一个曲子,而关键字在C语言中就是有一个·“按键”的作用,他在C语言中有着自己的作用和逻辑,是不能被更改的,我们能做的是使用,而不是去随意发挥,这小小的"int"就是关键字中的一员,而像他这么强势的英雄,还有31位。刚好就是回应了int的定义,也算是做到了某种意义上的“有呼必有应”
2025-01-18 19:36:50
967
原创 关于C语言中的分支循环语句
我只能说有的有的,//这样的语句还有九(咳咳牢九门乱入了),这个问题就是出在“do...”上,这让他和其他两个循环有不同,for循环和while循环都是先判断是否进行循环,然后在进行循环,但这个"do...while"可不一般,他先不管三七二十一,先给你来上一个循环,然后再来进行判断这是不是可以进行下一个循环,他的路子这么野,我猜他的使用频率也一定很高吧【狗头】"来进行跳出循环,否则判断条件会将逐句执行判断。也就是说,这个循环,他会首先将循环一遍,,然后再来进行判断,这也是他和另外两个循环最大的不同。
2025-01-16 19:33:54
628
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅