![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
uc学习笔记
文章平均质量分 74
c/c++的学习笔记
Tomorrow'sThinker
这个作者很懒,什么都没留下…
展开
-
线程基础与生产者消费者模型实践
线程是操作系统调度的最小单位,是进程内的一个执行路径。每个线程拥有独立的栈空间、程序计数器等资源,但共享所属进程的地址空间、全局变量等资源。原创 2024-05-21 11:16:54 · 403 阅读 · 0 评论 -
信号:进程间通信与异步事件处理的关键机制
信号作为一种强大的异步事件处理机制,在Unix/Linux系统编程中扮演着重要角色。通过合理设置信号处理方式,开发者可以有效地响应系统事件、实现进程间通信及管理进程生命周期。然而,信号处理也需谨慎,特别是要关注重入问题和信号处理函数的安全性,以避免潜在的并发问题。原创 2024-05-06 15:08:09 · 306 阅读 · 0 评论 -
进程管理与控制:从终止到回收的深入解析
通过深入了解进程的终止、回收机制以及waitwaitpidexecsystem和vfork的使用,我们能够更有效地管理和控制进程,确保系统的高效稳定运行。掌握这些核心概念和技术,对于系统编程、资源管理乃至软件开发的整体架构设计都有着不可忽视的作用。原创 2024-04-30 14:56:38 · 915 阅读 · 0 评论 -
深入理解Unix/Linux系统中的进程概念及其管理
在Unix/Linux操作系统中,进程是程序执行时的一个具体实例,每个进程都有其独特的生命周期和特性。本文将探讨进程的基本概念,如父子进程关系、孤儿进程和僵尸进程,并重点关注进程创建的关键API——fork()函数。进程概览:进程是操作系统进行资源分配和调度的基本单位,每个进程都拥有一个全局唯一的进程标识符(Process ID,简称PID)。当一个进程结束并被系统回收后,其PID可被重新分配给新的进程,遵循内核的延迟重用算法以避免PID冲突。父子进程关系:在Unix/Linux系统中原创 2024-04-23 16:48:03 · 601 阅读 · 0 评论 -
揭秘文件系统:符号链接、权限、内核结构及系统I/O
与硬链接相比,符号链接解析时需要更大的系统开销,因为它需要解析两次文件:首先是符号链接文件本身,然后是链接的目标文件。值为文件表项的指针,通过文件描述符,操作系统可以找到对应的文件表项,进而通过v节点指针定位到v节点,然后通过v节点中的i节点找到数据块编号,从而访问到文件的实际内容。例如,如果umask为0002,那么赋予0777权限的文件最终权限会变成0775,即取消了除文件所有者之外的其他用户对该文件的写权限。,它会返回一个新的文件描述符,新描述符与原来的描述符指向同一个文件表项,但其值为。原创 2024-04-19 15:45:11 · 524 阅读 · 0 评论 -
内存管理:深入探索程序运行背后的关键机制
内存管理作为计算机科学的核心领域之一,直接影响着程序性能、安全性以及系统的整体稳定性。在本文中,我们将揭开内存管理的神秘面纱,深入剖析内存分配、回收以及相关的技术策略,同时探讨内存泄漏、碎片化等问题及其解决方案。malloccallocreallocfreenewdelete动态分配允许程序在运行时根据需要获取内存,并在完成任务后通过delete或delete[]释放。原创 2024-04-17 14:01:44 · 1309 阅读 · 0 评论 -
揭秘磁盘驱动器文件系统的内部机制
然后,根据i节点编号查找i节点映射表,找到i节点的实际存储位置,从中获取数据块编号。超级块存储了文件系统的总体信息,如同一本详细的账簿,记录了文件系统的格式、大小,以及i节点和数据块的总量、使用量和剩余量等关键数据。每个文件或目录在磁盘上都有一个与之对应的唯一i节点,i节点具有唯一的编号——i节点号。综上所述,磁盘驱动器上的文件系统凭借其严谨的结构设计,实现了对海量数据的高效管理和访问,成为现代操作系统不可或缺的核心组件。文件名和i节点之间的联系存储在目录文件的i节点数据块中,形成了所谓的硬链接。原创 2024-04-17 16:34:46 · 323 阅读 · 0 评论 -
段错误:程序运行时的致命打击
在计算机编程的世界里,“段错误”(Segmentation Fault)是一个让许多开发者闻之色变的问题。它是一种特定类型的运行时错误,通常出现在程序试图访问其无权访问或不存在的内存区域时。本文将深入探讨段错误的概念、产生原因,并通过实例进行详细解析。原创 2024-04-15 15:45:05 · 880 阅读 · 0 评论 -
内存壁垒与段错误:守护程序运行的“规则”
内存壁垒(Memory Barrier),又称内存栅栏或内存屏障,是一种同步原语,用于确保特定内存操作的执行顺序,以及对内存状态变化的可见性。在多线程、多处理器系统中,由于缓存一致性协议的存在,可能导致内存操作的乱序执行或更新延迟,进而引发数据竞争或同步问题。内存壁垒就是用来解决这些问题的工具,强制实施特定的内存访问顺序和数据同步点。在现代操作系统中,每个进程都拥有自己独立的虚拟地址空间,即使不同进程内的虚拟地址看起来相同,但实际上它们映射到的物理地址是不相同的。举例来说,两个进程均声明了一个全局变量。原创 2024-04-15 15:14:48 · 366 阅读 · 0 评论 -
深入解析:虚拟内存——理解现代计算机内存管理的关键概念
虚拟内存与内存管理,这两个概念共同构成了程序执行背后的故事。理解它们,就如同掌握了剧本创作、舞台调度与后勤保障的艺术。在编程的世界里,原创 2024-04-11 16:46:04 · 963 阅读 · 0 评论 -
Linux中的错误处理艺术:理解错误编号与头文件引用
在Linux环境下开发程序时,准确且有效地处理错误是至关重要的。操作系统通过错误编号(Error Number)向程序反馈各种异常情况,帮助开发者定位和修复问题。本文将深入探讨Linux错误处理机制,并介绍如何查找特定错误编号对应的含义及其所在的头文件。原创 2024-04-10 14:45:00 · 376 阅读 · 0 评论 -
静态库与动态库
静态库的本质时将多个目标文件打包成一个文件,而链接静态库就是将库中被调用的代码复制到调用模块中,拓展名为.a。按照上述命令就可以制作成libtest.a静态库。原创 2024-04-09 19:56:52 · 1063 阅读 · 1 评论 -
liunx环境变量学习总结
在操作系统中,环境变量是一种特殊的变量,它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量,特别是对重要环境变量的管理和定制,以及与环境变量相关的函数使用。要创建一个自定义环境变量,您可以在终端中输入以下格式的命令:然而,以这种方式设置的环境变量仅在当前终端会话中有效,且不会被子进程继承。若希望环境变量能在当前终端及其所有子进程中生效,并能在环境变量列表中查看到,应使用 命令: 删除环境变量要删除已存在的环境变量,可使用 命令:执行此命令后,指定的环原创 2024-04-09 14:15:00 · 1511 阅读 · 0 评论