网站建设的文字用什么字体较好小企业做网站有没有用

张小明 2026/1/10 12:15:53
网站建设的文字用什么字体较好,小企业做网站有没有用,国内电商平台大全,莱芜app下载上一篇#xff0c;我们从内核视角揭开了进程的神秘面纱#xff0c;知道了它的本质是 PCB 代码与数据。今天#xff0c;我们将深入探讨进程的生命周期#xff1a;一个进程是如何从诞生走向消亡的#xff1f;它会经历哪些状态#xff1f;fork() 如何像细胞分裂一样创造新生…上一篇我们从内核视角揭开了进程的神秘面纱知道了它的本质是PCB 代码与数据。今天我们将深入探讨进程的生命周期一个进程是如何从诞生走向消亡的它会经历哪些状态fork()如何像细胞分裂一样创造新生命以及为何有些进程会变成令人头疼的 “僵尸” 或无奈的 “孤儿”这篇文章将带你用场景化的方式、可复现的示例和更底层的视角一次性理清这些 Linux 进程管理中的核心概念。文章目录一、进程的 7 种核心状态从诞生到消亡的旅程1.1 内核如何定义状态1.2 常见状态详解与复现**R (Running) - 运行态/就绪态****S (Sleeping) - 可中断睡眠****D (Disk Sleep) - 不可中断睡眠****T (Stopped) - 停止态****Z (Zombie) - 僵尸态****其他状态**1.3 状态总结二、进程创建fork() 的魔法2.1 fork() 的基本用法2.2 为什么 fork() 有两个返回值2.3 父子进程的资源关系共享与独立三、特殊进程僵尸与孤儿3.1 僵尸进程Zombie- 谁来为我收尸3.2 孤儿进程Orphan- 我被过继给了init四、总结一、进程的 7 种核心状态从诞生到消亡的旅程教科书常将进程状态简化为 “运行、就绪、阻塞”但这在 Linux 内核中过于笼统。实际上Linux 定义了 7 种精确的状态每一种都对应着进程生命周期中的一个特定阶段。我们可以通过ps命令直观地看到它们。1.1 内核如何定义状态在内核源码中这些状态被定义在一个名为task_state_array的数组里这正是ps命令中状态字符如R、S、Z的来源。// Linux 内核源码中的状态定义简化版staticconstchar*consttask_state_array[]{R (running),// 运行态或就绪态S (sleeping),// 可中断的睡眠态D (disk sleep),// 不可中断的睡眠态T (stopped),// 停止态t (tracing stop),// 跟踪停止态X (dead),// 死亡态瞬时Z (zombie),// 僵尸态};接下来我们逐一剖析这些状态重点关注那些我们能亲手复现和观察的。1.2 常见状态详解与复现R (Running) - 运行态/就绪态含义进程要么正在 CPU 上执行要么位于就绪队列中随时准备被调度。它代表 “可运行” 的状态而非 “正在运行”。误区ps看到R并不意味着进程一定在消耗 CPU。在一个 4 核系统上最多只有 4 个进程能同时处于真正的 “运行” 状态但可能有几十个R态进程在排队等待。复现编写一个纯计算的死循环程序。// test_r.c#includestdio.hintmain(){while(1){/* I am busy! */}return0;}编译运行gcc test_r.c -o test_r ./test_r在另一个终端查看会看到R状态表示前台运行。S (Sleeping) - 可中断睡眠含义进程正在等待某个可被中断的事件完成例如等待键盘输入、网络数据到达或sleep()超时。此时进程位于等待队列中。特性可以被信号如CtrlC唤醒或终止。复现一个包含sleep()的程序是典型的S态。// test_s.c#includeunistd.hintmain(){while(1){sleep(10);}return0;}运行后查看其状态为S。大部分时间它都在 “睡眠”等待sleep的定时器事件。D (Disk Sleep) - 不可中断睡眠含义进程正在等待不可中断的 I/O 操作通常是与硬件如磁盘的直接交互。这是为了保护数据一致性防止在关键 I/O 过程中被信号中断。特性无法被kill -9杀死只能等待 I/O 完成或系统重启。这是系统中的一种 “高危” 状态。场景当系统因为磁盘故障或 NFS 问题而响应缓慢时ps命令可能会显示有进程处于D态。正常情况下D态是瞬时的难以捕捉。注意D状态出现很短一般是看不到的如果捕捉到长时间的D状态那么你的系统可能存在致命风险了随时可能发生故障T (Stopped) - 停止态含义进程被暂停不再被调度。通常是由于收到了SIGSTOP信号如CtrlZ。恢复可以通过SIGCONT信号让进程恢复运行。复现运行一个前台程序如./test_s。按下CtrlZ程序被挂起状态变为T。使用kill -SIGCONT PID或fg命令可使其恢复。Z (Zombie) - 僵尸态含义子进程已终止但其父进程尚未通过wait()或waitpid()来读取其退出状态导致子进程的 PCBtask_struct仍保留在内核中。危害僵尸进程本身不占用 CPU 或内存但它占用一个 PID 和内核中的 PCB 空间。如果大量积累会导致 PID 耗尽系统无法创建新进程。特性无法被kill -9杀死因为它已经 “死” 了唯一的解决办法是杀死其父进程让它成为孤儿由initPID 1进程接管并回收。其他状态t (tracing stop)与T态类似但特指在被调试器如 gdb跟踪时暂停的状态。X (dead)进程彻底消亡前的瞬时状态资源已完全释放几乎不可能被观察到。1.3 状态总结状态名称核心场景能否被信号中断如何解决/恢复R运行/就绪正在计算或等待 CPU否-S可中断睡眠等待事件网络、键盘、sleep是事件完成或信号唤醒D不可中断睡眠等待硬件 I/O如磁盘否等待 I/O 完成或重启T停止态CtrlZ或SIGSTOP是SIGCONT或fg命令Z僵尸态子进程退出父进程未回收否杀死父进程或修改父进程代码二、进程创建fork()的魔法在 Linux 中fork()是创建新进程的主要方式。它的行为非常独特调用一次返回两次。2.1fork()的基本用法fork()会创建一个与父进程几乎一模一样的子进程。它的神奇之处在于返回值在父进程中fork()返回新创建子进程的 PID。在子进程中fork()返回0。如果创建失败返回-1。// test_fork.c#includestdio.h#includeunistd.hintmain(){pid_tpidfork();if(pid0){perror(fork failed);return1;}elseif(pid0){// 子进程的世界printf(I am the child, PID: %d, my parent is: %d\n,getpid(),getppid());}else{// 父进程的世界printf(I am the parent, PID: %d, my child is: %d\n,getpid(),pid);sleep(1);// 确保子进程有机会执行}return0;}2.2 为什么fork()有两个返回值这并非函数本身返回两次而是内核在fork()调用后将一个进程分裂成了两个独立的执行流。父子进程都从fork()的返回点继续执行但它们各自的pid变量被赋予了不同的值从而能够区分彼此。父进程需要子进程的 PID来管理它如等待它结束。子进程返回 0是一个约定表示 “我是一个子进程”。它可以通过getppid()随时获取父进程的 PID。2.3 父子进程的资源关系共享与独立fork()创建的子进程并非完全独立它与父进程共享某些资源以提高效率。代码段完全共享。代码是只读的父子进程共享同一份内存中的代码节省了大量空间。数据段写时复制Copy-on-Write, COW。fork()后父子进程的虚拟地址空间是独立的但它们最初指向相同的物理内存页。只有当其中一方尝试写入数据时内核才会为该进程复制一份新的物理内存页让它独立修改。这极大地加快了fork()的速度。写时复制示例// test_cow.c#includestdio.h#includeunistd.hintg_val100;intmain(){pid_tpidfork();if(pid0){// 子进程修改全局变量g_val200;printf(Child: g_val %d, addr %p\n,g_val,g_val);}else{sleep(1);// 等待子进程修改printf(Parent: g_val %d, addr %p\n,g_val,g_val);}return0;}你会发现父子进程打印出的g_val地址是相同的但值却不同。这是因为它们看到的都是虚拟地址而写时复制机制使得这些相同的虚拟地址最终映射到了不同的物理内存页上。三、特殊进程僵尸与孤儿理解了进程状态和创建我们就能轻松搞定僵尸进程和孤儿进程这两个高频面试题。3.1 僵尸进程Zombie- 谁来为我收尸成因子进程先于父进程退出而父进程没有调用wait()或waitpid()来获取子进程的退出状态。复现// test_zombie.c#includestdio.h#includestdlib.h#includeunistd.hintmain(){pid_tpidfork();if(pid0){printf(Child exiting...\n);exit(0);// 子进程立即退出}else{printf(Parent sleeping...\n);sleep(30);// 父进程长时间睡眠不回收子进程// wait(NULL); // 加上这句就能解决僵尸问题}return0;}运行后立即用ps axj | grep test_zombie查看会看到一个状态为Z的僵尸进程其名称后带有defunct标记。解决方案根本修改父进程代码确保调用wait()或waitpid()来回收子进程。临时杀死父进程。父进程死后其所有子进程包括僵尸进程都会被initPID 1进程收养init进程会定期回收所有它收养的僵尸子进程。3.2 孤儿进程Orphan- 我被过继给了init成因父进程先于子进程退出子进程仍在运行。结果该子进程会立即被**initPID 1进程收养**。当这个子进程最终退出时init会负责回收它因此孤儿进程不会变成僵尸进程。复现// test_orphan.c#includestdio.h#includeunistd.hintmain(){pid_tpidfork();if(pid0){printf(Child: My parent was %d\n,getppid());sleep(5);printf(Child: Now my parent is %d\n,getppid());}else{printf(Parent exiting...\n);sleep(1);// 确保子进程先打印初始父PID}return0;}运行后你会看到子进程的父 PID 从其原始父进程的 PID 变成了 1。意义孤儿进程机制是 Linux 内核的一种健壮性设计确保了即使父进程异常退出其子进程也不会无人管理从而避免了系统资源的泄漏。四、总结进程状态是其生命周期的快照R、S、D、T、Z是最常见的几种分别对应运行/就绪、睡眠、I/O 等待、暂停和僵尸。fork()通过写时复制COW机制高效地创建子进程并通过不同的返回值来区分父子执行流。僵尸进程是 “管理失职” 的结果父进程未回收需要通过修改父进程代码或杀死父进程来解决。孤儿进程是内核的 “托底” 机制会被init进程自动收养和回收通常无害。理解了这些你就掌握了 Linux 进程管理的半壁江山。下一篇我们将探讨进程调度、优先级以及资源回收的细节wait与waitpid敬请期待
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

外贸网站虚拟主机做百度网站优化多少钱

XSS(跨站脚本攻击) 什么是XSS? XSS(Cross-Site Scripting) 是一种Web安全漏洞,攻击者将恶意脚本注入到其他用户会访问的网页中。 当用户浏览被感染的网页时,恶意脚本会在用户浏览器中执行&…

张小明 2026/1/9 11:23:10 网站建设

行业网站建设申请报告深圳大簇激光公司网站

Excalidraw绘制电商平台订单流程图示例 在一次电商大促前的紧急需求评审会上,产品经理指着白板上密密麻麻的文字描述说:“我们得把整个订单状态流转理清楚。”会议室里沉默了几秒——没人能快速理解这个“下单→支付→发货→退款”背后隐藏的二十多种分支…

张小明 2026/1/9 5:37:54 网站建设

建设公司网站费用多少深圳工程交易服务主页

还在为官方软件的网络连接和不必要的弹窗烦恼吗?OmenSuperHub为您提供完全离线的暗影精灵笔记本控制体验,让您轻松管理硬件性能的同时保护个人隐私安全。这是一款专为暗影精灵系列笔记本设计的开源控制工具,能够智能调节风扇转速、切换性能模…

张小明 2026/1/8 9:35:37 网站建设

视频网站程序影楼网站模版

提升全国蜂窝网络可靠性的研究与发现 1. 监测基础设施概述 监测基础设施仅在检测到故障的时间段内运行,而非整个测量过程。在日常无蜂窝故障使用时,客户端的监测基础设施处于休眠状态,不会产生额外的 CPU 开销。 对于极少数(少于 1%)用户设备,一个月内单个用户可能经历…

张小明 2026/1/9 6:46:58 网站建设

东莞建站网站模板简述制作网页的基本过程

污水处理组态王6.53和西门子S7-300PLC联机带IO表和注释,带运行效果视频 在污水处理领域,实现组态王与西门子S7 - 300 PLC的稳定联机,对于高效监控和管理整个处理流程至关重要。今天就来详细聊聊这个过程,还会附上IO表及注释&…

张小明 2026/1/9 17:35:35 网站建设

wordpress搬站换空间大连三川建设集团

Kotaemon智能对话框架正式上线,全面开放下载在当今快速演进的人工智能生态中,一个值得关注的新成员悄然登场——Kotaemon智能对话框架。它并非仅仅是一个聊天机器人工具包,而是一套面向开发者、研究者乃至企业级应用的完整对话系统解决方案。…

张小明 2026/1/9 12:18:35 网站建设