linux系统
文章平均质量分 86
拉玛西亚影视学院的奥斯卡影帝
拉玛西亚影视学院的奥斯卡影帝
展开
-
Linux线程同步(二)---互斥锁实现线程同步
一 why先给自己打个广告,本人的微信公众号:嵌入式Linux江湖,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题。在博客《Linux线程同步(一)—“初识篇”》中,介绍了为什么需要线程同步,从本篇博客开始介绍如何实现线程同步,本篇主要介绍的是互斥锁实现线程同步。二 how互斥锁:只能被一个线程拥有,比如线程A拥有了这把锁,其他线程都无法拥有这把锁。只有获得这把锁的线程才可以访问临界区,其他没有获得这把锁的线程都无法访问临界区原创 2021-09-05 22:34:46 · 417 阅读 · 0 评论 -
linux进程间通信(七)---信号通信
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why在之前的博文《linux进程间通信(一)----初识篇》中,我们知道了进程间通信主要分为三大类,分别是管道通信,信号通信,以及IPC通信;进程间通信主要是为了不同进程之间的数据共享,信号通信也不例外。二 what...原创 2020-04-10 08:42:05 · 281 阅读 · 0 评论 -
linux进程间通信(六)----IPC篇----信号灯概念以及实现进程间通信
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 whylinux进程间IPC通信方式有三种,分别是共享内存、消息队列,以及信号灯。它们都存在于内核空间,之前我们已经探讨过共享内存以及消息队列的实现方式:linux进程间通信(五)----IPC篇----...原创 2020-04-12 12:01:42 · 399 阅读 · 0 评论 -
linux进程间通信(六)----消息队列篇
一 what消息队列也是进程间通信的一种通信方式,在内核中创建一个消息队列对象,不同的进程中,通过msgid来访问这个消息队列实现进程间通信 |---| |---| | A | | B | |---| |---|------------------------------------ |--...原创 2019-12-22 12:55:11 · 183 阅读 · 0 评论 -
linux进程间通信(五)----IPC篇----共享内存实现进程间通信
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what在《linux进程间通信(四)----IPC篇----共享内存初识篇》文章中,我们知道了共享内存是什么,通过几个常用的函数shmget、ftok、shmat、shmdt、shmctl,了解了如何创建共...原创 2019-12-08 11:52:01 · 308 阅读 · 0 评论 -
linux进程间通信(四)----IPC篇----共享内存初识篇
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what所谓共享内存通信,实际上就是在内核空间中有一个缓存数组,用于不同用户寂进程间实现通信。共享内存是一种IPC通信对象,其他IPC通信对象还有消息队列以及信号灯,其处理思想和文件IO思想也是一样的,也是...原创 2019-12-01 11:41:31 · 360 阅读 · 0 评论 -
linux进程间通信(三)----管道篇----有名管道
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 what前面一篇文章《linux进程间通信(二)—管道篇----无名管道》,我们谈到了无名管道,今天这篇文章我们来谈谈有名管道。所谓有名管道,顾名思义,就是在内核中存在一个文件名,表明这是一个管道文件。在...原创 2019-11-24 11:12:28 · 378 阅读 · 0 评论 -
linux进程间通信(二)---管道篇----无名管道
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 基础知识我们一般使用fork函数创建一个子进程,进程之间的区别是PID号不一样,两个进程之间如果需要有数据交互,则称为进程间通信。二 如何通信2.1 对于进程A和进程B来说,从用户空间看,两个进程相当于两...原创 2019-11-21 22:27:17 · 221 阅读 · 0 评论 -
linux进程间通信(一)----初识篇
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 前言因为本篇是初识linux进程,也就意味着我们目前还不是很了解linux进程,所以本文主要以一些通俗易懂的比喻和一些个人浅薄的认识谈谈linux进程,后续随着自己知识点的提高,会不定期更新本文。既然说是初...原创 2019-11-23 09:54:50 · 196 阅读 · 0 评论 -
linux基本概念(四)----线程编程
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why在本系列的第一篇博文《linux基本概念(一)----进程和线程》中,我们谈到了线程,它是如何诞生,和进程之间的区别,以及什么时候需要线程的。在我们很多实际项目中,完成某一项工作并不需要多进程的方式,因为进程会消耗...原创 2020-04-10 08:29:02 · 193 阅读 · 0 评论 -
linux基本概念(三)----进程编程
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why我们要学习进程编程呢?在我们实际的项目开发过程中,一个实际的软件项目肯定要实现各种不同的功能,这些功能放在一个进程中实现肯定是不现实的,这样会造成项目十分冗余和繁杂,不适合项目的维护,也不适合项目的后续框架升级。因...原创 2020-04-08 07:41:38 · 194 阅读 · 0 评论 -
linux基本概念(二)----进程操作常用命令
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题(1)查看进程的状态以及信息1. ps 查看系统进程快照ps -ef ps -ef | moreps aux : 除了ef的功能外,还可以显示进程的状态2. top 查看进程动态信息主要可以看到各个...原创 2020-04-06 15:56:24 · 224 阅读 · 0 评论 -
linux基本概念(一)----进程和线程
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why今天这篇文章主要以基本概念为主,没有相关的源码,可能看起来比较抽象和枯燥,但是我还是建议大家认真读一读这个文章,在读的过程中多思考文章中提出的相关问题,这个对我们打好基础至关重要,我们不能只停留在编写代码实现功能的层...原创 2020-04-05 12:12:07 · 250 阅读 · 0 评论 -
linux内核模块编程(八)----中断下半部workqueue之使用
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前一篇博文中, 我们介绍了中断下半部以及tasklet的实现方式,同时我们知道除了tasklet可以实现中断下半部处理之外,workqueue也可以实现中断下半部处理。那么为什么还需要workqueue呢?workq...原创 2020-03-30 21:25:04 · 353 阅读 · 0 评论 -
linux内核模块编程(七)----中断下半部之tasklet
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前面的博文中,我们已经讨论过了中断,以及中断的实现方式。那么何为中断下半部呢?既然有下半部,那肯定有上半部,那么上半部又是什么意思?我们知道,当发生中断时,CPU会被抢断,当前正在执行的线程会被打断,CPU会跳转到...原创 2020-03-30 09:18:51 · 256 阅读 · 0 评论 -
linux内核模块编程(六)----字符设备驱动&中断开发
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why字符设备驱动在我们之前的博文中都已经有过比较详细的介绍了,为什么需要带上一个中断开发呢?我们知道CPU获取外设的数据有两种方式,一种是CPU主动去轮询外设,另一种就是外设通过中断的方式异步地将自己的数据上报给CPU。...原创 2020-03-29 21:51:17 · 536 阅读 · 0 评论 -
linux内核模块编程(五)----应用程序调用字符设备驱动
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why字符设备驱动既然不能单独执行,那么他们存在的意义是什么呢?当然是应用程序提供相应的接口API,使其能够控制硬件或者能够访问内核空间的内容。本文主要以内核空间和应用程序之间的数据交互为例,谈谈如何实现两者之间的数据交...原创 2020-03-29 16:38:48 · 497 阅读 · 0 评论 -
linux内核模块编程(四)----字符设备驱动开发几个关键函数分析
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why前一篇博客《linux内核模块编程(三)----字符驱动设备开发》,我们初步实现了一个linux内核字符设备驱动,主要是为了大家参照该驱动程序源码,学会如何进行字符设备驱动开发,不知道大家是否成功在自己的本地运行起来...原创 2020-03-28 20:36:34 · 339 阅读 · 0 评论 -
linux内核模块编程(三)----字符驱动设备开发
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 前言在正式开始今天的文章之前,先谈谈个人学习linux开发中的心得,将自己学习过程中遇到的问题呈现到大家面前,以便给大家一些启发,让大家少走一些弯路。之前我学习linux开发的过程,基本是沿用自己学习单片机开发的路径来的...原创 2020-03-25 21:45:50 · 408 阅读 · 0 评论 -
linux内核模块编程(二)----timer定时器
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why一般地,在我们嵌入式软件开发中,使用定时器的目的是为了实现周期性地执行某项工作;同样地,linux内核也实现了一种定时器,用于实现内核周期性执行某项工作。二 whatlinux内核实现的这种定时器,称之为动态定时...原创 2020-03-23 08:56:47 · 4918 阅读 · 2 评论 -
linux内核模块编程
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 what**1. 什么是linux内核模块编程?内核模块是具有独立功能的程序,它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在kerne space中运行。模块编程和...原创 2020-03-17 08:43:23 · 577 阅读 · 0 评论 -
linux多路IO--epoll(一)--水平触发和边沿触发
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**考虑这样一种场景,假设某个文件描述符发生了可读事件,一次可读的文件大小为1000Bytes,但是呢,实际上我们每次只会从这个文件描述符中读取500 Bytes;显然这个时候,该文件中还会剩下...原创 2020-02-20 13:21:14 · 750 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(八)---多路IO转接服务器实现一个server对应多个client---epoll反应堆实现
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(七)—多路IO转接服务器实现一个server对应多个client—epoll实现》中,我们使用epoll机制来实现一个server...原创 2020-03-01 17:12:00 · 310 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(七)---多路IO转接服务器实现一个server对应多个client---epoll实现
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(五)—多路IO转接服务器实现一个server对应多个client—poll实现》,我们介绍了多路IO转接服务器之poll方式实现,...原创 2020-02-19 22:19:58 · 346 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(六)---线程池原理及C语言实现线程池
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题一 why先谈谈为什么会有这篇博客,如果只是为了介绍线程池,我相信大家都有相关概念,或者去各大技术博客上也能搜到相关知识。那在这里我为什么还要谈谈线程池的知识呢?在前面的博客《linux进程间通信—本地sock...原创 2020-02-18 12:25:51 · 674 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(五)---多路IO转接服务器实现一个server对应多个client---poll实现
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题**一 why**在前面的博客《linux进程间通信—本地socket套接字(四)—多路IO转接服务器实现一个server对应多个client》中,我们使用了多路IO转接实现了一个server对应多个clie...原创 2020-02-16 19:18:56 · 278 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(四)---多路IO转接服务器实现一个server对应多个client
一 why在前面的博客《linux进程间通信—本地socket套接字(三)—多线程实现一个server对应多个client》以及《linux进程间通信—本地socket套接字(二)—多进程程实现一个server对应多个client》中,我们采取的方式都是在server端的应用程序中,调用accept函数阻塞等待客户端的连接。这样做,有什么缺点呢?由于accept函数会发生阻塞,导致server...原创 2020-01-10 23:02:03 · 471 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(三)---多线程实现一个server对应多个client
yi#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>#i...原创 2020-01-02 18:29:01 · 1401 阅读 · 0 评论 -
linux进程间通信---本地socket套接字(二)---多进程实现一个server对应多个client
**一 why**一般地,我们会遇到这样一个场景,一个server需要同时并发地处理多个client的连接以及数据交互。**二 what**一个server对应多个client的连接场景如下:实现原理对于父进程server.c来说父进程server.c用来监听每一个client,只实现accept的动作每次server.c父进程检测到一个新的client时,就会创建一个新...原创 2020-01-02 08:50:34 · 1354 阅读 · 2 评论 -
linux进程间通信---本地socket套接字(一)---一个server对应一个client
**一 what**socket套接字也是一种文件格式,只是和管道文件一样,它是一种伪文件,存在于内核的缓冲区中,大小不变,一直是0.套接字一定是成对出现的,有server套接字,就一定有client套接字,它是一种全双工通信方式,分别有读写缓冲区通信框图 cs架构 (bs架构,browser server) 服务器 server ...原创 2019-12-27 09:15:53 · 1046 阅读 · 0 评论 -
linux驱动程序之块设备驱动(一)
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题本系列文章是为记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接一 w...原创 2019-11-03 09:01:09 · 1380 阅读 · 1 评论 -
Linux运行错误分析之根据内核打印的段错误信息分析
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题本系列文章是为记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接一 w...原创 2019-10-25 17:03:58 · 1484 阅读 · 0 评论 -
linux之字符设备驱动程序的另一种写法
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题本系列文章是为记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接一 ...原创 2019-10-12 08:53:48 · 241 阅读 · 0 评论 -
linux字符设备驱动之定时器实现防按键抖动(六)
一 whatlinux系统帮我们实现了一个定时器处理函数,对于驱动程序来说,只需要做初始化、添加定时器的方法即可,主要用到的函数就是init_timer(),add_timer()。二 why我们都知道一个按键的物理结构,就是一个弹片,在按下的过程中,弹片会跟下面的触点接触;松开的时候,弹片和触点断开;但是由于物理结构的惯性作用,按键在按下与弹片接触瞬间,并不是一直保持稳定接触的,它会一会...原创 2019-06-05 07:18:38 · 263 阅读 · 0 评论 -
linux字符设备驱动之同步互斥阻塞(五)
一 what有过嵌入式实时操作系统开发的同学,对这三个概念应该很容易理解,这里做一个简单的介绍多任务访问临界区时,一定要做好隔离保护的工作,否则临界区内容会被别的任务修改,导致出现未知的错误。为保护临界区资源共享的问题,我们引出同步的概念,因此同步实际上就是保护共享资源的一种策略方法,当然实现同步的方法有好几种,我们看一下常见的三种原子操作在执行过程中不会被别的任务(进程/线程)打断的操...原创 2019-06-02 12:31:03 · 254 阅读 · 0 评论 -
linux字符设备驱动之异步通知(四)
一 what在我们前面的三个帖子中,我们介绍了linux字符设备驱动的查询,中断,以及poll机制方式来获取一个gpio引脚电平,这三种方式的共同点,都需要我们应用程序主动通过调用read函数去读取,那么有没有别的方式呢?比如说由驱动来告知应用程序,因为发生了某件事情,你可以来读取了呢?答案是肯定的,linux内核帮我们封装了一个异步通知signal的方式,我们可以在驱动程序中,发生某件事情(...原创 2019-06-02 10:43:32 · 278 阅读 · 0 评论 -
linux字符设备驱动之poll篇(三)
一 whatpoll,顾名思义,就是查询的意思,但是这里的查询,跟我们第一篇中通过在while循环中一直read方式的轮询有什么区别呢?linux内核提供了poll函数给用户程序查询字符设备的状态,它带有一个超时等待机制,当在规定时间内没有读取到字符设备的状态时,将直接返回,释放掉cpu进入休眠;如果在规定时间内产生了某个中断,我们可以利用read函数去读取字符设备的状态,从本质上来说,pol...原创 2019-06-01 21:18:19 · 398 阅读 · 0 评论 -
linux驱动之字符设备驱动(一)
一 前言引导关于linux操作系统,相信做过嵌入式开发的人或多或少都有所了解,都听说过它是一个优秀的,开源的os,在嵌入式设备行业、服务器行业,我们无处不见linux的身影,在这里想给大家纠正一个不太好的观念(可能是我自己以前一直有这样一个误解),很多嵌入式开发人员会认为windows系统真的很糟糕,完全比不上linux,其实不是这样的,windows没有我们认为的那么糟糕,linux也没有我们...原创 2019-05-30 07:19:46 · 2041 阅读 · 0 评论 -
linux内核编译以及烧写
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下:**一 环境**本文以s3c2440位硬件平台,分别以linux-2.6.22.6和linux-3.4.2介绍编译过程,针对linux-2.6.22.6版本,需要的环境是:linux内核包...原创 2019-06-14 07:03:23 · 1562 阅读 · 0 评论 -
linux启动内核kernel错误状态记录以及分析
一 why记录下移植内核过程中,出现的错误以及解决问题办法a. 加载内核时,提示提示空分区名(empty pattition name)原因,分区被异常擦掉了,解决办法(1). 在uboot下输入nand erase(2). 重新烧写uboot、kernel、以及文件系统...原创 2019-06-15 16:22:37 · 1982 阅读 · 0 评论