目录 用户态 内核态 系统调用接口 设备驱动程序 如何为设备找到对应的驱动程序 驱动链表 字符设备驱动框架 驱动的编译(往期博文Linux内核的编译) 用户态应用程序如何访问内核态框架程序 硬件级 用户态 用户态由用户程序(C代码和调用的C函数库)和函数库(提供应用程序支配内核干活的接口)组成。 通过函数库来访问系统调用接口来支配内核干活,进程间
进程间通讯的7种方式_进程间通信的几种方法-CSDN博客 管道 pipe(命名管道和匿名管道); 信号 signal; 共享内存; 消息队列; 信号量 semaphore; 套接字 socket; 1. 管道 内核提供,单工,自同步机制。 1.1 匿名管道 磁盘上无法看到,只能有亲缘关系的进程才能用匿名管道。一般用于父子
一、目的: 1.搭建Linux操作系统项目所需的项目环境构件;2.了解 Linux的组成,学会编译内核。 二、内容: 安装Red hat 9.0Linux操作系统; 三、步骤: 3.1 正确安装Redhat9.0操作系统。 3.2 rpm -Uvh *.rpm 当安装完linux操作系统后,接下来要安装交叉编译器。启动主机,必须以root用户名登录,在主机的根目录/下,创建linuette目录,如
目录 一、信号 1.1 信号的概念 1.2 signal() 1.3 可重入函数 1.4 信号的响应过程(重点) 1.5 信号相关函数(kill、raise、alarm、pause、abort) 1.6 信号集 二、线程 2.1 线程的概念 2.2 线程的创建、终止,栈的清理 2.3 线程同步(互斥量、条件变量、信号量、读写锁) 2.4 线程属性,线程同步的属性
目录 1. 阻塞和非阻塞 IO 2. IO 多路转接(select、poll、epoll) 3. 存储映射 IO(mmap) 4. 文件锁(fcntl、lockf、flock) 5. 管道实例 - 池类算法 1. 阻塞和非阻塞 IO 阻塞 IO:会等待操作的完成或期待事情的到来。会被信号打断(信号会打断阻塞中的系统调用),若被打断则错误码为 EINTR(假错)。操
一、服务端API介绍1.创建套接字socket()套接字:TCP用主机的IP地址加上主机的端口号作为TCP连接的端点 int socket(int domain, int type, int protocol); 返回一个网络描述符,类似于文件描述符,用于接下来的操作,失败返回-1 参数: int domain:(一般使用AF_INET,互联网协议族) AF_UNIX: Unix域
0. CMake应用示例 之前我们也整理过cmake 引入第三方库(头文件目录、库目录、库文件)。但是这里面整理的内容其实是不全的。所以我们需要进一步将CMake的使用整理好。以供后面的学习的工程师来检索查询。 cmake-template ├── CMakeLists.txt └── build └── include └── src └── main.cpp 1. CMakeLis
虚拟机 VMware16官网下载:vmware官网网盘下载:链接: https://pan.baidu.com/s/1-vWg9VwiHmVXmiQ0IKge1g?pwd=g4jx提取码:g4jx ubuntu系统 ubuntu18. 04官网下载:https://www.ubuntu.org.cn/global网盘下载:ubuntu18. 04 链接:https://pan.baidu.c
0. 简介 我们在之前介绍了使用Valgrind、perf、AddressSanitzer等工具来完成内存泄漏的检测,当然内存泄漏以外还有cpu的占用率变高这类问题。作者在这里提供几个方法来对C++程序中CPU程序占用率高问题排查。 1. pstack堆栈查看 pstack 命令可以监听日志,Linux 系统默认没有这个命令。所以我们需要安装pstack sudo apt install pst
CPU使用率 CPU使用率定义:CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。CPU 使用率是最常用来描述系统CPU 性能的指标。 Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 节拍率 为了维护 CPU 时间,Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间
0. 简介 2012 年,Google 发布了一篇论文:《AddressSanitizer: A Fast Address Sanity Checker》。介绍了一种新的内存检测方法,让上面的问题得到了很大的改进。截止到目前,AddressSanitizer 已经被广泛应用到了各种语言: C、C++、Objective-C、Java 等。以 Google 自己的 benchmark 为参考,开启
观前提醒:本文主要内容为使用Python在局域网内建立TCP连接并传输图片信息,计算机为一块旭日X3和一块英伟达Orin NX。 一、什么是TCP TCP(传输控制协议)是一种可靠的、面向连接的协议,它确保数据包的顺序传输和完整性。当需要确保数据完全无误地传送到目的地时,TCP 是一个不错的选择。在我们的示例中,一台计算机将作为服务器来接收图片,另一台计算机作为客户端来发送图片。 那TCP通信
本篇blog来分析和总结下树莓派系统文件以及他们的作用。使用的系统是Raspberry Pi OS with desktop System: 64-bit Kernel version: 6.1 Debian version: 12 (bookworm) 先看一下顶级目录/root有如下的文件和文件夹 其中, LICENCE.broadcom: 这是 Broadcom 公司的许可证文件,包
程序编译 在linux中,gnu项目提供了gcc编译器、g++编译器和gdb调试器。 C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++语言编写的源代码。 编译过程:预处理、编译、汇编、链接 预处理:将所有的#include头文件、#define标识符替换成文本的真正内容,生成.i预处理文件(预处理之后得到的仍然
为什么需要设备驱动模型内核版本发展2.4版本之前内核没有统一的设备驱动模型,但是可以用(例如先前的led字符设备驱动实验,使用前需要手动调用mknod命令创建设备文件,从而进一步控制硬件)。 2.4~2.6版本内核使用devfs,挂载在/dev目录。需要在内核驱动中创建设备文件(调用devfs_register创建设备文件,无需手动mknod命令,需传入设备文件名),命名过于死板(编译后驱动对应
进程函数简单描述一下关于进程的函数,主要有fork调用、exec调用、exit调用、wait调用和sleep调用。 fork调用 所需头文件 #include <unistd.h> //标准函数库 #include <sys/types.h> //提供系统调用的标志 函数原型 pid_t fork(void); //创建子进程时,复制父进程上下文
现代内核派系宏内核关键功能(基本功能,不可裁剪、扩展)和服务功能(如文件系统、设备驱动、网络服务等,可裁剪、扩展)均在内核空间提供。运行效率高。扩展性较差。system call(系统调用)能够先入内核态来使用内核提供的服务。 微内核 内核空间只提供关键功能,服务功能在用户空间提供。运行效率较低。安全性、扩展性较高。 在Linux内核源码中有超过50%的代码都与设备驱动相关。Li
屏蔽驱动打印信息 root权限:echo “1 4 1 7” > /proc/sys/kernel/printk sudo sh -c “sudo echo “1 4 1 7” > /proc/sys/kernel/printk 实现触摸屏校验第一次进入Linux系统时,会出现触摸校验提示,按提示校准5个点就可以了。如果想重新校验,需进入root权限执行操作。rm /etc/
设计字符设备文件系统调用系统IO的内核处理过程inode索引节点是文件系统中的一种数据结构,用于存储文件的元数据信息,包括文件的大小、访问权限、创建时间、修改时间等。每个文件在文件系统中都对应着一个唯一的inode节点,通过inode节点可以查找到文件的实际数据块的位置。inode节点通常存储在磁盘的inode表中,文件系统通过inode号来访问和管理文件。file_operation结构体是函数
cp指令的作用:将原文件的内容复制到目标文件中 在编写函数前介绍一下int main() 函数的原型: argc 是Linux使用gcc编译时传的参数个数,argv 是指向指针数组(数组元素都为指针)的指针,类似于二级指针,如下图,我们一般使用第一种的表示方法,这样更有利于告诉阅读代码的人,这是一个指向指针数组的指针,而不单纯是一个指针。 向main()函数传入三个参数:执行文件 m
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信