自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Linux信号捕捉

要处理信号, 我们进程就得知道自己是否收到了信号, 收到了哪些信号, 所以进程需要再合适的时候去查一查自己的, 什么时候进行检测呢?当我们的进程从内核态返回到用户态的时候, 进行信号的检测和处理。我们就先简单的解释一下嘛, 内核态最常见的时候就是我们在使用系统调用的时候, 此时不仅仅我们要去执行系统调用里的代码, 我们还得有资格去访问操作系统内的资源, 所以此时操作系统会自动将我们的身份变化为内核身份, 这就是我们的内核态, 而用户态就是我们在执行我们自己编写的代码的时候的状态。

2024-05-07 21:52:13 810 1

原创 Linux进程地址空间第三讲

至今为止, 我们所学到的大多数的知识, 包括语言, 数据结构, 动静态库等等的 都是在下面这3G, 也就是用户空间里的(进程等待, 信号之类的与内核有关的是在上面那1G里的)所以对于我们来说, 我们并没有怎么接触上面的这些部分。上面这部分(1G)映射的是操作系统的代码和数据。

2024-05-07 21:52:04 352

原创 Linux信号

信号 和 信号量 有啥关系吗?没有任何关系, 就像老婆 和 老婆饼一样。

2024-04-29 19:48:52 589

原创 Linux消息队列信号量(了解)

要实现进程间通信我们必须得让不同的进程看到同一份资源, 根据这个资源的不同(文件缓冲区, 内存块, 队列) 我们将通信方式分为管道,共享内存,以及我们接下来要讲的消息队列。消息队列的原理就是让不同的进程能看到同一个队列, 每当想发送数据就将链入队列中, 这样每个进程都能从队列中拿到发送给自己的数据。这种通信方式和之前将的共享内存一样是system V标准。

2024-04-25 20:37:09 753

原创 Linux共享内存

操作系统在物理内存处开辟一段空间, 在修改页表将这段空间映射到一个进程的共享区, 然后将对应的虚拟地址的起始地址显示给应用层, 对另外一个进程也做同样的操作, 这样两个进程就可以通过页表访问这一段内存了。我们看上面的那个图, 其中perms代表的是该共享内存的权限, nattch代表的是有多少个进程和这个共享内存关联。首先, 我们发现, 我们直接运行用户端, 发现用户端没有等客户端输入消息, 直接就开始读取, 所以读到的是空。我们通过查看系统内共享内存发现, 原来是我们之前创建的共享内存没有被释放导致的。

2024-04-17 23:14:02 758

原创 Linux进程间通信

两个或多个进程实现数据层面的交互。

2024-04-15 18:25:47 769

原创 Linux 用管道实现一个简易版的进程池

进程池其实就是我们提前创建好一批进程, 当有任务的时候再将进程指派过去完成那个任务。中间的这框框就是管道, 当父进程没有给子进程发送任务的时候, 子进程就会一直阻塞着, 于是就形成了这样的结构。

2024-04-10 01:36:42 233

原创 怎么将本地VScode与Linux云服务器上的Vscode联动起来

点进来后就可以看到主机已经加载进来了(如果没有, 关闭VScode重进就好了)如果点击后还有continue和cancel的选项就选择。首先我们打开本地刚刚下好的VScode, 下载。此时你的VScode左侧栏里就会出现这个图标。当我们看到这样的时候就说明链接成功了。登上之后就有了当前目录下的所有文件了。保存后就可以在服务器上看到这个文件了。然后输入ssh 用户名@公网地址。如果我们要对代码进行编译可以使用。此时在使用命令行编译代码即可。我们新建文件编写好代码后按。右键点击后选择第一个选项。

2024-04-07 16:25:37 379

原创 Linux进程地址空间第二讲

程序编译好之后, 内部有地址的概念吗?有的, 当程序在编译好后, 内部的诸如变量, 函数等等都变成的地址;而这个地址其实就是虚拟地址, 但是为了做区分我们把他叫做逻辑地址。

2024-04-07 09:31:20 271

原创 Linux中的动静态库

现在我们想把我们刚刚写的这个方法给别人使用我们有两种选法:1 我把源文件直接给他2 我把源代码想办法打包成库发给他库 + .h头文件我们先生成一个库可以看到我们的库已经生成了。接下来我们站在使用者的角度, 来使用一下我们这个静态库。

2024-04-07 09:31:08 1061

原创 补充知识

1 一个磁盘对应的文件他在访问之前部分的属性已经加载到内存了。2 进程打开文件时, 本质上就是进一步在磁盘中把对应的文件打开 –属性往struct inode放, 内容保存好, 最终在用户层写入的时候, 经过系统调用, 进过一系列数据结构找到对应的page然后将数据刷新进物理内存。

2024-04-02 23:36:50 493

原创 Linux文件系统

磁盘是计算机上唯一的一个机械设备, 也是一个外设。

2024-04-02 20:37:43 1079

原创 Linux中的文件操作

在讲文件操作之前, 我们先形成一个共识1 文件 = 内容 + 属性2 文件分为打开的文件 和 没打开的文件3 打开的文件是谁打开的?进程!!– 研究文件操作本质是研究进程和文件的关系!4 没打开的文件:在哪里放着?在磁盘上, 我们最关注什么问题?没有被打开的文件非常多, 文件如何被分门别类的放置好 – 我们要快速的进行增删查改5 文件被打开, 必须先被夹在到内存!(属性一定要加载, 内存取决于是否要进行修改)6 一个进程可以打开多个文件。

2024-03-30 21:24:17 738

原创 Linux小程序: 手写自己的shell

【代码】Linux小程序: 手写自己的shell。

2024-03-28 23:02:16 1335 1

原创 Linux进程程序替换

我们之前创建的子进程, 虽然能够与父进程分工干不同的事, 但是其代码还是与父进程是同一份的, 而如果我们希望子进程和父进程跑完全不一样的代码, 我们就需要使用程序替换这个技术。

2024-03-28 14:45:18 718

原创 Linux进程控制(等待)

到目前为止:我们必须对子进程进行回收, 因为如果不回收会造成内存泄漏wait()等待的是该进程的所有子进程这段代码就是回收多个子进程的示例。

2024-03-26 21:30:38 816

原创 Linux的进程控制(创建和终止)

我们前面已经认识过fork函数, 用fork创建新进程后, 新建立的进程为子进程, 该进程为父进程。fork给父进程返回的是子进程的pid, 给子进程返回的是0, 出错时返回-1进程调用fork。

2024-03-25 21:24:51 943

原创 Linux中的进程地址空间

我们在学习c语言的时候一定是看到过这张图的当时我们的理解是认为这张图描述的是内存空间, 但其实不是的。我们用这个代码来打印出上图所对应的地址可以看到确实地址是从低到高的在开辟空间是, 栈区是自上向下开辟(大地址到小地址) 而堆区是自下向上开辟的(小地址到大地址)可以看到栈的地址是从大到小的可以看到堆区的地址是从小到大的我们知道当我们给变量定义static时, 该变量不会随着函数的释放而被释放为什么呢?我们打印一下他的地址。

2024-03-21 15:16:20 651 1

原创 Linux的环境变量

环境变量是系统提供的形式的变量, 不同的环境变量, 有不同的用户, 通常具有全局属性;

2024-03-18 17:58:55 810

原创 进程的优先级

优先级 vs 权限权限决定的是能还是不能, 而优先级决定是谁先谁后(你已经能了)

2024-03-14 20:06:03 823 1

原创 Linux中的进程(概念,状态)

我们的系统中通常会有多个进程, 调度器就是觉得将哪一个进程放进CPU里运行的那个东西, 调度器的调度原则一般都是要尽可能的平均或则公平的;运行状态凡是在运行队列中的进程,我们称为运行态(R), 表示该进程已经准备好了, 可以随时被调度。

2024-03-12 22:45:31 734 1

原创 Linux调试器-gdb的使用

debug 能调试 有debug信息release 不能调试 无dubug信息。

2024-03-09 18:41:05 321

原创 Linux中的 git 三板斧

gitgit。

2024-03-09 14:11:31 375

原创 Linux小程序--进度条

要写出这个程序, 我们需要学会几个前置知识;

2024-03-08 23:20:42 341 1

原创 Linux的工具

o后一定接的是自定义的名字这样我们就生成了mycode.exe的可执行程序不同的写法 同样的效果-E依赖关系。

2024-03-08 19:23:18 1798 1

原创 Linux的权限

最终权限 = 起始权限 & (~umask)

2024-03-06 14:15:23 956

原创 指令的运行原理 - 简单理解

指令的本质就是编译好的程序和脚本, 一定会在系统的特定路径下存放。2 保护OS, 对于用户的非法请求, 直接拦截。输入指令的过程其实本质是输入字符串。等等是不同解释器的具体称呼。是所有命令行解释器的统称,

2024-03-05 20:59:38 328

原创 Linux基本指令

lsaddusername创建用户passwdname设置密码sshname公网地址登录自己的服务器。

2024-03-05 20:18:19 2073

原创 贪心专题二

讲解贪心算法第二章节 题目均在洛谷可见

2023-05-12 19:44:56 79

原创 五月算法预习题解

讲解题目

2023-05-08 02:35:57 161

原创 贪心专题1

讲解贪心专题, 题目均在洛谷可见

2023-04-27 04:38:38 92 2

原创 前缀和差分专题

前缀和与差分专题 题目均在洛谷可见

2023-04-18 20:10:41 205 1

原创 模拟专题(普及- — 普及+)

模拟专题 题目均在洛谷可见

2023-04-13 11:56:03 168 1

原创 枚举专题(分析 思路 证明)

讲解 题目的分析,思路, 证明;题目均在洛谷上可见。

2023-04-06 01:01:41 282 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除