Linux
文章平均质量分 89
S hh
这个作者很懒,什么都没留下…
展开
-
【Linux】信号
信号的有OS发出,上面的5种产生情况,都是操作心态发出信号的触发条件;(1)上面所有信号的产生都会需要操作心态的参与,为什么?因为操作系统是进程的管理者,只要操作系统能管理进程。(2)OS是怎么向进程发送信号的?普通信号有31个,剩余的是实时信号,进程PCB中有数据结构,位图(只需要一个整个即可),来记录当前进程是否收到对应位置的信号,OS向进程发送信号时,将对应位置置1即可;signo>=1;cout原创 2024-10-19 18:16:10 · 833 阅读 · 0 评论 -
【Linux】system V进程间通信--共享内存,消息队列,信号量
通信的方式有三种:聚焦本地通信的,实现跨主机之间的通信,以及基于文件系统的;下面是System V的通信方式:system V IPC提供的通信方式有三种: 共享内存、消息队列、信号量;并且生命周期是随OS的,而不是随进程的,这是所有System V进程间通信的共性;原创 2024-10-16 22:15:01 · 1036 阅读 · 0 评论 -
【Linux】进程池
如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。也就是说,进池中进程的数量是固定的,那么同一时间最多有固定数量的进程在运行;这样不会增加操作系统的调度难度,还节省了开关进程的时间,也一定程度上能够实现并发效果。看下图,父进程和子进程之间可以通过管道来交互;如果管道中没有数据,则worker进程就。原创 2024-10-15 20:10:50 · 361 阅读 · 0 评论 -
【Linux】进程间通信---匿名管道、命名管道(超详解)
我们先来回答下面的几个问题再来正式的进入管道的学习;进程是需要某种协同的,所有如何协同的前提条件是通信-->数据是有类别的-->通知就绪的、单纯的传递数据的、控制相关信息的...a、进程间通信,成本可能会比较高b、进程间通信前提:先让不同进程看到同一份(操作系统)资源(“一份内存”)1、system V2、Posix我们重点讨论system V方式:有三种管道:1、命名管道2、匿名管道。原创 2024-10-14 17:37:13 · 929 阅读 · 0 评论 -
【Linux】文件系统和软硬链接
在学习文件系统前我们先来了解一下磁盘。在我们之前的学习中,我们对于文件的操作,都是在文件已经被打开的前提下进行的;被打开的文件 -->找到这个文件 -->磁盘中先找到 -->文件路径+文件名 -->执行文件操作那你们有没有一个疑问?没有被打开的文件是被放到磁盘里的!!磁盘中有磁盘文件,那这个想要知道这个问题的答案,我们先来了解一下磁盘;原创 2024-10-09 17:43:20 · 1144 阅读 · 0 评论 -
【Linux】自主shell编写
如果学习了常见的Linux命令,exec*函数,环境变量,那你就可以尝试一下写一个简单的shell;下面跟着我的步骤来吧!!🤩🤩。原创 2024-10-07 20:26:07 · 580 阅读 · 0 评论 -
【Linux 】文件描述符fd、重定向、缓冲区(超详解)
openman 2 openpathname:要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成;常见的参数有:O_RDONLY: 只读打开O_WRONLY: 只写打开O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限O_APPEND: 追加写mode: mode 只有 当 在 flags 中使用 O_CREAT 时才有效 , 否则被忽略.返回值成功:新打开的文件描述符。原创 2024-10-06 20:57:01 · 1192 阅读 · 0 评论 -
【Linux】进程替换、命令行参数及环境变量(超详解)
很简单,父进程中exec*函数后的代码无法执行是因为exec*函数的替换,把后续代码给替代了,找不到后续代码;怎么让它可以找到-------->fork创建子进程,在子进程中执行exec*函数,这就是用的我们之前提到的写实拷贝(让子进程自己去替换,父进程的代码和数据不受影响);一开始,子进程完全的父进程的拷贝(页表指向是红色箭头),后面由于exec*函数替换,因为替换的不仅仅是数据,连代码也替换了,这时OS就是进行写时拷贝,把代码和数据都复制了一份(绿色和蓝色箭头的指向);父进程代码和数据仍然存在;原创 2024-10-03 17:41:13 · 1128 阅读 · 0 评论 -
【Linux】进程控制(进程终止,进程等待)
如果在代码中分别加入exit(1)和_exit(1),我们会发现加exit也就是上面运行结果的第一种,会显示运行结果,但是加_exit不会显示除了hello;WNOHANG: 若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待。如果是代码出现了异常,正如我们使用vs的时候,运行崩溃-------也就对应了OS发现了进程做了不该做的事情,OS杀掉该进程;进程在退出时,如果父进程不管不顾的话,退出进程会出现。:查看进程的退出码,通过退出码的数值来对应我们的进程是否运行成功;原创 2024-10-02 20:26:38 · 672 阅读 · 0 评论 -
【Linux】进程地址空间
运行结果:根据之前的学习我们已经知道,所以在我们可以理解父子进程中val的值可以不一样,但是我们发现的,这是为什么?从上面的运行结果来看,我们得到的val的地址,因为同一时间内一个物理地址中只能存储一个进程的数据,不同进程的不同数据不可能同时存在于同一个物理内存中;实际上OS会给每个进程创建一个独立的虚拟地址空间,通过页表将虚拟地址空间与物理地址一一对应;用户只能得到虚拟地址空间中的,当我们修改虚拟地址中的数据时,操作系统会先通过页表找到对应的物理内存,然后修改物理内存中的数据。所以。原创 2024-09-30 15:48:44 · 590 阅读 · 0 评论 -
【Linux】进程的标识符、状态、优先级(超详解)
但是在等待期间,OS内存严重不足(OS是由权限来杀掉进程来释放空间的),这时如果OS看到这个等待的进程,把他杀掉,那么就会造成一个严重的问题:磁盘在读取数据时出来问题,这时它回去找调度它的进程,但是这时候发现进程没有了?已经运行完毕,但是需要维持自己的退出信息,在自己进程的task_struct中会记录自己的退出信息,让父进程来读取,如果父进程没有读取,则该进程会一直存在。fork()---->多个进程----->父子关系------>一般代码会共享,但是数据是各自私有一份的。返回值大于0,则为父进程;原创 2024-09-26 15:01:57 · 723 阅读 · 0 评论 -
【Linux】Linux项目自动化构建工具--make和makefile
简单解释一下:make:一条命令;makefile/Makefile:一个文件;.PHONY:让目标文件对应的方法,总是被执行! 所以.PHONY可以让依赖方法忽略时间对比;一个简单的Makefile文件就编写完成了;解释一下Makefile文件中的代码:我们要做成一件事情,都必须要有依赖关系+依赖方法;Makefile本质是依赖关系和依赖方法的集合;原创 2024-09-23 15:39:31 · 476 阅读 · 0 评论 -
【Linux】yum、vim、gcc使用(超详细)
Linux中常见的软件安装方式 --------- 下载&&安装a、yum/aptb、rpm安装包安装c、源码安装。因为我们的vim操作界面过于简单,编写程序时没有基本的首行缩进,自动补齐等Windows编译器都有的功能,使用起来及其不方便;可以在家目录下面的.vimrc文件中配置原创 2024-09-19 23:19:13 · 1174 阅读 · 0 评论 -
【Linux】权限理解(超详细)
Linux下有两种用户:超级用户(root) 和普通用户;对于root拥有者的文件,在我们当前用户下可以查看,不能修改,但是可以删除,为什么?因为这个文件所处的文件夹的权限本身就属于我们,有w权限,即可以删除这里就要引出一个概念:粘滞位 (chmod o+t file)当一个目录被设置为粘滞位,则该目录只能由:1、超级管理员删除2、该目录的所有者删除3、该文件夹的所有者删除;原创 2024-09-18 22:10:29 · 987 阅读 · 0 评论