调度_命令行_环境变量

linux的进程调度算法

饥饿问题

新建进程/时间片结束进程,若放回active,很可能该进程优先级太高,下一个还是执行该进程,导致不断执行同一进程,各进程调度不均衡。

饥饿问题解决

新建进程不能到active,要到expired

时间片到了的进程,也要到expired

这样的话,active中进程只会越来越少

当active为空时,操作系统交换active&expired

struct queue & active & expired

runquequ中有两张struct queue,

struct:queue结构

还有两个struct queue* 成员,active,expired

CPU只会从active中选取进程进行调度

bitmap

int bitmap[5]充当位图

32*5=160 可对应140元素

通过判断bitmap[i]可以一次排查32个位置

这就是linux内核O(1)算法

调度有三种情况

运行退出

不退出,时间片到了

有新进程产生了

调度器要非常均衡地进行进程调度 (目的进程调度算法)

task_struct链接前后节点方式

linux中各task_struct节点之间连接,不是靠task_struct内部直接定义task_struct* next 和task_struct* prev,而是定义一个struct node结构体用来链接前后节点

各结构体类型:
struct node//只有连接字段,没有属性字段{struct nide* next;struct node* prev;}
struct task_node{//...struct node link//可用来将各task_struct节点连接起来}

如何做到只有每个进程只有一份task_struct却能同时出现在多个链表中?

task_内部为每个可能出现在的列表定义一个struct node成员以供链接即可

struct task_struct{//...其他进程属性struct node listnode;struct node queuenode;struct node waitnode;//....}

如何根据struct node*拿到task_struct地址

(struct task_struct* )(&node.next-偏移量)为下一task_struct地址

如何获得struct node*对于task_struct*的偏移量

&((struct node*)0->node.next)即为偏移量

命令行参数

命令行参数传递给main

main函数接受参数

exe运行时传递参数可被main函数接受,main函数根据参数执行不同功能

所以命令行中的命令后接选项实质上是给exe对应的main函数

main参数是谁传递的

参数首先被shell拿到

shell首先按照空格split参数,形成一张表char* argv[] 数组并计算元素个数int argc

shell进程和命令行启动的进程是父子关系

对于数据(尤其是只读),子进程也能看到

所以子进程可从shell中读取argv & argc

CRTstartup

CRTstartup调用main,CRTstartup会检测判断argc

CRTstartup(){if(argc==0)ret =main();elseret =main(argc,argv)}

环境变量

main(int argc,char* argv[],char* env[])

argv与env必以NULL元素结尾

全局变量,key=value

为什么系统自带命令不用./,自己生成的exe运行则不用./?

因为自己生成exe不再user/bin下,而user/bin为环境变量

PATH环境变量告诉了shell去哪里找到exe

shell会从echo $PATH的路径集合中找目标exe来执行

echo $PATH   查看PATH环境变量

env表生成

图片

家目录下.bash_profile与.bashrc为相关配置文件

通过shell中添加PATH,在重启shell时,对PATH的增添会失效。shell

板书笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543620.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

论文大杀器!分享4款ai论文写作工具软件

在当今学术研究和论文写作领域,AI技术的应用已经变得越来越普遍。这些工具不仅能够提高写作效率,还能帮助研究人员生成高质量的论文内容。本文将重点介绍四款优秀的AI论文写作工具,并特别推荐千笔-AIPassPaper。 一、千笔-AIPassPaper 传送门…

RTR_Chapter_6 上

第六章 纹理 表面纹理(texture)是指其外观和给人的视觉感受,就像是一幅油画的图案一样。而在计算机图形学中,纹理化则指的是一个过程,即通过使用一些图像、函数或者其他数据,来对每个表面位置的外观表现进行…

看Threejs好玩示例,学习创新与技术(React-three-fiber)

什么,竟有人把ThreeJS和React绑定在一起,混着用? 1、VUE劫持问题 暂先把今天的问题先放一边,先简单回顾下vue劫持的情况。vue会把data里面的数据自动转换为属性,方便界面与数据交互。这本身是没有任何问题&#xff0…

内网穿透(当使用支付宝沙箱的时候需要内网穿透进行回调)

内网穿透 一、为什么要使用内网穿透: 内网穿透也称内网映射,简单来说就是让外网可以访问你的内网:把自己的内网(主机)当做服务器,让外网访问 二、安装路由侠 路由侠-局域网变公网 (luyouxia.com) 安装成功如下: 三…

全栈开发(一):springBoot3+mysql初始化

1.开发环境准备 1.开发工具 2.jdk下载 官网下载java17 3.java环境变量配置 用户变量: ①.JAVA_HOME ②.path 4.mysql下载 b站随便搜 5.新建项目 6.maven配置 可以下载zip放到目录里 这里是配置好的 repository文件夹:为maven提供下载的文件存放…

Face++API调用

人脸检测API调用 import requests import json #将自己的KEY和Secret进行替换 API_KEYyour_API_KET API_SECRETyour_API_Secret# 人脸识别的URL URL https://api-cn.faceplusplus.com/facepp/v3/detect# 请求参数,需要什么参数传入什么参数 data {"api_key":API…

【LVIO-SLAM】SVD分解,最小二乘与EKF

【LVIO-SLAM】SVD分解与应用推导 1.1 线性最小而二乘1.2 SVD分解算法流程问题描述算法流程算法复杂度总结 1.3 非线性最小二乘1.4 EKF融合 KF/ EKF推导过程 1.1 线性最小而二乘 针对A是任意矩阵的话使用SVD分解求解,其中U是AA转置的特征值,V是AA转置A的特…

Python3 爬虫教程 - Web 网页基础

Web网页基础 1,网页的组成HTMLcssJavaScript2,网页的结构 3,节点树及节点间的关系4,选择器开头代表选择 id,其后紧跟 id 的名称。如:div 节点的 id 为 container,那么就可以表示为 #container 1…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台 Jenkins 是一个开源的自动化服务器,用于持续集成(CI)和持续交付(CD)软件项目。它允许开发人员在软件开发过程中自动化各种任务&…

进阶SpringBoot之集合 Redis

&#xff08;在跑 Redis 测试之前&#xff0c;需要先安装 Redis&#xff0c;并开启 Redis 服务&#xff09; Spring Boot 项目添加依赖 NoSQL -> Spring Data Redis pom.xml 文件如下 <dependencies><dependency><groupId>org.springframework.boot<…

【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架

原创 超 超的闲思世界 2024年09月11日 19:17 北京 9月11日消息&#xff0c;据外媒The Information昨晚报道&#xff0c;OpenAI的新模型「草莓」&#xff08;Strawberry&#xff09;&#xff0c;将在未来两周内作为ChatGPT服务的一部分发布。 「草莓」项目是OpenAI盛传已久的…

得物App荣获新奖项,科技创新助力高质量发展

近日&#xff0c;备受瞩目的2024中国国际服务贸易交易会&#xff08;简称“服贸会”&#xff09;在北京盛大开幕&#xff0c;这一全球唯一的国家级、国际性、综合型服务贸易盛会再次汇聚了全球服务贸易领域的精英与前沿成果。服贸会由商务部和北京市政府携手打造&#xff0c;并…

常见框架漏洞复现

1、Thinkphp5x远程命令执行及getshell 1、环境配置 靶场:vulhub/thinkphp/5-rce docker-compose up -d 2、漏洞利用 漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖&#xff0c;通过覆盖类的核心属性filter导致rce&#xff0c;其攻击点较为…

VMamba: Visual State Space Model 论文总结 + 源码解析

题目&#xff1a;VMamba: Visual State Space Model&#xff08;视觉状态空间模型&#xff09; 论文&#xff1a;[2401.10166] VMamba: Visual State Space Model (arxiv.org) 源码&#xff1a;https://arxiv.org/pdf/2401.10166 (github.com) 目录 一、摘要 二、引言 三、方…

全栈开发(四):使用springBoot3+mybatis-plus+mysql开发restful的增删改查接口

1.创建user文件夹 作为增删改查的根包 路径 src/main/java/com.example.demo/user 2.文件夹里文件作用介绍 1.User(实体类) package com.example.demo.user; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; impo…

计算机毕业设计之:基于微信小程序的疫苗预约系统的设计与实现(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

2024全球超模大赛(北京|山东|内蒙三城联动)顺利举办

近日&#xff0c;2024 全球超模大赛&#xff08;北京|山东|内蒙&#xff09;三城联动暨新国潮文化赛事主题发布会在紫薇美力集团国贸鲁采赋盛大举行。此次发布会旨在鼓励优质模特共同传播中国传统文化&#xff0c;让其在全球范围内绽放光彩&#xff0c;展现中国人的骄傲与风采&…

【我的 PWN 学习手札】House of Botcake —— tcache key 绕过

参考自看雪课程&#xff1a;PWN探索篇 前言 我们知道&#xff0c;自对 tcachebin 添加了 key 进行了 double free 检查后&#xff0c;利用起来薛微有些困难。double free 绕过检查机制&#xff0c;实则是因为释放时会检查 tcachebin 对应 size 的所有 free chunk。那么如果第二…

【牛客网刷题记录】【java】链表

&#xff08;1&#xff09;反转链表 链接 可以说是最经典的链表题目之一&#xff0c;并且很多人经常会记不得怎么做。 但大致思路是比较简单的&#xff0c;重点就是如何用指针对链表进行反转的同时还不能丢失链表。不可避免的就是需要一个指针指向已经反转的部分&#xff08;p…

2024个人简历模板免费可编辑,可能是整理最全的简历(支持Word格式下载)

提供各行业简历模板WORD可编辑格式下载&#xff0c;涵盖求职简历模板、大学生简历模板、个人简历模板、留学简历模板、英文简历模板、免费简历模板、工作简历模板、保研简历模板、暑期实习简历、寒假实习简历、校招简历等。 都是word格式&#xff0c;直接下载就能用。 网盘链…