Linux
文章平均质量分 88
万我.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CentOS7安装MySQL5.7服务
【CentOS7.6切换国内yum源及MySQL安装指南】本文介绍了CentOS7.6最小安装版本切换国内yum源的有效方法,并详细记录了MySQL5.7的安装过程。关键步骤包括:1)确保源可用后下载MySQL官方rpm包;2)解决安装时的GPG密钥报错问题(需导入MySQL的RPM-GPG密钥);3)安装MySQL社区版服务器;4)可选安装MySQL开发头文件。文章提供了完整的命令序列,特别针对安装过程中可能出现的密钥验证错误给出了解决方案。原创 2025-09-23 20:36:57 · 295 阅读 · 0 评论 -
Linux 详谈线程同步与互斥
本文主要介绍了线程互斥与同步的实现机制。在互斥方面,详细讲解了临界资源、临界区、互斥量等概念,并通过售票系统案例演示了不加锁导致的数据竞争问题,提出使用mutex互斥量进行保护。在同步方面,介绍了条件变量的使用场景,包括初始化、等待和唤醒等操作,并通过示例展示了pthread_cond_wait和pthread_cond_signal/broadcast的使用方法。文章还展示了如何采用RAII风格封装互斥锁,以提高代码的安全性和易用性。这些机制能有效解决多线程环境下的数据竞争和时序问题。原创 2025-08-30 20:46:12 · 849 阅读 · 0 评论 -
Linux 详谈线程概念与控制(二)
Linux进程与线程控制摘要 Linux中进程是资源分配的基本单位,线程是调度的基本单位。线程共享进程的地址空间(代码段、数据段等)和资源(文件描述符、信号处理方式等),但也拥有自己独立的线程ID、寄存器组和栈空间。POSIX线程库提供了线程控制函数,包括: pthread_create()创建线程 pthread_exit()终止线程 pthread_cancel()取消线程 pthread_join()等待线程结束并获取返回值 pthread_detach()分离线程自动释放资源原创 2025-08-29 21:45:37 · 1289 阅读 · 0 评论 -
Linux 详谈线程概念与控制(一)
本文主要介绍了线程和分页式存储管理的核心概念。线程作为进程内部的执行流,具有轻量化、切换开销小等优点,但也存在编程复杂、健壮性降低等缺点。分页式存储管理通过虚拟地址和页表机制,将连续虚拟内存映射到不连续的物理内存页,解决了内存碎片问题。文章详细阐述了页表结构、地址转换流程以及缺页异常处理机制。两级页表的设计虽然减少了内存占用,但增加了查询开销,因此引入了TLB快表来提升效率。线程适用于提高CPU密集型和IO密集型程序的性能,但异常会导致整个进程终止。原创 2025-08-29 21:35:28 · 823 阅读 · 0 评论 -
Linux 详谈Linux进程信号(二)
本文主要探讨操作系统中的信号处理机制和中断系统。信号捕捉部分详细解释了用户自定义信号处理函数的执行流程,包括内核态与用户态的切换过程,并介绍了sigaction函数的使用方法。中断系统部分阐述了硬件中断、时钟中断和软中断的工作原理,揭示了操作系统通过中断驱动的本质,分析了系统调用通过软中断实现的机制。文章还讨论了可重入函数的概念及条件,并通过实例展示了volatile关键字在防止编译器优化、确保内存可见性方面的重要作用。整体上,文章从底层角度剖析了操作系统处理信号和中断的核心机制,帮助理解系统调用的实现原理原创 2025-08-28 11:02:02 · 927 阅读 · 0 评论 -
Linux 详谈Linux进程信号(一)
本文主要介绍了Linux系统中的信号处理机制。信号是进程间异步事件通知的一种方式,属于软中断。文章通过快递取件的日常例子类比信号处理过程,解释了信号识别、保存和处理的三个阶段,并介绍了三种信号处理方式:默认动作、忽略和自定义捕捉。通过代码示例演示了如何产生信号(键盘中断、系统命令、函数调用)和处理信号,包括使用signal()函数设置信号处理程序,以及信号的默认、忽略和自定义处理方式。原创 2025-08-28 10:46:52 · 915 阅读 · 0 评论 -
Linux 详谈进程间通信(二)
本文介绍了两种进程间通信(IPC)方式:命名管道和共享内存。命名管道通过mkfifo创建,允许无关进程通信,其打开行为受O_NONBLOCK影响,并提供了文件拷贝和服务端-客户端通信的实现示例。共享内存是最高效的IPC形式,通过shmget创建、shmat/shmat控制连接,但缺乏同步机制,需配合管道实现访问控制。文中详细说明了相关系统调用,并给出两个完整应用案例:基础通信版本和带同步控制的改进版本,展示了如何结合管道实现共享内存的互斥访问。原创 2025-08-27 16:06:31 · 1010 阅读 · 0 评论 -
Linux 详谈进程间通信(一)
本文介绍了进程间通信(IPC)的概念和实现方式,重点讲解了管道通信机制。主要内容包括:进程间通信的目的(数据传输、资源共享、通知事件、进程控制)、发展历程及分类;管道的基本概念和原理,详细分析了匿名管道的创建、使用和实现机制;通过实例代码演示了管道读写操作,包括父子进程间通信;展示了使用管道创建进程池处理任务的完整实现方案;总结了管道通信的特点和限制(仅适用于亲缘进程、半双工、流式服务等)。文章还深入探讨了管道在内核层面的实现本质,以及在不同场景下的读写规则和行为表现。原创 2025-08-27 15:42:00 · 908 阅读 · 0 评论 -
Linux 详谈库制作与原理
本文介绍了程序开发中的库(静态库和动态库)及其编译链接原理。静态库(.a/.lib)在编译时被链接到可执行文件中,而动态库(.so/.dll)在运行时加载。文章详细说明了如何生成和使用这两种库,包括Makefile编写、路径设置和环境变量配置等。同时,文章深入探讨了ELF文件格式,包括可重定位文件、可执行文件和共享目标文件的结构,以及section和segment的区别与合并原则。通过分析ELF头、程序头表和节头表,解释了链接视图和执行视图的不同作用,帮助读者理解程序从编译、链接到加载运行的全过程。原创 2025-08-26 16:00:57 · 1220 阅读 · 0 评论 -
Linux 详谈软硬链接
本文介绍了Linux系统中的两种链接方式:硬链接和软链接。硬链接通过inode实现多个文件名指向同一文件,删除时仅减少链接数;软链接则类似快捷方式,通过文件名引用目标文件。两者关键区别在于:硬链接是inode映射,软链接是独立文件。硬链接常用于目录结构(如.和..)及文件备份,软链接则用于创建文件快捷方式。文章还对比了文件访问、修改和属性变更的三个时间属性。原创 2025-08-26 15:41:46 · 939 阅读 · 0 评论 -
Linux 详谈Ext系列⽂件系统(二)
本文主要介绍了Linux文件系统的核心概念和工作原理。首先解释了硬盘数据存取的基本单位"块"(block)及其与扇区的关系,以及分区的概念。重点阐述了inode的作用,它是存储文件元信息的结构,每个文件对应一个唯一的inode号。 文章详细描述了ext2文件系统的组织结构,包括超级块(SuperBlock)、块组描述符表(GDT)、块位图、inode位图、inode表和数据区等组成部分。通过创建新文件的例子,说明了文件存储的具体过程。原创 2025-08-25 23:13:46 · 1104 阅读 · 0 评论 -
Linux 详谈Ext系列⽂件系统(一)
本文介绍了磁盘的物理和逻辑结构。磁盘通过CHS(柱面、磁头、扇区)寻址定位数据,但其容量受限。逻辑上,磁盘可视为线性结构,采用LBA(逻辑块地址)编址方式。LBA与CHS可相互转换:LBA=柱面号×单个柱面扇区总数+磁头号×每磁道扇区数+扇区号-1。操作系统只需使用LBA地址,磁盘内部会自动完成地址转换。这种机制使磁盘在逻辑上成为一个以扇区为元素的一维数组,简化了数据访问过程。原创 2025-08-25 22:30:48 · 990 阅读 · 0 评论 -
2025年8月 CentOS7.6最小安装版本 切换国内yum源(亲测有效)
本文分享了CentOS7.6.1.810镜像资源及yum源更换方法。由于CentOS官方已停止维护,并详细介绍了在最小安装版本下更换yum源的四步操作:备份原yum源、删除原文件、通过curl下载阿里云yum源配置、更新本地缓存。操作需在root用户下完成,文中特别说明最小安装版本已自带ssh和curl工具,方便远程连接和文件下载。最后通过yum cleanall和makecache命令完成更新。原创 2025-08-11 08:00:00 · 1225 阅读 · 0 评论 -
Linux 详谈基础IO
本文介绍了Linux中的基础IO操作,从文件概念到系统调用接口。首先阐述了文件的广义狭义理解,指出Linux下一切皆文件的抽象特性。重点讲解了文件描述符(fd)的概念、分配规则及其在进程中的管理机制,并通过内核源码分析其底层实现。详细介绍了open、write、read、close等系统调用接口的使用方法,以及标志位传递技巧。通过代码示例演示了重定向原理和dup2系统调用的应用。深入剖析了"一切皆文件"的设计哲学,包括设备驱动与文件操作的统一接口。原创 2025-08-02 17:26:55 · 1161 阅读 · 0 评论 -
Linux 详谈进程控制
本文介绍了Linux系统中的进程控制机制,主要包括四个部分:进程创建、终止、等待和程序替换。首先详细讲解了fork()函数创建子进程的原理和写时复制技术;其次分析了进程终止的三种场景和exit()、_exit()函数的区别;然后阐述了进程等待的必要性,介绍了wait()和waitpid()函数的使用方法;最后解释了程序替换的exec函数族及其应用场景。文章通过代码示例演示了各种进程控制操作的实际应用,为理解Linux进程管理机制提供了系统性的知识框架。原创 2025-08-01 16:34:22 · 958 阅读 · 0 评论 -
Linux 详谈程序地址空间
本文探讨了Linux系统中进程地址空间的概念及其实现机制。通过实验验证了程序地址空间中的各个区域分布,包括代码段、全局变量区、堆区、栈区等。重点分析了父子进程共享相同虚拟地址但访问不同物理内存的现象,揭示了虚拟地址与物理地址的区别。文章详细介绍了Linux内核中描述进程地址空间的关键数据结构mm_struct和vm_area_struct,解释了操作系统如何通过页表机制管理虚拟内存到物理内存的映射。最后阐述了虚拟地址空间的重要性,包括提高内存安全性、实现地址确定性、优化内存管理效率等功能,使进程管理与内存管原创 2025-07-31 15:57:44 · 1028 阅读 · 0 评论 -
Linux 详谈环境变量
本文介绍了Linux环境变量的基本概念、常见类型及操作方法。环境变量是操作系统运行的重要参数,具有全局属性,如PATH、HOME等。文章详细讲解了查看环境变量的方法(echo、env等命令),测试PATH和HOME变量的具体操作,以及通过代码获取环境变量的三种方式:命令行参数、extern声明和系统调用。此外,还说明了环境变量的组织方式及其全局继承特性,通过实例演示了环境变量如何被子进程继承。这些内容帮助读者深入理解环境变量在Linux系统中的重要作用和使用方法。原创 2025-07-31 15:35:15 · 639 阅读 · 0 评论 -
Linux 详谈从冯诺依曼体系结构到进程
本文介绍了Linux操作系统的核心概念,包括冯诺依曼体系结构、操作系统功能、进程管理等。首先阐述了计算机硬件组成与内存交互原理,然后讲解了操作系统作为"管理软件"的角色定位,包括进程、内存等资源管理。重点剖析了进程概念,包括PCB(task_struct)数据结构、进程状态(运行、睡眠、僵尸等)以及进程标识符(PID/PPID)。文章还详细说明了fork系统调用创建进程的过程,以及进程优先级(PRI)和nice值的关系。通过代码示例演示了如何获取进程ID、创建子进程,并分析了僵尸进程的产原创 2025-07-30 16:58:38 · 1062 阅读 · 0 评论 -
Linux 一文详谈Vim编辑器的使用
本文介绍了Linux文本编辑器Vim的基本使用方法。Vim具有三种主要模式:命令模式(光标移动和文本操作)、插入模式(文本输入)和底行模式(文件操作)。文章详细说明了各模式间的切换方法,并汇总了命令模式下光标移动、删除、复制粘贴、撤销等常用操作指令,以及底行模式下保存退出、分屏等操作。最后简要介绍了Vim配置文件的存放位置和简单配置方法,推荐使用现成的配置脚本来简化配置过程。该文章适合Linux初学者快速掌握Vim编辑器的基本操作。原创 2025-07-23 21:37:38 · 752 阅读 · 0 评论 -
一文谈Linux操作系统基础命令操作
本文介绍了Linux系统下的基础命令行操作,包括文件和用户管理、软件安装等常见任务。主要内容包括:1)用户创建与删除命令;2)文件操作(创建、修改、删除、拷贝);3)打包压缩与解压操作;4)文件查看与查找方法;5)软件安装命令(Ubuntu和CentOS)。文章通过对比Windows操作,帮助用户快速掌握Linux常用命令,适合各层次用户参考使用。特别提醒部分操作需要root权限,并提供了不同Linux发行版的命令差异说明。原创 2025-07-20 16:51:34 · 1313 阅读 · 0 评论
分享