- 博客(8)
- 收藏
- 关注
原创 Linux scheduler 调度器(二)
2,如果该任务没有被boost,那么该有效优先级prio 的值就是normal_prio,如果该任务被boost了,那么该有效优先级的值就是boost后的优先级,对应的调度器和就绪队列也是boost后的优先级对应的调度器和就绪队列。1,有效优先级 effective prio,即最终决定该任务被执行的先后顺序的优先级,主调度器会根据该有效优先级prio 的值来为该任务分配对应的调度器和该调度器对应的就绪队列;该子调度器对应的各个任务会被按照自己的优先级分配对应的时间片,优先级越高的任务运行的时间越长。
2024-02-06 22:05:12
964
1
原创 Linux scheduler 调度器 (一)
stop 调度器是优先级最高的调度器,stop调度器只供内核使用,该调度器只调度一个内核任务,即migration线程,其他任务不能把自己的调度器设置为stop,该调度器通过migration线程实现任务迁移、负载均衡、cpu热插拔等紧急任务。不同的特性的任务需要通过不同的调度策略来调度,各个任务需要根据自己的任务特性来设置对应的调度策略,从而也就选择了对应的调度器来调度该任务。属于非实时调度策略,优先级最低的任务,比 nice 19 的普通任务的优先级还低,相当于 nice 20的普通任务。
2024-02-06 21:55:25
1760
1
原创 并发、同步、竞争
(Logical Control Flow) 由于操作系统抽象出了进程的概念,即系统中的各个进程都仿佛在独占CPU和存储器,仿佛进程自己的指令被处理器不间断的执行,所以一个进程运行时的一系列的PC值就是一个逻辑控制流。由于操作系统中有多个逻辑控制流在同时运行,或以不确定的顺序运行,所以我们需要使用同步机制来确保程序按照我们预期的逻辑运行。如上所示,进程A和B是并发运行,进程A和C是并发运行,但是进程B和C不是并发运行,因为进程C运行的时候,进程B已经退出了,他们在时间轴上没有重叠。
2024-01-28 22:23:39
393
原创 crash常用命令讲解
crash工具是redhat公司的提供的一个开源的内核分析工具,它是在gdb的基础上实现了解析内核的功能,比如查看各个线程的内核栈、各任务的状态、内存的使用情况、中断的统计计数等等,我们可以根据当前内核里的数据来分析一些偶现的稳定性问题。
2024-01-24 23:04:35
1531
原创 通过qemu和crash分析崩溃内核
通过qemu arm64模拟器跑linux内核,并让内核触发panic,然后通过qemu导出内核的dump文件,最后用crash工具分析内核的dump文件,定位内核奔溃的原因。
2024-01-21 14:36:37
1531
原创 搭建qemu运行arm64 Linux环境
修改完mk_initrd.sh 脚本后,我们先创建一个make_initrd目录,并把 mk_initrd.sh 脚本拷贝到该目录下,由于在ubuntu下做mount和umount操作需要sudo权限,所以在执行mk_initrd.sh脚本前需要先在终端进入sudo权限,然后再执行该 mk_initrd.sh 脚本生成initrd.ext4镜像,命令和日志如下:。然后通过qemu.sh脚本来让模拟器运行linux内核,对应的命令和日志如下:。
2024-01-21 12:50:01
2450
1
原创 获取Linux内核源码
在嵌入式平台上做Linux开发的时候,我们用的kernel都是芯片厂家移植到自家平台上的,但是最初的原生Linux内核的源码是从哪里来的呢?下面我们介绍一下怎么获取原生的Linux源码。Linux社区的官方网站是https://kernel.org/ ,页面如下:可以看到当前Linux内核的主线的版本是6.3-rc3,社区会长期维护的longterm版本有6.12.0、 5.15.103等等。
2024-01-20 22:50:30
632
原创 VMware Workstation安装Ubuntu-22.04虚拟机
在日常工作或学习过程中,经常需要在Linux环境下做项目开发,比如代码编写、编译、运行测试等。常见的Linux的发行版有Ubuntu、redhat、centOS等等,开发者可以根据自己的喜好选择自己喜欢的发行版来做开发,比如现在比较流行的Ubuntu系统,它安装工具比较方便,用的开发者也比较多。这里我们详细介绍下怎么通过VMware Workstation来创建一个Ubuntu系统的虚拟机。
2024-01-20 22:40:31
1086
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人