
Linux 内核
文章平均质量分 64
内核笔记
rjszcb
不断学习变成牛
展开
-
Linux 系统框架分析(一)
内核的源代码是 modulized 的,允许添加或删除特定功能的模块,以适应不同的需求。内核是一个很厉害的超级逻辑,把硬件底层的东西抽象化,对用户来说只需要调API就好了,根本不需要管寄存器,协议,总线…Linux 内核是操作系统的核心部分,它负责管理系统的资源、进程调度、设备驱动程序等核心功能。对内核结构框图有个总体的把握,有助于理解为什么驱动要这样写,为什么写的应用程序所用的C库接口能够产生这么多的事情。虚拟文件系统(VFS): 提供文件系统的抽象接口,使得不同类型的文件系统可以共享相同的 API。原创 2024-08-09 18:23:30 · 602 阅读 · 0 评论 -
Linux 内核,之优化启动时间
内核启动到最后,就是将文件系统挂载,挂载文件系统后,还需要将文件系统中的服务策划程序或者守护进程启动,这也会消耗一部分的时间,像linux优化一样,我们要找到需要优化的部分,在使用systemd管理文件系统的,我们就可以使用systemdt提供的一个分析工具,就可以很块的得到linux一样的图。这样,就可以根据图示的信息,使用make menuconfig重新配置kernel,该去除的去除,该模块化的模块化,重新编译内核,就可以将linux的启动耗时缩短,使我们的linux启动的时候,明显的快很多。原创 2024-11-10 23:59:07 · 1157 阅读 · 0 评论 -
Linux内核.之 init文件,/init/main.c
想要熟悉内核,看下源码,就非常清晰Linux内核,head.s,汇编启动cpu相关设置后,启动init文件里的,文件在内核的/init/main.c,看下main函数,做了哪些工作// SPDX-License-Identifier: GPL-2.0-only/* * linux/init/main.c * * Copyright (C) 1991, 1992 Linus Torvalds * * GK 2/5/95 - Changed to support mounting原创 2024-11-10 11:46:55 · 460 阅读 · 0 评论 -
Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,Linux的进程管理(二)
前面我讲了,Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,freertos任务管理机制。这篇,大概说下,Linux的进程管理,研究进程管理,对于学会linux是非常重要的。原创 2024-11-04 21:48:59 · 125 阅读 · 0 评论 -
Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,以及移植freertos(一)
有了上面这两张图,是不是,比较清晰了,当发生高优先级事件,中断时,就会发生任务切换,那rtos,要和linux系统一样,可以实现进程,任务的管理,是不是要能获得cpu的管理权,能操控底层的寄存器。玩过arm架构的mcu还是soc,都知道,对进程管理,任务切换,是需要保存现场的(哪个函数被调用函数被执行到哪句代码,执行过程中,计算的局部变量的值),都是需要保存,才能返回的。写这篇文章的目的,是之前面试官,刚好问到我,移植FreeRTOS 到mcu,需要做哪些步骤,当时回答的时候,我愣了一下。原创 2024-11-04 20:27:19 · 830 阅读 · 0 评论 -
FreeRTOS,Linux系统,的调度原理,与区别(一)
Linux 适用于通用计算机系统,如服务器、桌面电脑等,这些系统需要同时运行多个不同类型的程序,包括用户应用程序、系统服务等,对资源的公平分配和多种任务类型的支持要求较高。闲着没事,分享一下,FreeRTOS,与Linux的区别,以及调度的区别,开发过程中,搞Linux就搞Linux,freertos就freertos。两个是不一样的东西。Linux一般用在复杂的系统,决策,文件操作,网络操作,算法等等场景,如安防摄像头,智能汽车。用在实时性要求高的场合,如汽车,我做过的产品有智能手表,行车记录仪。原创 2024-09-21 11:23:35 · 556 阅读 · 0 评论 -
Linux 内核目录结构,编译,及顶层Makefile,Kconfig,.config,子目录kconfig,Makefile,kbuild的关系
lib是库的意思,这里面都是一些公用的有用的库函数,注意这里的库函数和C语言的库函数不一样的。选中我们需要的soc,如三星的s5pv210,hisi的soc,和其他和cpu核心代码相关的代码,这些是设计cpu的厂家,如华为,三星做的事,外部人配置是很麻烦的事,因为很多不开放,我熟悉的代码,只有他们才知道,当他们配置好后,会保存配置到.congfig文件,在内核主根目录下,ls -a命令,可以看到这个文件,这个就是soc厂家配置好的,发布内核时,给我们的,我们一般在此基础上开发我们自己需要的驱动。原创 2021-11-03 15:59:35 · 1091 阅读 · 0 评论 -
Linux,uboot,kernel启动流程,S5PV210芯片的启动流程,DRAM控制器初始化流程
S5PV210内部有 iROM 和 iRAM,因此启动时分两个阶段:内部启动阶段和外部启动阶段。对于内部启动阶段各种S5PV210的开发板都是相同的,对于外部启动阶段,不同开发板会有不同。因为 iROM 可以使 SOC 从各种外设启动,因此可以省下一块 boot rom(专门用来启动的rom,一般是norflash)SoC 中第一启动介质故障而导致不能启动时,可以从备用启动介质启动。如果成功,BL1开始。拷贝BL1后,将复制的BL1的iROM数据求和,并将其与BL1头数据中的校验和数据进行比较。原创 2024-09-22 16:08:07 · 1580 阅读 · 0 评论 -
Linux启动流程,0,1,2进程,init进程,idle进程,内核态到用户态的kernel_execve(一)
api系统调用如,read,open,等等。shell命令也可以如ls,cat,等等。=是,如果定义了,就按Makefile的,如果如下make编译时,就按如下。一生二,二生三,三生万物,生出很好应用程序。运行用户空间的进程1,跟文件下的,init。进程0在用户空间看不到,因为他是内核进程。如果没有linuxrc,就指向下面备用的。进程2就是守护进程,维护内涵运转的。原创 2024-09-21 14:42:22 · 283 阅读 · 0 评论 -
Linux内核.之VFS虚拟文件系统,不同文件系统yfs2,ext4等,读写不同介质(emmc,nand,硬盘)的文件(一)
页缓存(Page Cache)是位于内存和文件之间的缓冲区,它实际上也是一块内存区域,所有的文件IO(包括网络文件)都是直接和页缓存交互,操作系统通过一系列的数据结构,比如inode, address_space, struct page,实现将一个文件映射到页的级别,这些具体数据结构及之间的关系我们暂且不讨论,只需知道页缓存的存在以及它在文件IO中扮演着重要角色,很大一部分程度上,文件读写的优化就是对页缓存使用的优化。硬盘的分区的格式,就可以比作库房是如何记录和摆放货物的方案。原创 2021-06-19 18:35:56 · 6012 阅读 · 1 评论 -
Linux内核.之kobj ,struct file、struct inode、struct file_operations、struct cdev之间的关系
这就达到一个目的,当应用的任何一个操作设备文件的指令,如read(fd) , write(fd)等,都可以通过文件描述符表数组的fd下标对应的元素找到内核 的file_operations结构体指针,这样就可以调用该结构体内对应.read()和.write()的成员函数指针,从而完成实质的对字符设备的读,写操作。在/sys目录下,bus用于存放各类总线,其中总线中会存放挂载在该总线上的驱动和设备,比如serial8250,devices存放了系统中的设备信息,class是针对不同的设备进行分类;原创 2024-08-30 21:03:13 · 189 阅读 · 0 评论 -
Linux 内核态,用户态,以及如何从内核态到用户态,交互方式有哪些
先来回想一下,内核启动时,是如何进入到用户空间的,linux启动最后,会调用start_kernel,这个函数,会调用一个kernel_init,这个就是init进程,所有用户空间的祖宗,所有进程,都是由它而创建,或它的子孙,间接创建,他是个守护进程,不会死掉,除非系统退出。用户空间,通过系统调用,陷入到内核代码工作的空间,比如(fork,pthread,创建进程,线程,read,write,open,打开读写驱动,调用了内核提供的api,就叫系统调用)中断,异常,也是一种方式,我之前忘记了,回来补充。原创 2024-10-13 10:58:26 · 778 阅读 · 0 评论 -
嵌入式linux系统快速启动优化的方法思路
原文链接:https://blog.youkuaiyun.com/weixin_42031299/article/details/128810365。转载 2024-09-22 17:49:11 · 1064 阅读 · 0 评论 -
Linux驱动.之中断系统,裸机下设置寄存器,绑定中断处理函数hander(一)
Linux驱动.之中断,外部中断,内部中断控制器,本篇讲1、arm裸机,轮询的方式,点亮led2、ARM裸机 通过按键,中断的方式,点了led灯,3、单片机,中断的方式4、CPU。裸机,的中断系统一、在开始前,先回顾下51单片机中断,单片机有5个中断,1个uart中断,2个定时器中断,2个外部中断,在发生中断时,单片机内部会自动跳转到hander处理函数,怎么实现的,不知道,是不是硬件自动跳转到中断处理函数的,还是软件查询后,去跳转,找到中断处理函数的。如下,定时器,点了led灯#incl原创 2024-08-09 12:45:37 · 1003 阅读 · 0 评论 -
Linux内核并发同步机制,自旋锁spinlock ,信号量,互斥锁mutex,原子操作,竞争和互斥,内核抢占入临界区,详解(一)
我们要坐火车从南京到新疆,这个’任务’特别的耗时,只能在车上等着车到站,但是我们没有必要一直睁着眼睛等着车到站,最好的情况就是我们上车就直接睡觉,醒来就到站,这样从人(用户)的角度来说,体验是最好的,对比于进程,程序在等待一个耗时的任务的时候,没有必须要占用CPU,可以暂停当前任务使其进入休眠状态,当等待的事件发生之后再由其他任务唤醒,这种场景采用信号量比较合适。由于自旋锁的这个忙等待的特性,注定了它使用场景上的限制 —— 自旋锁不应该被长时间的持有(消耗 CPU 资源),一般应用在中断上下文。原创 2024-08-02 22:38:16 · 294 阅读 · 0 评论 -
Linux驱动.之中断系统.内核框架下,中断的处理request_irq,中断上下文Workqueue、Threaded IRQs、Softirq和Tasklets(三)
https://blog.youkuaiyun.com/suifen_/article/details/135434176?spm=1001.2014.3001.5502原文链接:https://blog.youkuaiyun.com/weixin_55796564/article/details/120129404开篇前workque工作队列是另外一种下半部执行方式,工作队列在进程上下文执行,工作队列将要推后的工作交给一个内核线程去执行,因为工作队列工作在进程上下文,因此工作队列允许睡眠或重新调度。因此如果你要推后的工作可原创 2024-08-08 15:45:47 · 255 阅读 · 0 评论 -
Linux内核,之日志管理,rsyslog,syslog,logrotate的设置,配置
还需要拷贝这样一个二进制文件,可以下载开源代码,编译出来,系统自带的好像。原创 2023-11-23 16:38:55 · 723 阅读 · 0 评论 -
Linux loglevel日志等级设置
最新的操作系统大都已经采用了rsyslog取代syslog,作为新的系统日志程序,rsyslog支持将日志存储到远端的日志服务器中,但这不是本文介绍的重点,本文主要介绍rsyslog的七种级别的日志如何各自记录到指定的文件中。系统支持按不同log输出方式配置不同等级输出,如串行口的输出等级配置为2,则只有0,1等级的Log会输出到串行口,以此类推;如何触发,可参考iptables的LOG操作,该操作默认的级别为4级,也即warning级别。0 debug –有调式信息的,日志信息最多。原创 2023-05-10 16:10:02 · 4837 阅读 · 0 评论 -
linux内核,fs,app ,debug调试手段
追加打印消息到控制台。原创 2023-11-02 15:26:42 · 331 阅读 · 0 评论 -
Linux内核,之proc, sys,sysfs设备模型(bus, device, driver)(一)
由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。该文件指定了可以分配的文件句柄的最大数目。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。如下,可以看到proc,证明proc是个虚伪文件系统,还有debugfs,sysfs,ext3,等这些熟悉的系统。下面是一部分信息,太多了,启动时显示log图片,设置堆栈,设置文件系统,挂载,注册鼠标,键盘,usb驱动等等,原创 2022-11-25 15:45:52 · 1441 阅读 · 0 评论 -
Linux 配置dns覆盖默认127.0.0.53
Linux dns默认127.0.0.53,在/etc/resolve.conf中存在 nameserver 127.0.0.53,手动修改无果,每次重启依旧127.0.0.53,因为这是系统生成的文件,resolvectl命令来查dns的配置。ping www.baidu.com #用ping连接百度验证,成功连接,能够解析域名。如果是自己的dns服务器,就换成公司的,之后查询,已生效。要修改dns,先暂停dns服务,如下操作,#然后重启网络服务器;原创 2023-07-06 10:56:01 · 6940 阅读 · 4 评论 -
问题记录 bug1-系统上电挂载异常分区,df与du命令查看文件使用大小显示不一样
我们分配的block0p1,是给根文件系统用的,kernel启动后,会将/root挂载在这个分区,这样,后面kernel挂载完驱动后,就会去启动第一个进程,并使用/etc下的各种配置文件,对系统进行配置,比如配置网卡ip,配置log日志,并启动各种脚本,各种用户程序。根据这个博主说的,确实解决了问题,所以,这里提一下,为啥会出现这种损坏文件,导致磁盘分区异常的呢,有可能是系统关机过程,正在写文件,突然断电了,就会导致这个文件的损坏,所以一般正常的关机,都会去umount 驱动,挂载文件,原创 2023-05-31 18:35:13 · 1333 阅读 · 0 评论 -
问题记录 bug2-linux磁盘分区/格式化/挂载(二)
linux磁盘分区/格式化/挂载,明天写,原创 2023-05-31 18:38:00 · 85 阅读 · 0 评论 -
问题记录 bug3-linux磁盘分区lsblk与df查看空间大小不一样(三)
问题记录 bug3-linux磁盘分区lsblk与df查看空间大小不一样。原创 2023-05-31 18:39:07 · 1032 阅读 · 0 评论 -
问题记录 bug4-linux网卡初始化失败(四)
系统启动后,网卡设备驱动加载失败,这是个隐蔽的问题,外接Switch,phy,未及时上电,导致初始失败。是mcu控制外接网卡芯片供电,导致的问题。原创 2023-05-31 18:40:31 · 205 阅读 · 0 评论 -
linux内核.之suspend 和resume过程trace debug
原文链接:https://dongka.github.io/2018/12/13/standby/kernel_suspend/原创 2024-10-26 19:59:03 · 159 阅读 · 0 评论 -
Linux内核.之 时间系统、进程管理,进程调度
https://www.cnblogs.com/alantu2018/p/8472028.htmlLinux 时间系统、进程的调度与切换。原创 2024-08-08 16:54:52 · 383 阅读 · 0 评论