自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程终止与进程等待

子进程在退出的时候,要修改状态Z,再将子进程的退出信号和退出码写入到子进程的pcb的exit_code,exit_signal中,父进程再用*statusp去获取退出信息。子进程在修改全局变量时发生写时拷贝,父进程是读不到子进程它自己的全局变量的,进程具有独立性,父进程无法直接获取子进程的退出信息。b.子进程是要为父进程完成任务,子进程将任务完成的如何,需要进程等待的方式,获取子进程退出的信息-非阻塞等待,往往要进行重复调用,轮询+非阻塞进行进程等待 优点:等待的同时,可以做自己的事情。

2024-06-09 20:18:11 1676

原创 进程创建与进程退出

>那子进程PCB有了,可是子进程不是由磁盘来的,没有可执行程序,那么子进程如何运行呢,所以只能和父进程共享去全部的代码和数据,包括fork之前的代码。父进程可以知道哪个进程是它的子进程,以便后续进行通信、同步或者管理,返回0使得子进程能够判断创建进程成功。fork之后,会有两个不同的返回值,给子进程返回0,给父进程返回子进程的pid。只有父进程执行fork之前的代码,fork之后,父子进程都要执行后续的代码。2.为什么父进程返回子进程的pid,子进程返回0。进程的独立性,首先是表现在各自有各自的PCB。

2024-06-09 20:12:41 431

原创 Linux环境变量讲解

​​​ ​当你在命令行输入一个命令时,操作系统会在环境变量$PATH​​中定义的目录列表里查找对应的可执行文件。​​​​​重置下PATH为原始PATH里的内容即可tips:PATH只在内存中做修改,所以每次重启PATH都会重置。

2024-06-06 20:21:46 820

原创 命令行参数

所以我们在ls -a -l时大概会进行判断。可以支持各种指令级别的命令行操作。

2024-06-06 20:13:18 353

原创 **Linux 内核的调度队列与调度原理**

一个CPU维护了一个run_queue队列,一个run_queue维护两个queue队列,一个队列由一个指针指向,当活跃队列运行完后,通过交换指针的方式,调度后面插入的进程,实现公平的调度。1.当运行队列运行优先级为70的进程时,此时又有多个优先级为60的进程插入时,此时CPU是调度优先级为70的进程还是为60的进程?后来的进程不管优先级高还是低,都会到过期队列中,当活跃队列中的进程全部调度完,此时会交换指针,实现过期队列和活跃队列的互换。

2024-06-03 22:20:51 114

原创 进程的优先级

Linux支持动态优先级调整的,但是我们不能直接去修改PRI,pcb中还存在一个跟优先级相关的变量NI(NICE)值,我们可以通过修改NI值来改变进程优先级 nice命令。我们进程在运行的时候,是会使用CPU的寄存器的(例如函数返回值,程序记数器),进程所产生的数据会临时保存在寄存器中,各个进程在寄存器中形成的临时数据叫做这个。OS调度的时候,较为均衡的使得每一个进程都得到调度,容易导致优先级较低的进程,长时间得不到CPU资源,成了。进程切入时,会先恢复临时数据,再在被切换的代码的位置继续编译。

2024-06-03 22:17:40 322

原创 进程的状态

进程被CPU执行时,进程或多或少会有等待数据的时候,例如 scanf,当数据没有准备就绪时,我们的进程就无法向后执行,此时PCB就需要被链入到设备(例如是需要设备的数据)的等待队列,此时PCB没有在运行队列而是在设备的等待队列中,此时就叫做阻塞状态。D(disk sleep):专门对磁盘做设计的,深度睡眠,当进程向磁盘写入重要数据时,此时内存资源严重不足,OS不会将此状态的进程杀掉。X(dead):OS或父进程读取完Z状态的进程退出信息完后,进程就会处于死亡状态,PCB才会被释放。在运行进程时加个&即可。

2024-05-30 21:48:50 293

原创 进程的内容

进程之间不会相互影响!因为代码是只读的,不会因为父进程被关闭而不进行代码共享。启动一个进程,本质上就是系统中多了一个进程,OS要填充管理进程的PCB的属性,申请内存,保存可执行程序和PCB。proc是一个动态的目录结构,存放着所有存在的进程,目录的名称,进程是以pid命名的。启动进程,本质上就是创建进程,一定是由父进程创建的。是bash 我们命令行启动的进程,都是子进程。进程的独立性,首先是表现在各自有各自的PCB。创建进程时,进程的默认路径就是工作目录。每一个进程,都要有自己的工作目录。

2024-05-29 18:36:02 231

原创 Linux进程

5.Linux中,进程的PCB具体是struct task_struct()a.程序是在磁盘上的,进程是已经被操作系统加载到内存中。1.操作系统内管理着很多进程,一定是对进程先描述再组织。3.对进程的管理,就是对PCB管理,对链表的增删查改。PCB中有很多类似于dlist的双链表,例如运行队列。2.描述进程的结构体对象就叫pcb,也叫进程块。4.PCB是内核数据结构,只存在于内存中。可执行程序+内核数据结构(PCB)

2024-05-27 22:42:07 172

原创 体系结构--

b.程序在运行之前,必须要加载到内存,程序=代码加数据,最总都要由内存交给CPU来执行处理。a.CPU与内存打交道,内存是一个硬件极大的缓存,操作系统会将外设的数据搬运到内存。tips2:CPU这个设备处理数据的速度是非常快的,然后是内存,再是外设(磁盘)类似:校长(依靠数据做决策)->辅导员(做执行)->学生(接受管理指令)tips3:以CPU为中心,距离CPU越近,存储效率越高,造价越高。基于冯诺依曼体系结构的本质就是用极少的钱,做出了效率不错的计算机。管理的本质不是管理人,而是管理数据。

2024-05-26 19:03:37 313

原创 Linux调试 GDB

b.(gdb) l(list) + n 从第几行开始查看 回车显示下一部分。(gdb)n(next) 单过程(不进入函数)F10。(gdb)s(step) 单语句(进入函数) F11。(gdb)r (run) 执行程序或跳到下一断点。(gdb)disable+断点编号 禁用断点。(gdb)enable+断点编号 启用断点。(gdb)b(block)+n 一个断点。(gdb)info+b 查看断点信息。(gdb)d+断点编号 删除断点。(gdb)c 运行到下一个断点。(gdb)p+变量 查看变量。

2024-05-26 16:10:48 294

原创 Git Linux

d.编程实现版本控制器自动化,将我们的内容按照变化来管理的软件,可以提供任何一个你存储的版本。github和gitee都是基于git软件搭建的网站。git commit -m “你对代码的修改描述”a.git是一个软件,即是客户端也是服务器。git status 查看工作区的状态。验证身份(命令在获取仓库地址的地方)将目标文件拷贝到你创建的仓库目录下。git log 查看提交记录。b.git是记录变化的软件。c.分布式软件,去中心化。输入gitee账号 密码。新建仓库并复制仓库地址。点击克隆获取仓库地址。

2024-05-23 23:56:25 259 1

原创 makefile自动化构建代码

makefile自动化构建代码make/makefile:基础make:是一个命令makefile:当前目录下存在的一个具有特定格式的文本文件。

2024-05-22 22:01:11 460 1

原创 编译代码 gcc/g++ gcc(C) C++ g++

李四就相当于软件,而高三学长就相当于编译器中的连接器,学校相当于内存,运行代码,我们的代码被加载到内存之中,去网吧上网,网吧就相当于动态库,软件就要去链接动态库才能生成可执行代码。C源文件->预处理(宏,条件编译,注释,头文件展开)->编译(c语言翻译成汇编)->汇编(变成二进制文件)->链接(形成可执行文件)->可执行程序。静态库 是c/c++或者其他第三方提供的所有方法的集合,被所有程序以拷贝的方法,将所需的代码,拷贝到自己的可执行程序中 静态链接。但是此时网吧关了,李四还想要去上网,他就给他爸爸说。

2024-05-21 21:10:58 391

原创 Linux开发基本工具

e:多文件编辑操作:底行模式输入vs 加 文件名可以分屏操作,无论你打开多少个文件,光标只有一个,光标在哪,表示你在编辑哪个文件 ctrl​​+ww​​进行切换。d. 批量化注释 ctrl​​+v进入视图模式(visual block)j/k上下选中区域 shift​​+i ​​ 输入// 再加esc​​注释多行。b.vim是一款多模式的编辑器:例如命令模式(esc​​进入),编辑模式,底行模式,替换模式,视图模式。2.rpm包安装,安装的本质就是把可执行程序拷贝到指定路径下即可(最基本的理解)

2024-05-20 23:02:18 270 1

原创 Linux文件权限

权限受制于人-角色和事物属性,角色分为拥有者,所属组,其他,事物属性分为 r w x,​​​​​​编辑​。

2024-05-19 17:08:24 298 1

原创 Linux 基本使用

以下这些指令本质就是可执行程序(c c++)写的。

2024-05-18 22:10:03 234

原创 开辟动态内存的错误

开辟动态空间时一些经典的错误

2023-02-01 18:07:23 66

原创 c语言初阶学者的扫雷(函数,递归,循环,数组)基础知识的综合运用。

c语言初阶知识的利用,提供给初学者扫雷的思路与技巧,每个环节都很细心的讲解

2022-11-26 15:24:45 297 2

原创 C语言如何用数组,函数,循环写一个井字棋

用简单逻辑与基础知识实现井字棋

2022-11-15 01:10:43 880

原创 质数讲解以及基础c语言实现的歌德巴赫猜想

给一些刚入门的学者一些小小的启发

2022-11-10 20:52:51 247

原创 关于一个c语言入门感言

我的自我介绍及目标

2022-10-17 20:00:32 492

空空如也

空空如也

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

TA关注的人

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