Linux学习之路
文章平均质量分 96
逐步学习Linux,从那个小白变成一个熟悉Linux的大白
加一zZ
一个学习C++的新人
展开
-
(29)Linux--多线程对页表以及线程的理解
在这篇文章中,一定要明白线程是什么,它和进程的区别。并且要知道线程是站在宏观操作系统而言的概念,而具体到Linux操作系统中是没有线程这一个概念的,也没有线程对应的数据结构和系统调用。概念上的线程和内核中的轻量级进程是通过线程库建立的联系。原创 2024-02-01 15:03:33 · 1248 阅读 · 0 评论 -
(28)Linux 信号保存 &&信号处理 && 不可重入函数
至此,加上上一篇文章,信号的整个生命周期都介绍完了,重点在于新的产生,信号保存,以及信号捕捉上面,其它衍生的知识了解即可。原创 2024-01-28 21:18:05 · 1298 阅读 · 1 评论 -
(27)Linux信号的产生&&核心转储---初步认识信号
你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时, 你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下,你也收到快递到来的通知,但是你正在打游戏,需5min之后才能去取快递。那 么在在这5min之内,你并没有下去去取快递,但是你是知道有快递到来了。也就是取快递的行为并不 是一定要立即执行,可以理解成“在合适的时候去取”。在收到通知,再到你拿到快递期间,是有一个时间窗口的,在这段时间,你并没有拿到快递,但是你知 道有一个快递已经来了。原创 2024-01-26 22:37:03 · 668 阅读 · 0 评论 -
(26)Linux 进程通信之共享内存(共享储存空间)
共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。原创 2024-01-12 22:44:55 · 1225 阅读 · 0 评论 -
(25)Linux IPC 进程间通信&&系统调用:pipe接口
如何做到让不同的进程,看到同一份资源的呢?首先,一个进程维护自己进程对应的文件描述符表file_struct,而 file_struct 中有对应的数组。数字里存的是 struct file* fd_array[],这里面存的就是打开文件的文件指针。因为独立性之本质即 "封闭",进程们你封闭你的我封闭我的,那么进程间的交流可谓是窒碍难行。我们知道,文件在内存和磁盘之间来回切换是非常耗时的,因此进程间通信大多都是内存级别的。现阶段我们要学的进程间通信,不是如何通信,而是先去关注它们是如何看到同一份资源的。原创 2024-01-11 19:14:44 · 870 阅读 · 0 评论 -
(24)Linux的动静态库
动静态库 —— 即 动态库 (Dynamic Library) 与 静态库 (Static Library)。① 动态库 .so:程序在运行的时才去链接动态库的代码,多个程序共享使用库的代码。② 静态库 .a:程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。原创 2024-01-10 15:29:10 · 994 阅读 · 0 评论 -
(23)Linux的软硬连接
上一章我们讲解了 inode,为文件系统收了尾,这几章我们充分地讲解完了文件系统的知识点,现在我们开始开始学习软硬链接了。原创 2024-01-09 21:23:27 · 673 阅读 · 0 评论 -
(22)Linux磁盘的认识&&索引节点inode
磁盘级别的文件管理,本质工作和快递驿站的老板做的工作是一样的!对磁盘这个大空间的合理划分,让我们能快速定位查找到指定文件,乃至进行相关后续访问操作。这就是所谓的文件系统(File-Sys)这些文件是又多又杂又乱!小至几 kb,大至几 GB 的都有,文件类型也是各种各样 .jpg, .sh 什么都有,文件所属组,文件类型,只读或者只写,各种各样的 "可能被打开的" 文件都有!所以我们是需要管理它们的。原创 2024-01-09 16:15:34 · 1079 阅读 · 2 评论 -
(21)Linux的文件描述符&&输出重定向
在上一章中,我们已经把 fd 的基本原理搞清楚了,知道了 fd 的值为什么是 0,1,2,3,4,5...也知道了 fd 为什么默认从 3 开始,而不是从 0,1,2,因为其在内核中属于进程和文件的对应关系。再看结果为3的时候,感觉不奇怪吧接下来我们应该探索应用特征了。原创 2024-01-07 21:10:48 · 1253 阅读 · 0 评论 -
(20)Linux初始文件描述符
本章我们介绍 O_WRONLY, O_TRUNC, O_APPEND 和 O_RDONLY。之后我们开始讲解文件描述符。原创 2024-01-07 18:49:46 · 1429 阅读 · 0 评论 -
(19)Linux系统下的文件操作 && 文件系统接口
本篇主要讲解底层文件系统接口,详细介绍 open 接口和它的 flags 参数 (即系统传递标记位),重点讲解 O_RDWR, O_RDONLY, O_WRONLY, O_CREAT 和 O_APPEND 这些操作模式。原创 2024-01-06 23:37:16 · 994 阅读 · 0 评论 -
(18)Linux 实现简易版shell
做一个 "会创建,会终止,会等待,会程序替换" 的简易 shell。原创 2024-01-04 20:39:17 · 878 阅读 · 0 评论 -
(17)Linux的进程阻塞&&进程程序替换 && exec 函数簇
本章我们讲解它的 options 参数。在讲解之前我们需要理解进程阻塞,然后我们重点讲解二进程程序替换,这是本章的重点,然后介绍一个进程替换函数 execl,通过介绍这个函数来打开突破口,引入进程创建的知识点。最后,我们在学习进程创建的 exec 函数簇。原创 2024-01-04 16:01:55 · 979 阅读 · 0 评论 -
(16)Linux 进程等待 && wait/waitpid 的 status 参数
我们开始讲解进程等待,简单地讲解 wait 函数,然后我们主要讲解 waitpid 函数。由于 wait 只有一个参数 status,且 waitpid 有三个参数且其中一个也是 status,我们本章重点讲解这个 status 参数。原创 2024-01-03 17:33:59 · 1504 阅读 · 0 评论 -
(15)Linux 进程创建与终止&&函数fork&&slab 分派器
本章我们主要讲解进程的创建与终止,最后简单介绍一下 slab 分派器。原创 2024-01-02 22:45:58 · 996 阅读 · 0 评论 -
(14)Linux 地址空间的理解
每个进程都会创建一个 task_struct,每一个进程都会维护一个 mm_struct,自己有对应的区域,当我们的程序加载到内存时,程序有自己的加载到物理内存的物理地址,虚拟地址和物理地址建立映射关系,进程访问某个区域当中的地址时,经过页表找到对应的代码和数据。当父子有任何一个进程尝试修改对应变量时,有一个人想修改,就会触发写时拷贝,让他去拷贝新的物理内存,这只需要重新构建也表的映射关系,虚拟地址是不发生任何变化的,所以最终你看的结果是虚拟地址不变,而内容不同。如此一来,就可以简化进程本身的设计和实现。原创 2023-12-29 16:31:02 · 998 阅读 · 0 评论 -
(13)Linux 进程的优先级、进程的切换以及环境变量等
cpu资源分配的先后顺序就是指进程的优先级(priority)优先级代表一定能得到申请的资源只是现在要考虑得到资源的时间问题权限代表有没有资格得到申请的资源是要考虑能否的问题下面我们来详细介绍一下常见的环境变量,刚才我们就是用env指令去查看环境变量的:这个 HOSTNAME 就是表示 "对应这台主机的主机名"。我们同样也是可以通过echo指令带上 $ 去查看环境变量:再比如 SHELL,它可以告诉你你的 shell 在哪里,通常是/bin/bash。原创 2023-12-28 22:24:03 · 1047 阅读 · 0 评论 -
(12)Linux 常见的三种进程状态
进程状态在 Linux 内核中就是个整数,这个整数在进程的 task_stuct 中:一个进程通常有三种状态:就绪、运行、阻塞。Ready(就绪):进程已经准备好运行,但由于某种原因,操作系统选择不在此时运行。在就绪状态下,进程已经准备好运行,但由于某种原因,操作系统选择不在此时运行。Running(运行):进程正在处理器上运行在运行状态下,进程正在处理器上运行(这意味着它正在执行指令)。Blocked(阻塞):一个进程执行了某个操作(比如I/O),因此其他进程可以使用处理器。原创 2023-12-27 21:38:29 · 1154 阅读 · 0 评论 -
(7)Linux GDB以及gcc和g++
掌握上面单独介绍的 b、d、l、s、n、display、until、r、c、finish 其实就差不多了。还有一些 gdb 的指令我们上面没有介绍,这里做一个整合:list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。list/l 函数名:列出某个函数的源代码。r 或 run:运行程序。n 或 next:单条执行。s或step:进入函数调用。break(b) 行号:在某一行设置断点。break 函数名:在某个函数开头设置断点。原创 2023-12-18 18:33:49 · 1021 阅读 · 0 评论 -
(11)Linux 进程以及进程控制块PCB
进程是一个运行起来的程序。什么是运行起来的程序呢,跑或没跑?跑起来的程序,和没跑起来的程序?我们不放首先来思考一个问题:程序是文件吗?是!文件在磁盘。一开始讲的冯诺依曼,磁盘就是外设,和内存与 CPU 打交道,它们之间有数据交互。你的程序最后要被 CPU 运行,所以要运行起来必须先从磁盘外设加载到内存中。因此,当可执行文件被加载到内存中时,该程序就成为了一个进程。原创 2023-12-26 22:45:27 · 1099 阅读 · 0 评论 -
(10)Linux冯诺依曼结构&&操作系统的再次理解
本篇文章的内容大家要有一个基本的认识,然而虽然说操作系统是为用户提供服务的,但是它并不相信用户,因为群众中可能有坏人,就像银行一样,为你提供服务但是不信任你,于是在操作系统和用户之间还有系统调用窗口和shell外壳来阻止群众中的坏人直接获取Linux内核中的各种信息!系统调用说白了就是操作系统给用户提供了一个又一个的函数用户通过调用函数来获取操作系统内的各种数据,然而函数是操作系统内部写的,所以你只能看到有限部分的数据。原创 2023-12-25 20:51:03 · 1059 阅读 · 0 评论 -
(9)Linux Git的介绍以及缓冲区
git是一种代码管理器,写git程序的和写Linux系统的是同一个人,所以Linux可以直接和gitee或GitHub相关联!Gitee - 基于 Git 的代码托管和研发协作平台这里使用gitee举例子:先在远端创建仓库CndsLinux下的gitee创建仓库在创建好仓库后,复杂https的链接使用指令:git clone 链接即可将远端仓库克隆到本地接下来的操作和Windows上的三板斧相似:首先在本地仓库创建一份文件:注意:是在本地仓库里面创建的。原创 2023-12-19 17:30:03 · 1117 阅读 · 1 评论 -
(8)Linux Makefile | 依赖关系,依赖方法
PHONY是将clean指令修饰成了伪目标不知道你有没有观察到,我们的 makefile 有两个目标文件:我们在 make 的时候,默认只帮我们生成 makefile 中的 test.c 目标文件。为什么 make 的时候它总是执行第一个呢?makefile 在自顶而下进行形成目标文件时,它可以根据你的需求形成多个目标文件。我们这里有两个目标文件,一个是 test 一个是 clean,凭什么我 make 执行的是 test 而不是 clean?答案很简单,就凭我 test 是在前面写的!原创 2023-12-18 22:08:23 · 1766 阅读 · 0 评论 -
(4)Linux的Redirect 重定向以及打包与压缩
本章仍然是继续对。原创 2023-12-17 16:30:33 · 953 阅读 · 0 评论 -
(3)linux:man手册,复制,移动重命名
本篇将继续讲解。原创 2023-12-17 14:08:52 · 1187 阅读 · 0 评论 -
(5)shell命令以及Linux的权限
本章我们将重点讲解。原创 2023-12-17 22:05:03 · 1330 阅读 · 0 评论 -
(6)Linux的Vim编辑器以及软件包管理器yum
vim 是什么?它是一个编辑器!只能用来写代码,编译 vim 也做不到,有其他工具帮我们做。❓ 既然只能用来写代码,那我们为什么不用 nano 记事本呢,不都一样吗?当然不一样,vim 功能强大,是一个多模式的编辑器。因为过于强大,学习成本固然较高。我们之去学习它的一些常用的功能,一些边边角角的功能以后可以慢慢学习。你可以输入 vim 确认一下你有没有安装过 vim,若显示 bash: vim: command not found ,vim 的使用为什么要学 vim?原创 2023-12-18 15:56:28 · 1357 阅读 · 0 评论 -
(2)Linux 操作系统||基本创建与操作
在任何一本教材上,都可以看到操作系统的定义。这些定义虽然没什么问题,但是对于初学者来说理解起来还是会一脸懵的。我们将通过一些简单的例子,带着大家去理解 "什么是操作系统"。我们不妨先思考几个问题:❓ 思考:先有鸡还是先有蛋?是先有计算机(硬件)还是先有操作系统呢?💡 答案是先有计算机,换言之操作系统是在有了计算机后诞生的产物。❓ 思考:为什么要有 OS?( * 注:操作系统我们一般称为OS,本博客OS一般指的是操作系统)💡 因为单纯的硬件计算机操作起来效率特别低,难度特别高。原创 2023-12-16 22:27:16 · 902 阅读 · 0 评论 -
(1)Linux的 安装与用户的创建
本章正式开始Linux的学习如果关于Linux环境搭配有问题的朋友。原创 2023-12-14 20:50:14 · 886 阅读 · 0 评论