logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Linux系统】信号产生 从 Ctrl+C 到 core dump

一个进程调用write把数据交给内核,另一个进程再调用read把数据从内核取走。数据在两个进程之间流动时,需要经过系统调用和内核缓冲区。共享内存换了一种思路。操作系统不再只提供一条“你写我读”的通道,而是把同一段物理内存分别映射进两个进程的地址空间。映射完成以后,一个进程写这块内存,另一个进程通过自己的虚拟地址就能看到修改。第一次看到这里时,我觉得共享内存好像把 IPC 变得特别简单:拿到地址以后

#linux#学习
【Linux 系统编程】进程概念全景:从 PCB、/proc 到进程状态与虚拟地址空间

操作系统把描述进程所需的信息集中在进程控制块中,即 PCB(Process Control Block)。Linux 内核中,与 PCB 对应的核心数据结构是。信息类别典型内容解决的问题身份信息PID、PPID、线程组 ID“它是谁、由谁创建”运行状态R、S、D、T、Z 等“它现在能否运行”调度信息调度策略、优先级、运行时间“什么时候轮到它”CPU 上下文指令地址、寄存器现场“下次从哪里继续”内存

#linux
【Linux 系统编程】初识 fork:一次调用,两次返回,父子进程如何“分道扬镳”

错误。子进程从fork()返回处继续执行,fork()之前已经执行完的代码不会重新执行。

#linux
【Linux 系统编程复习笔记】进程状态:从调度队列到僵尸与孤儿

只记住“R 是运行、S 是睡眠、Z 是僵尸”还不够。内核以为入口,通过调度队列、等待结构和父子关系组织任务;ps的状态字符只是当前关系的一个可见结果,需要结合 PPID、PGID、TPGID、WCHAN 和程序行为解释;用忙等、sleep()SIGSTOPwaitpid()和父进程提前退出,可以亲手复现主要状态和关系变化。状态字符只是现象,队列关系和父子关系才是原因。能够根据程序行为解释ps输出,

#linux#运维
【Linux 系统编程】进程优先级、调度与切换

多个可运行任务竞争有限的 CPU;调度策略结合权重、运行时间和系统状态选择任务;内核保存当前任务的执行现场;CPU 恢复另一个任务的现场并继续执行;多次快速切换形成并发,多核同时执行形成并行。nice 只是普通任务调度中的一个输入,不代表绝对执行顺序;是理解旧 O(1) 调度器的历史模型,不是现代 CFS/EEVDF 的数据结构。把这些层次分开,才能正确解释ps中的优先级字段,也能避免把课程中的历

#linux#服务器#c++
【Linux 系统编程】命令行参数与环境变量

在终端输入一条命令后,Shell 不只是“找到程序并运行”这么简单。它先解析输入,生成命令行参数,再确定程序需要继承哪些环境变量,最后把这些信息交给将要运行的程序。命令行参数回答“这一次要程序做什么”,环境变量描述“程序运行时所处的外部环境”。二者都由字符串组成,也都会在程序启动时进入进程,但用途和组织方式并不相同。

#linux#服务器#运维
【Linux 系统】进程虚拟地址空间与写时拷贝

父进程创建子进程后,两边打印同一个全局变量,可能得到完全相同的地址;等子进程修改变量后,两边的地址仍然相同,值却不一样。如果把程序打印的地址理解成物理内存地址,这个现象就解释不通。真正需要补上的一层,是进程虚拟地址空间:程序使用虚拟地址,内核通过内存区域和页表把它转换为实际的物理内存访问。fork()的写时拷贝,也正是建立在这一层映射之上的。

#linux#服务器#java
【Linux 系统编程】进程概念全景:从 PCB、/proc 到进程状态与虚拟地址空间

操作系统把描述进程所需的信息集中在进程控制块中,即 PCB(Process Control Block)。Linux 内核中,与 PCB 对应的核心数据结构是。信息类别典型内容解决的问题身份信息PID、PPID、线程组 ID“它是谁、由谁创建”运行状态R、S、D、T、Z 等“它现在能否运行”调度信息调度策略、优先级、运行时间“什么时候轮到它”CPU 上下文指令地址、寄存器现场“下次从哪里继续”内存

#linux
到底了