- Linux 用户可以拥有一个称为“循环设备”的虚拟块设备,它将普通文件映射到虚拟块,使其成为与隔离进程相关的任务的理想选择。利用循环设备的最佳示例是 snap 包,这是一个沙盒软件解决方案,包含所有必要的依赖项并作为loop设备安装:如果您有兴趣创建自己的虚拟块设备,本文将一步步教你。 如何创建循环设备为了便于理解,我将整个过程以简单步骤的形式决定,这样更容易掌握。 1.创建所需大小的文件在... Linux 用户可以拥有一个称为“循环设备”的虚拟块设备,它将普通文件映射到虚拟块,使其成为与隔离进程相关的任务的理想选择。利用循环设备的最佳示例是 snap 包,这是一个沙盒软件解决方案,包含所有必要的依赖项并作为loop设备安装:如果您有兴趣创建自己的虚拟块设备,本文将一步步教你。 如何创建循环设备为了便于理解,我将整个过程以简单步骤的形式决定,这样更容易掌握。 1.创建所需大小的文件在...
- 06. 信号量 6.1 信号量概述信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,代表公共资源的个数, 它被用来控制对公共资源的访问。比如说我有四台打印机,允许四个线程跑,前面都无法完成,所以就有了信号量;编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信... 06. 信号量 6.1 信号量概述信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,代表公共资源的个数, 它被用来控制对公共资源的访问。比如说我有四台打印机,允许四个线程跑,前面都无法完成,所以就有了信号量;编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信...
- 05. 条件变量 5.1 条件变量概述与互斥锁不同,条件变量是用来等待而不是用来上锁的,条件变量本身不是锁!条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量的两个动作:条件不满, 阻塞线程当条件满足, 通知阻塞的线程开始工作条件变量的类型: pthread_cond_t。 5.2 pthread_cond_init函数#include <pthr... 05. 条件变量 5.1 条件变量概述与互斥锁不同,条件变量是用来等待而不是用来上锁的,条件变量本身不是锁!条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量的两个动作:条件不满, 阻塞线程当条件满足, 通知阻塞的线程开始工作条件变量的类型: pthread_cond_t。 5.2 pthread_cond_init函数#include <pthr...
- 3.9 死锁(DeadLock)1)什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的==一种阻塞的现象==,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。2)死锁引起的原因竞争不可抢占资源引起死锁也就是我们说的第一种情况,而这都在等待对方占有的不可抢占的资源。竞争可消耗资源引起死锁有... 3.9 死锁(DeadLock)1)什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的==一种阻塞的现象==,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。2)死锁引起的原因竞争不可抢占资源引起死锁也就是我们说的第一种情况,而这都在等待对方占有的不可抢占的资源。竞争可消耗资源引起死锁有...
- 信号处理函数:void(*sa_sigaction)(int signum, siginfo_t *info, void *context);参数说明: signum:信号的编号。 info:记录信号发送进程信息的结构体。 context:可以赋给指向 ucontext_t 类型的一个对象的指针,以引用在传递信号时被中断的接收进程或线程的上下文。示例程序://信号处理函数v... 信号处理函数:void(*sa_sigaction)(int signum, siginfo_t *info, void *context);参数说明: signum:信号的编号。 info:记录信号发送进程信息的结构体。 context:可以赋给指向 ucontext_t 类型的一个对象的指针,以引用在传递信号时被中断的接收进程或线程的上下文。示例程序://信号处理函数v...
- 08. 信号集 8.1 信号集概述在PCB中有两个非常重要的信号集。一个称之为“阻塞信号集”,另一个称之为“未决信号集”。这两个信号集都是内核使用位图机制来实现的。但操作系统不允许我们直接对其进行位操作。而需自定义另外一个集合,借助信号集操作函数来对PCB中的这两个信号集进行修改。 8.2 自定义信号集函数为了方便对多个信号进行处理,一个用户进程常常需要对多个信号做出处理,在 Linux ... 08. 信号集 8.1 信号集概述在PCB中有两个非常重要的信号集。一个称之为“阻塞信号集”,另一个称之为“未决信号集”。这两个信号集都是内核使用位图机制来实现的。但操作系统不允许我们直接对其进行位操作。而需自定义另外一个集合,借助信号集操作函数来对PCB中的这两个信号集进行修改。 8.2 自定义信号集函数为了方便对多个信号进行处理,一个用户进程常常需要对多个信号做出处理,在 Linux ...
- 07. 信号产生函数 7.1 kill函数#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);功能:给指定进程发送指定信号(不一定杀死)参数: pid : 取值有 4 种情况 : pid > 0: 将信号传送给进程 ID 为pid的进程。 pid = 0 : 将信号... 07. 信号产生函数 7.1 kill函数#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);功能:给指定进程发送指定信号(不一定杀死)参数: pid : 取值有 4 种情况 : pid > 0: 将信号传送给进程 ID 为pid的进程。 pid = 0 : 将信号...
- @[toc] 01. 学习目标了解信号中的基本概念熟练使用信号相关的函数了解内核中的阻塞信号集和未决信号集作用参考文档使用信号集操作相关函数熟练使用信号捕捉函数signal熟练使用信号捕捉函数sigaction熟练掌握使用信号完成子进程的回收 02. 信号的概述信号的概念信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 ... @[toc] 01. 学习目标了解信号中的基本概念熟练使用信号相关的函数了解内核中的阻塞信号集和未决信号集作用参考文档使用信号集操作相关函数熟练使用信号捕捉函数signal熟练使用信号捕捉函数sigaction熟练掌握使用信号完成子进程的回收 02. 信号的概述信号的概念信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 ...
- 08. 线程属性(了解) 8.1 概述Linux下线程的属性是可以根据实际项目需要,进行设置,之前我们讨论的线程都是采用线程的默认属性,默认属性已经可以解决绝大多数开发时遇到的问题。如我们对程序的性能提出更高的要求那么需要设置线程属性,比如可以通过设置线程栈的大小来降低内存的使用,增加最大线程个数。typedef struct{ int etachstate;... 08. 线程属性(了解) 8.1 概述Linux下线程的属性是可以根据实际项目需要,进行设置,之前我们讨论的线程都是采用线程的默认属性,默认属性已经可以解决绝大多数开发时遇到的问题。如我们对程序的性能提出更高的要求那么需要设置线程属性,比如可以通过设置线程栈的大小来降低内存的使用,增加最大线程个数。typedef struct{ int etachstate;...
- 5.5案例:定时创建文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<sys/stat.h>#include<time.h>#include<unistd.h>#define SIZE 32//守护进程模型int main(){ pid_t pid = -1; ... 5.5案例:定时创建文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<sys/stat.h>#include<time.h>#include<unistd.h>#define SIZE 32//守护进程模型int main(){ pid_t pid = -1; ...
- @[toc] 01. 学习目标了解终端的概念了解进程组的概念了解会话概念熟练掌握守护进程创建了解线程优缺点和基本概念熟练掌握线程基本操作函数了解线程属性的设置说出守护进程的特点独立完成守护进程的创建独立实现多个线程的创建独立实现线程的退出和资源回收独立实现线程的取消(杀死线程)使用线程属性设置线程分离 02. 终端的概念(了解)在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,... @[toc] 01. 学习目标了解终端的概念了解进程组的概念了解会话概念熟练掌握守护进程创建了解线程优缺点和基本概念熟练掌握线程基本操作函数了解线程属性的设置说出守护进程的特点独立完成守护进程的创建独立实现多个线程的创建独立实现线程的退出和资源回收独立实现线程的取消(杀死线程)使用线程属性设置线程分离 02. 终端的概念(了解)在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,...
- @[toc] 01. 学习目标说出并理解管道的读写行为熟练使用pipe进行父子进程间通信熟练使用fifo进行无血缘关系的进程间通信熟练掌握mmap函数的使用使用mmap进行有血缘关系的进程间通信使用mmap进行无血缘关系的进程间通信 02. 进程间通讯概念进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程... @[toc] 01. 学习目标说出并理解管道的读写行为熟练使用pipe进行父子进程间通信熟练使用fifo进行无血缘关系的进程间通信熟练掌握mmap函数的使用使用mmap进行有血缘关系的进程间通信使用mmap进行无血缘关系的进程间通信 02. 进程间通讯概念进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程...
- 16. 孤儿进程父进程运行结束,但子进程还在运行(未运行结束)的子进程就称为孤儿进程(Orphan Process)。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。 ... 16. 孤儿进程父进程运行结束,但子进程还在运行(未运行结束)的子进程就称为孤儿进程(Orphan Process)。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。 ...
- 12. 父子进程地址空间父子进程各自的地址空间是独立的int a = 10; // 全局变量int main(){ int b = 20; //局部变量 pid_t pid; pid = fork(); if (pid < 0) { // 没有创建成功 perror("fork"); } if (0 == pid) ... 12. 父子进程地址空间父子进程各自的地址空间是独立的int a = 10; // 全局变量int main(){ int b = 20; //局部变量 pid_t pid; pid = fork(); if (pid < 0) { // 没有创建成功 perror("fork"); } if (0 == pid) ...
- 09. 进程的创建(重点)系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。#include <sys/types.h>#include <unistd.h>pid_t fork(void);功能: 用于从一个已存在的进程中创建一个新进程,新进程称为子进程,原进程称为父进程。参数: 无返回值: 成功:子进程中返回 0,父进程中返... 09. 进程的创建(重点)系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。#include <sys/types.h>#include <unistd.h>pid_t fork(void);功能: 用于从一个已存在的进程中创建一个新进程,新进程称为子进程,原进程称为父进程。参数: 无返回值: 成功:子进程中返回 0,父进程中返...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签