当前位置: 首页 > web >正文

Linux内核设计与实现 - 第3章:Linux的进程

目录

    • 3.1 进程概念
    • 3.2 进程描述符
    • 3.3 进程生命周期
    • 3.4 进程调度
    • 3.5 进程间通信(IPC)
    • 3.6 线程实现
    • 3.7 实验:进程监控工具

在这里插入图片描述

3.1 进程概念

  • 进程定义:程序执行的实例,拥有独立地址空间和系统资源
  • 进程组成
    • 代码段(text section)
    • 数据段(data section)
    • 堆栈(stack)
    • 进程控制块(PCB)
  • 进程特点
    • 动态性:有创建、执行、消亡过程
    • 并发性:多个进程可同时存在
    • 独立性:拥有独立地址空间

3.2 进程描述符

  • task_struct结构体
    struct task_struct {volatile long state;    // 进程状态pid_t pid;              // 进程标识符struct mm_struct *mm;   // 内存管理信息struct files_struct *files; // 打开文件信息// ... 其他字段
    };
    
  • 关键字段说明
    • state:TASK_RUNNING/TASK_INTERRUPTIBLE等
    • pid:进程唯一标识
    • mm:指向内存描述符

3.3 进程生命周期

  1. 创建

    • fork():创建子进程
    • vfork():创建共享地址空间的子进程
    • clone():更灵活的创建方式
  2. 执行

    • exec()系列函数加载新程序
  3. 终止

    • exit()正常终止
    • 信号强制终止

3.4 进程调度

  • 调度策略
    • SCHED_NORMAL:普通进程的完全公平调度(CFS)
    • SCHED_FIFO/SCHED_RR:实时进程调度
  • 优先级
    • 静态优先级(static_prio)
    • 动态优先级(dynamic_prio)
    • 实时优先级(rt_priority)

3.5 进程间通信(IPC)

  1. 管道(pipe)
  2. 信号(signal)
  3. 共享内存(shared memory)
  4. 消息队列(message queue)
  5. 信号量(semaphore)
  6. 套接字(socket)

3.6 线程实现

  • Linux线程特点
    • 轻量级进程(LWP)
    • 与进程共享地址空间
    • 通过clone()系统调用创建
  • POSIX线程库
    • pthread_create()
    • pthread_join()
    • pthread_exit()

3.7 实验:进程监控工具

# 查看进程树
pstree -p# 实时监控进程
top# 查看进程详细信息
ps -auxf
店铺二维码 客服微信
http://www.xdnf.cn/news/15800.html

相关文章:

  • 使用python读取json数据,简单的处理成元组数组
  • 2026python实战——如何利用海外代理ip爬取海外数据
  • 【机器学习】AdamW可调参数介绍及使用说明
  • Ubuntu查看Docker容器
  • 双向广搜算法详解
  • 数据结构——单调栈
  • 服务管理智能化:R²AIN SUITE 升级带来的两大功能更新哪些值得关注?
  • SQLite / LiteDB 单文件数据库为何“清空表后仍占几 GB”?——原理解析与空间回收实战
  • 告别宕机!Ubuntu自动重启定时任务设置(一键脚本/手动操作)
  • 怎么自己搭建云手机
  • 数据库防止数组字符串序列化
  • 知识管理中的人工智能:概述、主要功能和管理工具
  • #vscode# #SSH远程# #Ubuntu 16.04# 远程ubuntu旧版Linux
  • 【Nginx】nginx+lua+redis实现限流
  • ARCS系统机器视觉实战(直播回放)
  • 医疗人工智能的心电图分析:创新技术与临床应用
  • Java面试宝典:Maven
  • 开源短链接工具 Sink 无需服务器 轻松部署到 Workers / Pages
  • nginx定制http头信息
  • 链表算法之【链表的中间节点】
  • 【Python】python 爬取某站视频批量下载
  • MyUI表单VcForm组件文档
  • Spring介绍以及IOC和AOP的实现
  • SpringBoot项目创建,三层架构,分成结构,IOC,DI相关,@Resource与@Autowired的区别
  • Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解
  • Flutter——Android原生View是如何通过Flutter进行加载
  • 关于Mysql开启慢查询日志报错:13 - Permission denied的解决方案
  • logback日志控制服务器日志输出
  • 对Yii2中开启`authenticator`后出现的跨域问题-修复
  • 图机器学习(11)——链接预测