Linux第十五章

news2024/10/7 17:26:06

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

进程运行

linux2.6内核的调度队列与调度原理

cpu运行队列

实时(Real-time)和分时(Time-sharing)

命令行参数

算术运算器

mytouch


进程运行

进程在cpu跑的时候,如果时间片到了,没有跑完的话,寄存器上下文数据就会保存在该进程的pcb中

本质:cpu寄存器的内容,保存到内存中

进程在cpu跑的时候,如果时间片到了,进程被剥离,cpu上的寄存器上下文数据不会被清空,只是下一个进程,在cpu上跑的时候,寄存器上的数据会被覆盖

如果进程在cpu跑之前,首先需要把进程pcb中的上下文数据加载到cpu中,如果这个进程第一次在cpu上跑,上下文数据为空。

linux2.6内核的调度队列与调度原理

cpu运行队列

 Linux中的优先级【60,99】:普通优先级

linux其实是有140个优先级的

linux中【0,99】不用管:做实时操作系统的

实时(Real-time)和分时(Time-sharing)

在Linux中,实时(Real-time)和分时(Time-sharing)是操作系统调度策略的两种常见类型。

实时调度: 实时调度是为了满足对任务响应时间要求严格的应用场景而设计的。实时任务通常具有固定的截止时间或优先级,并且必须及时得到处理。

分时调度: 分时调度是最常见的调度策略,它以时间片为单位,给每个任务分配一小段时间进行执行。Linux默认使用的调度策略就是时间片轮转调度算法。

分时调度策略适用于多用户、多任务的场景,在公平地分配CPU资源的同时,保证了系统的响应能力。而实时调度策略则更加重视对于实时任务的处理,并确保其满足截止时间要求。

请注意,实时任务为了满足其及时性的要求,可能会抢占分时任务的CPU时间,因此在使用实时调度策略时需要谨慎权衡。  

命令行参数

main函数可以传参数吗?

可以

int main(int argc,char *argv[])
{
        int i=0;
        for(;i<argc;i++)
        {
                printf("%d: %s\n",i,argv[i]);
        }
        //printf("hello world!\n");
        return 0;
}

//
[BCH@hcss-ecs-6176 10_19]$ ./myproc -a --b --help —version//一个大的字符串
//以空格作为分隔符,被分割了5个子串
0: ./myproc
1: -a
2: --b
3: --help
4: --version


argv是一个指针数组
[0]:保存的是./myproc字符串的地址
[1]:保存的是-a字符串的地址
[2]:保存的是--b字符串的地址
[3]:保存的是--help字符串的地址
[4]:保存的是—version字符串的地址
[5]:null

算术运算器

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char *argv[])
{
        if(argc!=4)
        {
                printf("Use error \n Usage:%s op[-add|sub|mul|div] d1 d2",argv[0]);
                return 1;
        }
        int x=atoi(argv[2]);
        int y=atoi(argv[3]);
        int result=0;
        if(strcmp(argv[1],"-add")==0)
        {
                result=x+y;
                printf("%d+%d=%d\n",x,y,result);
        }
        else if(strcmp(argv[1],"-sub")==0)
        {
                result=x-y;
                printf("%d-%d=%d\n",x,y,result);
        }
        else if(strcmp(argv[1],"-mul")==0)
        {
                result=x*y;
                printf("%d*%d=%d",x,y,result);
        }
        else if(strcmp(argv[1],"-div")==0)
        {
                if(y==0)
                        printf("error:is not 0");
                else
                        printf("%d/%d=%d",x,y,x/y);
        }
        else
        {
                
                printf("Use error \n Usage:%s op[-add|sub|mul|div] d1 d2\n",argv[0]);


        }
        return 0;
}

[BCH@hcss-ecs-6176 10_19]$ ./myproc -add 20 10
20+10=30
[BCH@hcss-ecs-6176 10_19]$ ./myproc -sub 20 10
20-10=10
[BCH@hcss-ecs-6176 10_19]$ ./myproc -mul 20 10
20*10=200
[BCH@hcss-ecs-6176 10_19]$ ./myproc div 20 10
Use error 
 Usage:./myproc op[-add|sub|mul|div] d1 d2
[BCH@hcss-ecs-6176 10_19]$ ./myproc -div 20 10
20/10=2

mytouch

自己实现简易版的touch指令,mytouch

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])//argv中[0]是mytouch程序,[1]文件名
{
        if(argc!=2)
        {
                printf("error:\nusege:%s filename\n",argv[0]);
                return 1;
        }


        FILE* fp=fopen(argv[1],"w”);//这是c语言中创建文件的方法
        if(fp!=NULL)fclose(fp);
        return 0;
}

[BCH@hcss-ecs-6176 10_19_1]$ make
make: “mytouch”是最新的。
[BCH@hcss-ecs-6176 10_19_1]$ ./mytouch wcq
[BCH@hcss-ecs-6176 10_19_1]$ ll
总用量 20
-rw-rw-r-- 1 BCH BCH   67 10月 19 20:34 Makefile
-rwxrwxr-x 1 BCH BCH 8464 10月 19 20:38 mytouch
-rw-rw-r-- 1 BCH BCH  221 10月 19 20:38 mytouch.c
-rw-rw-r-- 1 BCH BCH    0 10月 19 20:43 wcq

总结一下:命令行参数,可以支持各种指令级别的命令选项的设置!终于理解历史学的指令,选项是什么关系了

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 

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

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

相关文章

22 - Hadoop HA 高可用集群搭建、手动模式、自动模式以及HA模式集群

目录 1、HA 概述 2、HDFS-HA 集群搭建 2.1、HDFS-HA 核心问题 3、HDFS-HA 手动模式 3.1、环境准备 3.2、规划集群 3.3、配置 HDFS-HA 集群 3.4、启动 HDFS-HA 集群 4、HDFS-HA 自动模式 4.1、HDFS-HA 自动故障转移工作机制 4.2、HDFS-HA 自动故障转移的集群规划 4.…

Three.js 的优势

Three.js 是一个非常流行的基于 WebGL 的 JavaScript 库&#xff0c;用于在浏览器中创建和展示 3D 内容。以下是 Three.js 的一些主要优势&#xff0c;这些优势使得 Three.js 成为创建和展示 3D 内容的强大工具&#xff0c;无论是对于初学者还是经验丰富的开发者。北京木奇移动…

OFDM802.11a的FPGA实现(七)一级交织:分组交织器(含verilog和matlab代码)

1.前言 在前面的文章中讲解了卷积编码和删余&#xff0c;实现了1/2、2/3、3/4编码速率的输出。数据域在编码之后&#xff0c;下一个部分就是交织。今天对交织进行具体实现。 交织是为了在时域或频域或者同时在时域、频域上分布传输的信息比特,使信道的突发错误在时间上得以扩散…

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测(Matlab)

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.LSTM-KDE的长短期…

CVE-2022-2602:unix_gc 错误释放 io_uring 注册的文件从而导致的 file UAF

前言 复现该漏洞只是为了学习相关知识&#xff0c;在这里仅仅做简单记录下 exp&#xff0c;关于漏洞的详细内容请参考其他文章&#xff0c;最后在 v5.18.19 内核版本上复现成功&#xff0c;v6.0.2 复现失败 漏洞利用 diff --git a/include/linux/skbuff.h b/include/linux/s…

网络安全之密码学技术

文章目录 网络信息安全的概念数据加密|解密概念密码学概论密码学分类古典密码学现代密码学 现代密码学的相关概念对称加密算法对称加密算法—DES对称加密算法—3DES对称加密算法—AES对称加密算法—IDEA 非对称加密算法非对称加密算法—RSA非对称加密算法—ElGamal非对称加密算…

高扬程水泵,提升水源新选择!— 恒峰智慧科技

在炎炎夏日&#xff0c;阳光炙烤着大地&#xff0c;森林火灾的发生频率也随之上升。火势猛烈&#xff0c;烟雾弥漫&#xff0c;给森林带来了极大的破坏。为了保护森林资源&#xff0c;我们必须采取有效的措施来扑灭火灾。而在这其中&#xff0c;高扬程水泵成为了提升水源新选择…

buuctf——web题目练习

1.极客大挑战2019 easysql 密码或者用户输入万能密码即可 关于万能密码的理解和原理&#xff0c;可以参考这篇BUUCTF[极客大挑战 2019] EasySQL 1_[极客大挑战 2019]easysql 1-CSDN博客 2.极客大挑战2019 have fun 题目源码 需要构造payload 网页传参可参考&#xff1a;…

Vue Cli脚手架—安装Nodejs和Vue Cli

一&#xff0c;Vue Cli 文档地址: https://cli.vuejs.org/zh/ 二&#xff0c;.环境配置&#xff0c;搭建项目 1.安装node.js 2.下载 node.js10.16.3 地址: https://nodejs.org/en/blog/release/v10.16.3/ 3.安装 node.js10.16.3 , 直接下一步即可, 安装到 d:\program\nodejs…

ubuntu sudo apt-get install neo4j 配置安装与设置远程访问

文章目录 下载Adding the Debian repositoryInstalling Neo4j安装流程设置远程访问 下载 neo4j 官方的下载地址&#xff0c;进入页面之后&#xff0c;往下滑&#xff1a; https://neo4j.com/deployment-center/#community 点击 Visit https://debian.neo4j.com/ Adding the …

Windows Server Backup设置定时备份保留N天

Windows Server - 运维篇 第四章 Windows Server Backup设置定时备份保留N天 Windows Server - 运维篇系列文章回顾Windows Server Backup设置定时备份保留N天使用VSS卷影复制服务工具删除指定天数的VSS备份文件CMD&#xff1a;wbadmin.exeCMD&#xff1a;wbadmin.mscPowerShel…

【RSGIS数据资源】2018-2020年中国农业大学石羊河实验站主要农作物的无人机观测数据

文章目录 摘要数据介绍2018年蒸腾(T)数据集2020年蒸散发&#xff08;ET)数据集2020年LAI数据集2019年NDVI数据集作物2020年NDVI数据集作物三温模型的输入参数气象数据净辐射通量数据 参考文献引用 摘要 本数据集涵盖了甘肃武威绿洲农业高效用水国家野外科学观测研究站&#xf…

AI系列:大语言模型的RAG(检索增强生成)技术(上)

前言 大型语言模型&#xff08;LLM&#xff09;虽然在生成文本方面表现出色&#xff0c;但仍然存在一些局限性&#xff1a;数据是静态的&#xff0c;而且缺乏垂直细分领域的知识。为了克服这些限制&#xff0c;有时候会进行进一步的模型训练和微调。在实际应用中&#xff0c;我…

教育机构必备利器:全面解析教培管理系统的关键功能

一个优秀的教培管理系统是培训机构实现高效运营和学员满意度的关键所在。那么&#xff0c;这样的系统应该具备哪些功能呢&#xff1f;今天&#xff0c;我们就来了解一下乔拓云平台开发的教育系统&#xff0c;看看它如何满足这些需求。 乔拓云教育系统的后端功能丰富多样&#x…

百度文库公测智能漫画和智能话本,有兴趣的可以申请一下

百度文库上线智能文库和智能话本功能&#xff0c;目前处于公测中&#xff0c;我刚申请&#xff0c;还在审核中。 智能漫画&#xff0c;参照官网的示例截图&#xff0c;生成的图片看起来不错&#xff0c;没试用过所以不太清楚他的操作模式是什么 智能话本&#xff0c;生成的话…

网站建设企业网站优化

近年来&#xff0c;随着互联网的迅速发展&#xff0c;企业网站已经成为了企业展示自我形象与实力的重要载体之一。然而&#xff0c;单单拥有一个美观、简洁的企业网站并不能让企业在竞争激烈的市场中脱颖而出。因此&#xff0c;在建设企业网站的过程中&#xff0c;我们需要将企…

上位机图像处理和嵌入式模块部署(树莓派4b开机界面程序自启动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了如何在树莓派4b上面开发qt&#xff0c;也学习了如何用/etc/rc.local启动控制台程序&#xff0c;那今天我们继续学习一下如何利用树莓…

渗透测试流程(一)

文章目录 1、信息收集渗透测试的流程信息收集的内容信息收集的分类Google hacking 信息收集目录扫描信息收集旁站和C段信息收集旁站和C段在线查询地址&#xff1a; 存活资产探测nmap扫描nmap扫描扫描指定的IP开放端口&#xff1a;穿透防火墙扫描&#xff1a;常用命令--2漏洞扫描…

如何用OceanBase的 Load Data 导入CSV文件

0 前言 CSV文件&#xff08;Comma-Separated Values&#xff0c;字符分隔值&#xff09;是一种普遍采用的数据存储格式&#xff0c;有不少企业和机构都用它来进行数据的管理和存储。身为开发者&#xff0c;您可能经常遇到这样的需求&#xff1a;需要将CSV的数据导入OceanBase数…

python基础知识(17)面向对象 1

一、面向对象的概念 1、面向对象的两个基本概念 编程语言中&#xff0c;一般有两种编程思维&#xff0c;面向过程和面向对象。 面向过程&#xff0c;看重的是解决问题的过程。 这好比我们解决日常生活问题差不多&#xff0c;分析解决问题的步骤&#xff0c;然后一步一步的解决…