操作系统内核与安全分析课程笔记【2】进程管理与调度
文章目录
- 基本概念与关键数据结构
- 进程管理
- 进程生命周期
- 进程的关系
- 进程家族树
- 线程组
- 进程组与会话
- 进程的创建与终止
- Linux中的线程
基本概念与关键数据结构
进程:静态的,存储在磁盘上的代码与数据。
程序:动态的,执行程序的动态过程,资源分配的基本单位。
线程:调度的最小单位。
Linux内核把进程列表存放在叫作任务队列(task list)的双向循环链表中。这个双向循环链表重的每一项都为task_struct、称为进程描述符(process descriptor)的结构。该结构的定义在<linux/sched.h>中可以查看。一个task_struct在32位机器上大约为1.7KB,其中存储了一个进程状态,进程关系等关键信息。
Linux内核进程描述符:task_struct存储了进程正常运行其功能所需要的信息,其中包括:
- 进程属性相关信息: state(状态),pid(进程标识符),flags,exit_code/exit_signal
- 进程间的关系:real_parent, children, sibling, group_leader
- 进程调度相关信息: prio, static_prio, normal_prio, rt_priority, sched_class, sc, rt, dl, polity, cpus_allowed
- 内存与管理相关信息: mm, fs(文件指针),files
- 信号相关信息
- 资源限制相关信息
进程管理
进程生命周期
进程有5种可能状态:(ps:可以写一个这5种状态互相转换的代码)
- TASK_RUNNING: 可运行态,正在运行或在就绪队列中
- TASK_INTERRUPTIBLE:可中断睡眠,被阻塞等待资源
- TASK_UNINTERRUPTABLE:不可中断睡眠,对信号没有反应
- _TASK_STOPPED:终止态
- EXIT_ZOMBIE:僵尸态,进程已消亡,但task_struct结构未释放
进程的关系
进程涉及的关系有3种:
- 进程家族树
- 线程组
- 进程组与会话
进程家族树
线程组
一个线程组中所有线程和该线程组主线程具有相同标识符,即其pid,它被存入task_struct数据结构的tgid字段。同一个线程组的线程通过进程间通信来共享数据。调用getpid()返回当前进程组的tgid,而非每个线程的pid。(ps:这意味着使用getpid()不会把所有线程都返回回来)。
进程组与会话
一个进程组由进程组的leader的pid唯一标识。同时,多个进程可以构成会话,该会话由领导进程的pid唯一标识。
proc1 | proc2 &
proc3 | proc4 | proc5
这里proc1和proc2是一个后台进程组,proc3-proc5是一个前台进程组,它们同属一个会话,均在同一个终端运行。
进程的创建与终止
(ps: 这部分代码再多看看)
进程创建包括:fork()和execve()函数族。
进程终止包括:wait()、waitpid()、kill()、exit()函数族。
为了提升效率fork()又拓展为:vfork()和clone()。vfork() 通过保证子进程先运行避免复制浪费,从而提升fork的效率。
进程终止有2种方式:
- 主动调用函数终止
- main函数返回链接程序会主动添加exit()系统调用
- 主动调用exit()
- 被动接收终止信号或异常终止
- 接收无法处理的信号
- 产生异常
- 收到SIGKILL等终止信号
Linux中的线程
linux中线程与进程都由task_struct实现,不同的是线程被视为一个与其他进程共享资源的轻量级进程。
相关文章:

操作系统内核与安全分析课程笔记【2】进程管理与调度
文章目录基本概念与关键数据结构进程管理进程生命周期进程的关系进程家族树线程组进程组与会话进程的创建与终止Linux中的线程基本概念与关键数据结构 进程:静态的,存储在磁盘上的代码与数据。 程序:动态的,执行程序的动态过程&am…...

看完书上的栈不过瘾,为什么不动手试试呢?
一.栈的基本概念1.栈的定义栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。其中注意几点:栈顶(Top):线性表…...

AbstractQueuedSynchronizer从入门到踹门
概念设计初衷:该类利用 状态队列 实现了一个同步器,更多的是提供一些模板方法(子类必须重写,不然会抛错)。 设计功能:独占、共享模式两个核心,state、Queue2.1 statesetState、compareAndSetSta…...
【项目实战】手把手教你Dubbo微服务架构中整合熔断限流组件Sentinel
一、背景 项目中需要引入Sentinel来实现限流,但是项目是基于Dubbo的微服务架构,我们都知道Sentinel是属于SpringCloudAlibaba组件下的限流中间件,基于Dubbo的微服务架构真的能够引入 Sentinel吗?带着疑惑的心情,实践了一把~ 二、使用说明 2.1 引入依赖文件 <!-- Se…...

图像主题颜色提取(Median cut)
前言 之前想对图片素材进行分类管理,除了打标签,还有一样是通过主题色进行分类。于是开始寻找能提取主主题色的工具,最后找到了大名鼎鼎的 Leptonica 库,其中就有中位切割算法的实现。下面附上中位切割算法的其它语言版本的实现。…...

Python 分支结构
Python 分支结构 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分&#x…...

【C++知识点】文件操作
✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...

VBA小模板,跨表统计的2种写法
目标 1 统计一个excel 文件里,多个sheet里的内容2 有的统计需求是,每个表只单表统计,只是进行批量操作3 有的需求是,多个表得某些行列累加等造出来得文件 2 实现方法1 (可能只适合VBAEXCEL,不太干净的写法…...
部署问题 | 百度LAC安装部署清单
本项目实现基于LAC提供RESTAPI服务的最小化方案。 依赖: python-3.9.9 百度lac2.X fastAPI uvicorn 首先下载并安装python,本人选择3.9版本。 依次安装: 安装 vc vc_redist.x64.exe 64位:https://download.microsoft.com/…...

提高办公效率的免费网站有哪些
收藏一些免费好用的网站,在我们工作中需要用到的时候可以直接使用,提高我们的工作效率。小编就和大家分享10个可以提高我们办公效率的免费网站。 1.羽兔网软件下载-以设计类软件为主的免费软件下载网站 很多小白都不知道怎么下载软件,往往搜…...
前端开发者需要掌握的具体内容和步骤
第一部分:前端开发实践 前端的工作职称 下面是一个前端开发者在职业发展中各种职称的描述列表. 对于前端开发者最普遍的职称是 "前端开发者" 或者 "前端工程师", 可以根据任何包含 "前端", "客户端", "web UI", "CS…...
杨校老师课堂之基于File类的文件管理器
在日常工作中,经常会遇到批量操作系统文件的事情,通常情况下,只能手动重复的完成批量文件的操作,这样很是费时费力。 本案例要求编写一个文件管理器,实现文件的批量操作。 文件管理器具体功能要求如下: 用…...
java面试算法汇总-数组
数组 [程序一] 两数之和 :给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,…...
Docker-Mysql主从复制
步骤 1、新建主服务器容器实例3307 docker run -d -p 3307:3306 --privileged=true -v /tmp/mysql_master/log:/var/log/mysql -v /tmp/mysql_master/data:/var/lib/mysql -v /tmp/mysql_master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql-master mys…...
(模拟)1241. 外卖店优先级
目录 题目链接 一些话 流程 套路 ac代码 题目链接 1241. 外卖店优先级 - AcWing题库 一些话 流程 // // 每经过 1 // 个时间单位,如果外卖店没有订单,则优先级会减少 1 // ,最低减到 0 // ;而如果外卖店有订单,则…...

Linux进程学习【进程地址】
✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…...

系统调用——文件操作相关函数
1.open open, creat - open and possibly create a file or device 打开一个文件,也可能创建一个文件,返回文件描述符 //头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //接口 int open(const char *pa…...

做互联网自媒体创业的月薪收入真的能过万吗?
搞自媒体创业有前途吗?收入月薪过万是真的吗? 自媒体创业是一种新兴的创业方法,它的远景十分广阔。自媒体创业能够让人们在自己的兴趣爱好和专业范畴上发挥自己的才能,一起也能够获得不错的收入。可是,月薪过万并不是…...
Kubernetes (k8s) 污点(Taint)、容忍介绍、示例
Kubernetes (k8s) 污点(Taint) 是一种机制,用于标记一个节点(Node)不可被调度的状态。它可以将一个污点标记添加到节点上,以防止 Pod 被调度到该节点上。污点可以用于实现各种策略,例如分离故障…...
多团队协作构建可观测性
实施 SRE 工程,守护系统的可靠性是一个⻓期的工作,需要开发、测试、运维以及 SRE 整个团队的努力。而可观测性平台天生就是为 SRE 工程服务的,它致力于实现 SLO 目标。建立可观测性不仅仅是运维团队的事情,更是整个开发、测试以及…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...