Linux第十五章

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

❤️‍🔥专栏系列:线性代数,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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统思考—企业辅导咨询

从2004年、2014年到2024年&#xff0c;国九条政策的发布与变迁不仅影响了行业趋势&#xff0c;更深刻地改变了企业的风险预估和策略辅导。彼得杜鲁克曾经说过&#xff1a;“必须系统地抛弃旧知识。”这不仅是企业领导者的挑战&#xff0c;也是我们每个人的难题。难点不在于我们…

GITEE 基于OAuth2的API V5版本

为了构建更好的码云生态环境&#xff0c;我们推出了基于OAuth2的API V5版本。 API V5接口使用方式以及Url都参照GitHub&#xff0c;为了各位开发者更好的兼容已经存在的第三方应用。 API 使用条款 OSCHINA 用户是资源的拥有者&#xff0c;需尊重和保护用户的权益。不能在应用…

Spring AI 抢先体验,5 分钟玩转 Java AI 应用开发

作者&#xff1a;刘军 Spring AI 是 Spring 官方社区项目&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。 Spring Cloud Alibaba AI 以 Spring AI 为基础&#xff0c;并在此基础上提供阿里云通义系列大模…

XY_RE复现(二)

一&#xff0c;何须相思煮余年 0x55 0x8b 0xec 0x81 0xec 0xa8 0x0 0x0 0x0 0xa1 0x0 0x40 0x41 0x0 0x33 0xc5 0x89 0x45 0xfc 0x68 0x9c 0x0 0x0 0x0 0x6a 0x0 0x8d 0x85 0x60 0xff 0xff 0xff 0x50 0xe8 0x7a 0xc 0x0 0x0 0x83 0xc4…

编译Qt6.5.3LTS版本(Mac/Windows)的mysql驱动(附带编译后的全部文件)

文章目录 0 背景1 编译过程2 福利参考 0 背景 因为项目要用到对MYSQL数据库操作&#xff0c;所以需要连接到MYSQL数据库。但是连接需要MYSQL驱动&#xff0c;但是Qt本身不自带MYSQL驱动&#xff0c;需要自行编译。网上有很多qt之前版本的mysql驱动&#xff0c;但是没有找到qt6…

SiO2杂化纳米纤维膜

SiO2杂化纳米纤维膜是一种结合了二氧化硅&#xff08;SiO2&#xff09;纳米颗粒和其他材料&#xff08;如聚合物&#xff09;的复合纳米纤维膜。这种膜材料结合了SiO2的良好性能&#xff08;如高硬度、高耐磨性、热稳定性等&#xff09;和其他材料的特性&#xff08;如柔韧性、…

【XR806开发板试用】基于XR806实现智能小车

一、实验功能&#xff1a; 1、 基于XR806实现WIFI连接路由器 2、 XR806设备创建TCP socket服务器&#xff0c;局域网内通过PC端TCP客服端连接XR806 TCP服务器进行指令控制小车运行&#xff08;指令&#xff21;&#xff1a;前进、&#xff22;&#xff1a;后退、&#xff23;&…

等保测评有那些流程?为什么要做等保

根据《网络安全法》规定&#xff0c;网络运营者应当按照国家的网络安全技术标准和要求&#xff0c;采取技术措施保障网络安全&#xff0c;避免网络安全事件的发生。而等保测评是国家对企事业单位进行信息系统安全等级评定的一项重要制度&#xff0c;通过等级测评&#xff0c;可…

五一出去玩,随身WiFi纽曼和格行,哪个更值得选择?2024随身WiFi大流量全国通用,2024随身WiFi推荐第一名

临近五一&#xff0c;有太多的朋友需要出去游玩&#xff0c;但是会面临网络差&#xff0c;流量不够用等问题&#xff0c;从而选择随身WiFi。那么有非常多的朋友就纠结了&#xff0c;作为老牌企业的格行和纽曼到底选择哪个呢&#xff1f;下面我们将会从网速、续航、售后、客户评…

鸿蒙OpenHarmony【标准系统 烧录】(基于RK3568开发板)

烧录 烧录是指将编译后的程序文件下载到芯片开发板上的动作&#xff0c;为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能&#xff0c;操作简单&#xff0c;能快捷、高效的完成程序烧录&#xff0c;提升烧录的效率。 RK3568的镜像烧录通过Windows环境进行烧录&…

齐鲁制药集团李伯涛:40年不忘初心,助推企业高质量发展

一个成功的企业&#xff0c;离不开一个思想超前的优秀引领者&#xff0c;齐鲁制药亦是如此。在过去几十年的发展中&#xff0c;在董事长李伯涛的带领下&#xff0c;齐鲁制药研发出一系列领先的药品&#xff0c;不断占据国内、国际医药市场&#xff0c;逐渐成长为具有国际影响力…

Qt QLineEdit详解

1.简介 QLineEdit是一个单行文本编辑器。 行编辑允许用户使用一组有用的编辑功能输入和编辑单行纯文本&#xff0c;包括撤消和重做、剪切和粘贴以及拖放。 通过更改行编辑的echoMode&#xff0c;它也可以用作“只写”字段&#xff0c;用于密码等输入。 文本的长度可以限制为ma…

Web 服务器解析漏洞 原理以及修复方法

漏洞名称 &#xff1a;Web服务器解析漏洞 漏洞描述&#xff1a; 服务器相关中间件存在一些解析漏洞&#xff0c;攻击者可通过上传一定格式的文件&#xff0c;被服务器的中间件进行了解析&#xff0c;这样就对系统造成一定危害。常见的服务器解析漏洞涉及的中间件有IIS&#x…

详解CCF-CSP 202312-3 树上搜索

详解CCF-CSP 202312-3 树上搜索 原题连接 202312-3 树上搜索 代码及详细注释 //一个树形结构的处理程序&#xff0c;主要用于处理一些权重相关的查询 #include <iostream> #include <vector> #include <set>//定义全局变量 //好处&#xff1a; //&#…

《DiffusionNER: Boundary Diffusion for Named Entity Recognition》

Submitted 22 May, 2023; originally announced May 2023. Comments: Accepted to ACL 2023, submission version https://github.com/tricktreat/DiffusionNER 在这里插入图片描述 问题&#xff1a; 命名实体识别任务中存在的噪声跨度&#xff08;边界不清晰&#xff09…

MS17-010---利用“永恒之蓝”漏洞攻击 win7主机

免责声明:本文仅做技术交流与学习.... 目录 一.前置知识 1.何为永恒之蓝&#xff1f; 2.什么是SMB协议&#xff1f; 3.SMB工作原理是什么&#xff1f; 二、实验环境 三、实验步骤 nmap扫描 msf一把梭哈 shell执行命令 远程连接 一&#xff0e; 二&#xff0e; 一.前…

数字化转型新篇章:企业通往智能化的新范式

早在十多年前&#xff0c;一些具有前瞻视野的企业以实现“数字化”为目标启动转型实践。但时至今日&#xff0c;可以说尚无几家企业能够在真正意义上实现“数字化”。 在实现“数字化”的征途上&#xff0c;人们发现&#xff0c;努力愈进&#xff0c;仿佛终点愈远。究其原因&a…

大象机器人开源协作机械臂myCobot 630 全面升级!

1. 开篇概述 在快速发展的机器人技术领域中&#xff0c;Elephant Robotics的myCobot 600已经证明了其在教育、科研和轻工业领域的显著适用性。作为一款具备六自由度的机械臂&#xff0c;myCobot 600以其600mm的工作半径和2kg的末端负载能力&#xff0c;满足了多样化的操作需求。…

VUE的生命周期图和各函数

函数 beforeCreate(){ }, created(){ }, beforeMount(){ }, mounted(){ }, beforeUpdate(){ }, updated(){ }, beforeDestroy(){ }, destroyed(){ } 创建时生命周期图 运行时生命周期图

Java---数据类型与变量

1.字面常量 字面常量就是我们经常所说的常量&#xff0c;常量即在程序运行期间&#xff0c;固定不变的量。且常量是无法改变的&#xff0c;如果我们的代码有改变常量的操作&#xff0c;程序就会报错。 1.1字面常量的分类 字符串常量&#xff0c;整型常量&#xff0c;浮点数常…