Linux学习
文章平均质量分 70
胡涂涂~
这个作者很懒,什么都没留下…
展开
-
Vim的字符编码设置(不要整虚的,直接上操作)
在根目录下建立 .vimrc文件。2、在文件中添加内容如下。原创 2022-08-26 20:14:36 · 1006 阅读 · 0 评论 -
linux中线程和进程的区别深度剖析底层实现
文章目录前言Linux中进程和线程的共性Linux中进程的创建Linux中线程的实现总结前言在没有仔细了解过Linux的进程和线程实现机制之前,看过很多关于进程和线程的博客,从这些博客中我大概知道进程和线程的区别1、进程拥有独立的内存空间,因此进程与进程之间相对独立,互不影响,但缺点进程间的通信相对复杂2、同一进程的线程共享进程的内存和资源(线程有自己的私有空间),因此同一进程下的线程之间的通信很方便,缺点是一个线程的出问题会影响到同一进程下的其他线程看完这些关于进程和线程的博客后,我有一些疑惑如原创 2022-05-10 20:57:37 · 1381 阅读 · 0 评论 -
嵌入式wed服务器Boa到底是啥?
前言因为以前没有接触过web服务器,看了网上的教程,虽然能够搭建好boa的运行环境,但我对于web服务器在嵌入式领域起到的作用还是感到模糊,总感觉差点意思,其他的博客没法为我解惑,查阅资料,我想我知道了答案正文什么是web服务器 通俗的讲,web服务器的服务对象是浏览器,Web服务器传送(serves)页面使浏览器可以浏览,Web服务器专门处理HTTP请求(request)(我们在浏览器上输入一个http开头地址,就是一个访问web服务器的过程),而Boa就是一个典型的嵌入式web服务器为啥在原创 2022-03-19 19:49:24 · 2243 阅读 · 0 评论 -
mjpg_streamer的源码学习(详解)
源码阅读顺序mjpg_streamer/mjpg_streamer.c ->int main(int argc, char argv[])mjpg_streamer/plugins/input_uvc.c ->input_init() ->intput_run() *->cam_thread()mjpg-streamer\plugins\out原创 2022-03-14 21:22:19 · 2884 阅读 · 0 评论 -
linux信号量配合共享内存应用分析(详解)
共享内存与信号量共享内存,指的是两个不相关的进程访问同一个逻辑内存,进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。如果我们不允许两个进程同时对共享内存进行读写操作,光靠共享内存的机制是做不到的。共享内存并未提供同步机制,也就是说,在第一个进程结束对共享内存的写操作之前,并无自动机制可以阻止第二个进程开始对它进行读取,所以我们通常需要用其他的机制来同步对共享内存的访问,例如原创 2022-03-12 15:48:34 · 2040 阅读 · 2 评论 -
linux线程中互斥锁和条件变量的使用(详解)
互斥锁pthread_mutex_t在linux中,互斥锁的出现是为了限制多个线程同时对临界资源区进行访问。通过互斥锁对临界资源区进行保护,只有拥有锁的线程才可以访问临界区,没有的锁的线程如果要访问临界区则需要等到锁的释放后,竞争到锁的拥有权后,才能进入临界区。 但这里会出现一个问题:单纯加锁也会导致一直是一个线程访问临界资源的问题,个别线程竞争力很强,可能会一直占据锁的使用权,导致其他线程的无法进入临界区。 这就需要引入另一个机制 条件变量条件变量pthread_cond_t条件变量被用于线程原创 2022-03-10 20:03:51 · 1607 阅读 · 0 评论 -
linux嵌入式项目之安防监控一(详解)
实现的功能系统运行环境软件配置开发平台: Ubuntu14.04 vs2012 vs2017开发环境: linux3.14.0、uboot2013.01、gcc4.6.4 通信协议: 串口、ZigBee、http协议等 数据库 : sqlite3硬件配置处理器:Cortex-A9(Exynos4412)开发板 (开发板上自带DHT11温湿度传感器,USB摄像头等数据采集装置,所以暂时可以不考虑远端的数据采集,将开发板采集的数据上传的应用层)原创 2022-05-15 22:17:51 · 2040 阅读 · 1 评论 -
linux进程间通信之消息队列底层源码分析(详解)
前言本篇博客所涉及到的linux源码来自linux2.6,通过从应用->底层实现来分析分析整个消息队列是如何搭建的应用层首先我来看看消息队列是如何应用,因为应用层反应的是整个消息队列大概逻辑,有利于我们对于底层代码的理解1、首先什么是消息队列?消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即ID)来标识。(那我们思绪扩展一下,如果进程创建了很多的消息队列,每一个消息队列都对应着一个标识符。如果我们想通过标识符找到相应队列,那进程中是不是应该要有一个类似于数组的结构将标识符原创 2022-03-06 21:01:34 · 1964 阅读 · 0 评论 -
linux中 man 函数的使用
man手册:man 1,用户命令手册man 2,Linux内核系统调用手册man 3,标准库函数手册man 1 pwd ---------用户命令手册NAMEpwd - print name of current/working directorypwd [OPTION]…man 2 exit ----Linux内核系统调用手册_EXIT(2) Linux Programmer’s ManualNAME_exit, _Exit - terminate原创 2022-03-03 11:53:23 · 646 阅读 · 0 评论 -
linux之虚拟文件系统源码分析(详解)
文章目录前言基础知识VFS的数据结构正篇前言 虚拟文件系统是一个很庞大的架构,如果要分析的面面俱到,会显得特别复杂而笨拙,让人看着看着,就不知所云了(当然主要还是笔者太菜),所以这篇博客,以open() 函数为切入点,来试着分析分析VFS文件系统的运转机理,本文的代码来源于 linux3.4.2基础知识首先我们来看一张图 从这张图中,我们可以看出,系统调用函数并不是直接操作真正的文件系统,而是通过一层中间层,也就是我们说的虚拟文件系统,为什么要有虚拟文件原创 2022-02-28 20:50:23 · 2264 阅读 · 0 评论 -
linux之根文件系统
前言1、板卡上电后首先由UBOOT启动初始化板卡,将Linux内核移到内存中运行2、由linux内核自行做了初始化等操作,挂在了第一个应用程序上(根文件系统/linuxrc)3、根文件系统会提供磁盘管理服务,glibc设备节点,配置文件,应用程序shell(Android就是一个Linux多了个文件系统)文件系统的重要组成宏观: 1、标准库,glibc, OpenGL,media,Framework 2、配置文件 /etc/init.d/rcS 想要开机运行什么软件,载入什么画面原创 2022-02-27 08:12:51 · 2182 阅读 · 0 评论 -
一般而言嵌入式系统的启动思路详解
前言看了一些教程,总感觉没头没尾,让我有一种知其然而不知其所以然的模糊的感觉,于是在看完不少资料后结合自己的感悟写下了这篇博客不少人,都从uboot阶段开始介绍嵌入式系统的启动,然而uboot之前呢?是不是应该要有一个环境的准备?又或者说,没有操作系统的嵌入式系统是如何启动的?首先上电以后芯片会在固化好的一个地址寻找第一个启动程序(在有操作系统的时候,这个引导程序也叫做bootloader),完成初始化工作,然后转跳到预定的一个地址来执行裸机程序(没有的操作系统嵌入式系统到这儿就算是启动成功)或者UB原创 2021-11-10 21:08:54 · 1051 阅读 · 0 评论 -
嵌入式面试,堆和栈的区别
1、存储内容不同栈:在函数调用时,栈中存放的是函数中(最底下是函数调用后的下一条指令)的各个参数(局部变量)。堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员分配。2、管理方式上不同栈:由系统自动分配并释放空间。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间,当对应的生存周期结束后栈空间被自动释放。堆:需要程序员指定大小手动申请和手动释放,在C语言中使用malloc函数申请,使用free函数释放。3、空间大小不同栈:获取空间较小。在Windows下原创 2021-10-30 16:33:46 · 1108 阅读 · 0 评论 -
嵌入式中进程和线程的区别(详解)
区别1、进程是资源分配的最小单位。2、线程是程序执行的最小单位,也是处理器调度的基本单位,但进程不是,两者均可并发执行。3、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据,使用相同的地址空间,因此,CPU切换一个线程的花费远比进程小很多,同时创建一个线程的开销也比进程小很多。4、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过原创 2021-10-30 16:23:55 · 1074 阅读 · 0 评论 -
ubantu使用过程中常见错误集合
apt-get进程被占用,当更新软件或许下载依赖包时,出现错误错误:/*E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?*/问题的原因在于其它的程序如系统的自动更新、新立得等正在使用apt-ge原创 2021-09-12 15:28:26 · 139 阅读 · 0 评论 -
Linux之Ubuntu学习记录 一
Linux之Ubuntu学习记录 一Shell 的一些常见命令文件操作与用户权限切换软件配置与更新Vim文本编辑器常用命令功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Shell 的一些常见命令文件操作与用户权限切换“ls”原创 2021-06-06 14:20:05 · 199 阅读 · 0 评论