![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux操作系统
伶优
coder
展开
-
cpuset流程
https://www.cnblogs.com/lingjiajun/p/12378474.html原创 2022-03-18 10:57:59 · 230 阅读 · 0 评论 -
列出某一CPU上跑的所有进程/线程
ps -eLo pid,psr,command |sed -ne ‘/^\W+[0-9]+\W+2\W+/p’原创 2022-03-18 10:31:17 · 1098 阅读 · 0 评论 -
kernel module静态加载与动态加载区别
一是静态编译连接进内核,在系统启动过程中进行初始化;加载至 initcall6.init 段一是编译成可动态加载的module,通过insmod动态加载重定位到内核。加载至.gnu.linkonce.this_module段这两种方式可以在Makefile中通过obj-y或obj-m选项进行选择。module_init机制...原创 2022-02-07 16:04:13 · 686 阅读 · 0 评论 -
devm_xxx机制
前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收。参考内核文档devres.txt。总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题。这些资源的释放会在device对象销毁时自动释放。devres使用 > 不同的内核模块提供了对应的devm_xxx接口,如下(不仅仅这些): MEM devm_kmalloc() devm_kzalloc() devm_kcalloc() devm_kmalloc_array().原创 2022-02-07 15:42:01 · 402 阅读 · 0 评论 -
linux kernel platform模块的软件架构图
见此图原创 2022-02-07 15:32:11 · 611 阅读 · 0 评论 -
64位内核内存 各段的作用说明
kernel 区域start_kernel->paging_init->map_kernel会将内核镜像的各个段依次映射到该区域 ? !vmalloc 区域之前ARM32可以通过bootargs去控制vmalloc区域的大小,不知道64还有没kasan shadow memorykasan:内存测试,发现use-after-free错误KASAN_SHADOW_START,KASAN影子内存的起始虚拟地址,大小为32TB。为什么是32TB呢?因为KA...原创 2022-01-27 18:11:48 · 525 阅读 · 0 评论 -
select/wait_queue_t/poll_wait/schedule 理解
schedule()...set_current_state(TASK_INTERRUPTIBLE);schedule();...schedule_timeout();// 定时唤醒,若指定时间内有其他wake_up,定时到达时不做wake_up操作在 schedle 函数的执行中,current 进程进入睡眠,而一个新的进程被运行,当下一次当前进程被唤醒并得到执行权时,又接着 schedule 后面的代码运行,schedule函数wait_queue_tDECL.原创 2022-01-24 11:31:04 · 286 阅读 · 0 评论 -
内核参考代码收集
#define call_qop(q, op, args...) \({ \ int err; \ \ log_qop(q, op); \ err = (q)->ops->op ? (q)->ops->op(args) : 0; \ if (!err) \ (q)->cnt_ ## op++; \ err; \})原创 2022-01-17 18:56:09 · 262 阅读 · 0 评论 -
list_entry/list_for_each_entry/list_for_each_entry_safe
list_entry#define list_entry(ptr, type, member) container_of(ptr, type, member)ptr type member 分别表示 指针 / 包含指针类型的结构体类型 / 指针对应的成员contain_of的原理:已知type的成员member的地址ptr,计算type的首地址type的首地址 = ptr – sizecontainer_oftypeof((type *) 0)->member 获取.原创 2022-01-17 18:39:26 · 840 阅读 · 0 评论 -
总线理解-
总线总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比喻。公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。当然,从专业上来说,总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通.原创 2022-01-14 18:42:37 · 4309 阅读 · 0 评论 -
alloc_page/kvmalloc/vmalloc ...区别
kmalloc()函数原型:void *kmalloc(size_t size, gfp_t flags);void kfree(const void *objp);简介:kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。flagsflag功能解释GFP_KERNEL正常分配内存;GFP_ATOMIC分配内存的过程是一个原子.原创 2022-01-14 18:02:24 · 1097 阅读 · 0 评论 -
IO端口与IO内存
一、IO端口与IO内存x86体系和ARM体系的寻址方式是有差别的:在x86下,为了能够满足CPU高速地运行,内存与CPU之间通过北桥相连并通过地址方式访问,而外设通过南桥与CPU相连并通过端口访问。在ARM下也实现了类似的操作,通过两条不同的总线(AHB BUS和APB BUS)来连接不同访问速度的外设。但是它与x86不同,无论是内存还是外设,ARM都是通过地址访问。因为这两种访问方式的不同,linux分出了两种不同的访问操作:以地址方式访问硬件——使用IO内存操作。以端口方式访问硬件——使用I原创 2020-09-07 18:18:29 · 282 阅读 · 0 评论 -
DMA初识
DMA工作流程:注意点:经过cpu的是虚拟地址,而dma传输的是物理地址其实dma传输就是dma控制在两个物理地址之间传输数据dma传输主要调用函数:原创 2021-12-31 15:48:31 · 1093 阅读 · 0 评论 -
fork->copy_process
原创 2021-10-15 11:01:28 · 101 阅读 · 0 评论 -
linux 两个特殊的设备文件
/dev/zero 用于读操作,内核通过这个设备文件向读取它的进程提供无穷无尽的二进制’00000000’ 字节流。在ASCII里,它意味着空字符(Null)。/dev/null 用于写操作,任何写到这个设备文件的数据都会被内核直接丢弃,并且没有任何反馈给写进程...原创 2021-09-16 11:45:37 · 113 阅读 · 0 评论 -
CPU与内存控制器相关知识点科普
QPI、CPU、MC这些名词太专业,还是举例来说吧。有一个科学家(CPU核心)在实验室(CPU)做研究,要看很多很多资料。图书馆有一个管理员(MC,内存控制器)帮科学家从图书馆(内存)拿资料,同时也把他的研究结果放到图书馆里面。因为科学家要看的资料非常多,所以每次去的时候都要开一辆大货车搬资料过去,这辆车叫前端总线(FSB)。除了服务于科学家之外,管理员也服务于统计局(南桥)。统计局通过各种方式和各个企业(硬盘、USB设备、网卡、声卡等等)交换资料,统计局资料不多,开辆摩托车就行(DM..原创 2021-07-07 11:20:45 · 1101 阅读 · 0 评论 -
CPU亲和力
linux多cpu编程,为线程指定cpu,sched_setaffinity和sched_getaffinity的详解与使用,使用time命令得到程序执行时间原创 2021-06-16 17:51:57 · 116 阅读 · 0 评论 -
mmap与shm共享内存区别
mmapshm区别:1、mmap保存到实际硬盘,实际存储并没有反映到主存上。优点:储存量可以很大(多于主存);缺点:进程间读取和写入速度要比主存的要慢。2、shm保存到物理存储器(主存),实际的储存量直接反映到主存上。优点,进程间访问速度(读写)比磁盘要快;缺点,储存量不能非常大(多于主存)3、另外mmap有一个好处是当机器重启,因为mmap把文件保存在磁盘上,这个文件还保存了操作系统同步的映像,所以mmap不会丢失,但是shmget就会丢失。使用上看:如果分配的.原创 2021-06-16 14:46:08 · 566 阅读 · 0 评论 -
linux watchdog
硬件部分:看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog/service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位。防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。流程:进入IO配置——>选择逻辑设备——>设置看门狗配..原创 2021-02-25 16:09:24 · 381 阅读 · 0 评论 -
时钟:ARM Linux系统的时钟机制简单理解
Linux下有两类时钟:实时钟RTC:它由板上电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。系统时钟:“System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读取RTC时间来进行时间同步.标准计时器,时钟滴答计时(jiffies)的几个基本参数:时钟周期(c原创 2021-01-17 18:18:15 · 851 阅读 · 0 评论 -
linux:内核查看log方法收集
1 printk()打印内核消息。2 管理内核内存的daemon(守护进程)Linux系统当中最流行的日志记录器是Sysklogd,Sysklogd 日志记录器由两个守护进程(klogd syslogd)和一个配置文件(syslog.conf)组成。klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.conf 作为配置文件,它负责截获应用程序消息,还可以截获 klogd 向其转发的内核消息。支持 in原创 2020-07-29 10:37:29 · 3192 阅读 · 0 评论 -
linux操作系统:文件目录功能说明
文件目录功能说明原创 2020-10-29 14:44:35 · 101 阅读 · 0 评论 -
linux操作系统:用户态与内核态通信的几种方式
Linux 用户态和内核态由于 CPU 权限的限制,通信并不像想象中的使用进程间通信方式那么简单。Linux 用户态和内核态通信方式:系统调用函数procfs(/proc)sysctl(/proc/sys)sysfs(/sys)netlink 套接口procfs(/proc)procfs 是 进程文件系统 的缩写,它本质上是一个伪文件系统,为什么说是 伪 文件系统呢?因为它不占用外部存储空间,只是占用少量的内存,通常是挂载在 /proc 目录下。我们在该目录下看到的一个文件,原创 2020-10-20 15:46:55 · 2453 阅读 · 0 评论 -
linux操作系统:虚拟内存简介
为什么要使用虚拟内存:内存空间利用率的问题各个进程对内存的使用会导致内存碎片化,当要用malloc分配一块很大的内存空间时,可能会出现虽然有足够多的空闲物理内存,却没有足够大的连续空闲内存这种情况,东一块西一块的内存碎片就被浪费掉了读写内存的安全性问题物理内存本身是不限制访问的,任何地址都可以读写,而现代操作系统需要实现不同的页面具有不同的访问权限,例如只读的数据等等进程间的安全问题各个进程之间没有独立的地址空间,一个进程由于执行错误指令或是恶意代码都可以直接修改其它进程的数据,原创 2020-10-20 14:54:37 · 334 阅读 · 0 评论