
零基础学Linux
文章平均质量分 69
黑子的ball
忙着赶路
无暇采风
展开
-
Linux下解压与压缩命令
本文主要是总结题主在学习与工作中使用到的Linux环境下解压与压缩命令,内容不算很全,但是囊括了大部分需求场景,如有误笔之处,还请同学指正。原创 2022-11-06 14:54:43 · 4687 阅读 · 0 评论 -
DMA编程
主要介绍了DMA编程的基础原创 2022-11-05 13:21:37 · 1772 阅读 · 0 评论 -
内存与IO访问函数实例
主要进行了内存与IO访问函数的实例原创 2022-11-04 09:38:27 · 414 阅读 · 0 评论 -
内存与IO访问原理
主要介绍内存与IO访问的一些基础知识和原理原创 2022-11-03 17:29:10 · 591 阅读 · 0 评论 -
mmap函数详解(what?why?how?)
主要对mmap函数进行了较为详细的介绍原创 2022-11-02 15:12:42 · 10605 阅读 · 0 评论 -
信号量与自旋锁的简单介绍
主要介绍信号量与自旋锁原创 2022-11-01 11:08:19 · 342 阅读 · 0 评论 -
Linux应用编程和网络编程(13、exec族函数及实战)
1、exec族函数及实战1.1、为什么需要exec函数(1)fork子进程是为了执行新程序(fork创建子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行 )(2)可以直接在子进程的if中写入新程序的代码。这样可以,但是不够灵活,因为我们只能把子进程程序的源代码贴过来执行(必须知道源代码,而且源代码太长了也不好控制),譬如说我们希望子进程来执行ls-la命令就不行了(没有源代码,只有编译好的可执行程序)(3)使用exec运行新的可执行原创 2022-04-26 17:33:05 · 1009 阅读 · 0 评论 -
Linux应用编程和网络编程(12、waitpid介绍)
1、waitpid介绍1.1、waitpid和wait的区别(1)基本功能一样,都是用来回收子进程(2)waitpid可以回收指定PID的子进程(3)waitpid可以阻塞式或非阻塞式两种工作模式1.2、waitpid原型介绍(1)参数(2)返回值1.3、代码实例(1)使用waitpid实现wait的效果ret = waitpid(-1, &status, 0);-1表示不等待某个特定PID的子进程而是回收任意一个子进程,0表示用默认的方式(阻塞式)来进行等待,返回值ret是本原创 2022-04-22 15:53:28 · 196 阅读 · 0 评论 -
Linux应用编程和网络编程(11、父进程wait回收子进程)
1、父进程wait回收子进程1.1、wait的工作原理(1)子进程结束时,系统向父进程发送SIGCHILD信号(2)父进程调用wait函数后阻塞(3)父进程被SIGCHILD信号唤醒然后去回收僵尸子进程(4)父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程(5)若父进程没有任何子进程,则wait返回错误1.2、wait实战(1)wait的参数status。status用来返回子进程结束时的状态,父进程通过wait得到st原创 2022-04-21 13:54:13 · 1261 阅读 · 0 评论 -
Linux应用编程和网络编程(10、进程的诞生和消亡)
1、进程的诞生与消亡1、进程的诞生(1)进程0和进程1(2)fork(3)vfork2、进程的消亡(1)正常终止和异常终止(2)进程在运行时需要消耗系统资源(内存、IO),进程终止时理应完全释放这些资源(如果进程消亡后仍然没有释放相应资源则这些资源就丢失了)(3)Linux系统规定:每一个进程退出时,操作系统会自动回收这个进程涉及到的所有资源(譬如malloc申请的内容没有free时,当前进程结束时这个内存会被释放;再譬如open打开的文件没有close的在程序终止时也会被关闭)。但是操作系原创 2022-04-21 11:12:14 · 196 阅读 · 0 评论 -
Linux应用编程和网络编程(9、父子进程对文件的操作)
1、父子进程对文件的操作1.1、子进程继承父进程中打开的文件(1)上下文:父进程先open打开一个文件得到fd,然后在fork创建子进程,之后在父子进程中各自write向fd中写入内容(2)测试结论是:接续写。实际上本质原因是父子进程之间的fd对应的文件指针是彼此关联的(3)实际测试时,有时候会看到只有一个(hello或world),但是实际上不是。原因是本身程序太短,只需要在程序中假如sleep函数即可保证。#include <stdio.h>#include <sys/ty原创 2022-04-21 03:00:00 · 717 阅读 · 0 评论 -
Linux应用编程和网络编程(8、fork创建子进程)
1、fork创建子进程1.1、为什么要创建子进程(1)每一个程序的运行都需要一个进程(2)多进程实现宏观上的并行1.2、fork的内部原理(1)进程的分裂生长模式。如果操作系统需要一个新进程来运行一个程序,那么操作系统会用一个现有的进程来复制生成一个新进程。老进程叫父进程,复制生成的新进程叫子进程(2)fork函数调用一次会返回2次,返回值等于0的就是子进程,而返回值大于0的就是父进程(3)典型的使用fork的方法:使用fork后然后用if判断返回值,并且返回值大于0时就是父进程,返回值等于0原创 2022-04-20 21:44:15 · 657 阅读 · 0 评论 -
Linux应用编程和网络编程(7、进程概念)
1、程序的开始和结束1.1、main函数由谁调用(1)编译链接时的引导代码。操作系统下的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main,我们写应用程序时不用考虑引导代码的问题,编译链接时由链接器将编译器中事先准备好的引导代码给链接进去和我们的应用程序一起构成最终的可执行程序。(2)运行时的加载器。加载器是操作系统中的程序,当我们去执行一个程序时(譬如.a/.out ,譬如代码中用exec族函数来运行),加载器负责将这个程序加载到内存中去执行这个程序。(3)程序在编译链接时原创 2022-04-20 20:37:30 · 1660 阅读 · 0 评论 -
Linux应用编程和网络编程(6、proc文件系统)
1、proc文件系统介绍1.1、操作系统级别的调试(1)简单程序单步调试(2)复杂程序printf打印信息调试(3)框架体系日志记录信息调试(4)内核调试的困境1.2、proc虚拟文件系统的工作原理(1)Linux内核是一个非常庞大、非常复杂的一个单独的程序,对于这样的一个程序来说调试是非常复杂的(2)像kernel这样庞大的项目,给里面添加/更改一个功能是非常麻烦的,因为你添加的一个功能可能会影响其他已经有的(3)为了降低内核调试和学习的难度,内核开发者们在内核中添加了一些属性专门用于调原创 2021-10-24 22:04:48 · 1159 阅读 · 0 评论 -
Linux应用编程和网络编程(5、Linux中的随机数)
1、Linux中使用随机数1.1、随机数和伪随机数(1)随机数是随机出现的,没有任何规律的一组数列(2)真正的完全随机的数列是不存在的,只是一种理想情况。我们平时使用到的随机数一般只能通过一些算法得到一个伪随机数序列(3)我们平时说到的随机数,基本都指的是伪随机数1.2、Linux中随机数相关API(1)连续多次调用rand函数可以返回一个伪随机数序列(2)srand函数可以用来设置rand 获取的伪随机序列的种子1.3、实战(1)单纯使用rand重复调用n次,就会得到一个0-RAND_M原创 2021-10-24 21:10:38 · 200 阅读 · 0 评论 -
Linux应用编程和网络编程(4、时间API)
1、时间的概念可查看相关博客了解链接:http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html2、Linux系统中的时间2.1、jiffies的引入(1)jiffies是Linux内核中的一个全局变量,这个变量用来记录以内核的节拍时间为单位时间长度的一个数值。(2)内核配置的时候定义了一个节拍时间,实际上Linux内核的调度系统工作时就是以这个节拍时间为时间片的(3)jiffies变量开机时有一个基准值,然后内核美国一个节拍时原创 2021-10-24 13:57:33 · 299 阅读 · 0 评论 -
Linux应用编程和网络编程(3、文件权限)
1、文件权限管理1.1、st_mode中记录的文件权限位(1)st_mode本质上是一个32位的数(类型就是unsigned int),这个数里的每一位对应着一个含义(2)文件类型和文件的权限都记录在st_mode1.2、ls -l打印出的权限列表(1)123456789一共9位,3个一组。第1组3个位表示文件的属主(owner、user)对该文件的可读、可写、可执行权限;第2组3个位表示文件所在的组(group)对该文件的权限;第3组3个位表示其他用户(others)对该文件的权限(2)属主就转载 2021-07-25 09:56:58 · 140 阅读 · 0 评论 -
Linux应用编程和网络编程(2、文件属性)
1、Linux中各种文件类型1.1、普通文件(1)文本文件。文件中的内容是由文本构成的,文本指的是ASCLL码字符,或其他码字符。文件中的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有0和1),而文本文件中的数字本身应该被理解为这个数字对应的ASCLL码。常见的.c文件、.h文件、.txt文件等都是文本文件。文本文件的好处就是可以被人轻松读懂和编写。(2)二进制文件。二进制文件中存储的本质上也是数字,只不过这些数字并不是文字的编码数字,而是真正的数字。常见的可执行程序文件(原创 2021-07-24 15:43:00 · 188 阅读 · 2 评论 -
Linux应用编程和网络编程(1、文件IO_文件管理)
三、Linux系统之文件管理1、硬盘中的静态文件和inode(i节点)(2)一块硬盘可以分为两大区域:硬盘内容管理表项和真正存储内容的区域。操作系统访问硬盘时先去读取硬盘内容管理表,从中找到我们要访问的那个文件的扇区级别的信息,再用这个信息去查询真正存储内容的区域,最后得到我们要的文件。(3)操作系统最初拿到的信息是文件名,最终得到的是文件内容。第一步就是查询硬盘内容管理表,这个管理表中以文件为单位记录了各个文件的各种信息,每一个文件有一个信息列表,inode实质是一个结构体,这个结构体有很多元素,转载 2021-07-24 12:39:53 · 206 阅读 · 0 评论 -
Linux应用编程和网络编程(1、文件IO)
一、文件操作的主要接口:API1、什么是API(1)API的实质是一些函数,这些函数是Linux系统提供支持的,由应用层程序来使用。(2)应用层程序通过调用API来调用操作系统中的各种功能,来实现功能(3)学习一个操作系统,其实就是学习使用这个操作系统的API。譬如我们要使用Linux系统来读写文件,就是学习Linux系统API中和文件IO有关的几个。注意:文件系统和驱动都是操作系统的一部分2、Linux常用文件IO接口open、close、write、read、Iseek3、文件操作的一般转载 2021-07-24 10:29:08 · 119 阅读 · 0 评论 -
动手安装交叉编译工具链
1、Windows中安装软件的特点Windows中装软件使用安装包,安装包解压后有两种情况:一种是一个安装文件(.exe.msi),双击进行安装,下一步指导安装完毕。安装完毕后会在桌面上生成快捷方式,我们平时使用快捷方式来启动这些程序;另一种是所谓的绿色软件、免安装软件,这种不需要安装,直接解压点击exe文件即可执行2、Linux中安装软件的特点1:在线安装。譬如Ubuntu中使用apt-get install vim来安装vim软件2:自己下载安装包来安装。这种方式的缺陷是不知道下载的安装包和原创 2021-06-16 19:07:12 · 672 阅读 · 0 评论 -
Makefile简单介绍
1、为什么要使用Makefile(1)工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。(2)uboot和linux kernel本质上都是C语言的项目,都由很多个文件组成,因此都需要通过Makefile来管理。所以要分析uboot必须对Makefile有所了解。2、简单的Makefile实例exe: gcc a.c -o exe//执行a.c的时候,直接在命令行输入make即可3、Makefile中的一些基本概念目标:目标顶格写,后面是冒号(冒号后面是原创 2021-06-16 08:40:21 · 630 阅读 · 0 评论 -
shell循环结构等
2.1、shell介绍2.1.1、shell是操作系统的终端命令行(1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式。(2)我们可以使用shell和操作系统、uboot等软件系统进行交互。具体来说就是我们通过shell给软件系统输入命令然后回车执行,执行完成后又会回到shell命令行可以再次输入命令执行。(3)上述的操作方式一般情况下工作很好,但是有缺陷。譬如我们要在linux下创建一个文件a.c,可以touch a.c 但是如果我现在是用在linux下创建1原创 2021-06-15 19:34:14 · 248 阅读 · 0 评论 -
uboot和系统移植3(环境变量和Flash及DDR管理)
1.10、uboot的常用环境变量11.10.1、环境变量如何参与程序运行(1)环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机时又会从Flash中再读一次。(2)环境变量在uboot中是用字符串表示的,也就是说uboot是按照字符匹配的方式来区分各个环境变量的。因此用的时转载 2021-06-15 09:27:46 · 459 阅读 · 0 评论 -
uboot和系统移植1(uboot简介)
2.1.1.为什么要有uboot1.1、计算机系统的主要部件(1)计算机系统就是有CPU来做核心进行运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调)(2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)1.1.2、PC机的启动过程(1)典型的PC机的转载 2021-06-14 19:43:56 · 377 阅读 · 0 评论 -
uboot和系统移植2(uboot常用命令)
1.5、uboot的常用命令11.5.1、类似linux终端的行缓冲命令行(1)行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认为我们还没有输入完),当我们按下回车键(换行)后系统就认为我们输入完了,然后将缓冲区中所有刚才输入的作为命令拿去分析处理。(2)linux终端设计有3种缓冲机制:无缓冲、行缓冲、全缓冲1.5.2、有些命令有简化的别名(1)譬如printenv命令可以简化为print,譬如setenv可以简化为set1.原创 2021-06-14 19:47:12 · 248 阅读 · 0 评论 -
电子通信(串口通信)
1、同步通信和异步通信1.1、同步通信和异步通信的概念:同步通信其实就是指的是发送方和接收方按照同一时钟节拍工作;异步通信指的就是发送方和接收方没有统一的时钟节拍,而按照自己的节拍工作。1.2、同步通信和异步通信的优缺点:同步通信效率高,异步通信效率低同步通信复杂,双方时钟允许误差较小;异步通信简单,双方时钟可允许一定误差。同步通信用于点对多点,异步通信只适用于点对点2、电平信号和差分信号2.1电平信号和差分信号的概念电平信号和差分信号是用来描述通信线路传输方式的,也就是说如何在通信线路原创 2021-05-21 13:54:02 · 1773 阅读 · 0 评论 -
Linux上网问题
3.3、linux中权 限表示&管理3.3.1、普通用户与特权用户 su命令切换用户Windows中有普通用户和特权用户,特权用户是Administrator,普通用户可以有很多个。特权用户是系统的管理员,对系统内所有文件具有操作权限。每个普通用户只能处理自己的文件,不能访问其他用户的文件,更不能随意处理操作系统的文件。Linux中也有普通用户和特权用户的区别。特权用户就是root用户。普通用户权限受到限制,譬如说普通用户不能cd /root,普通用户不能使用apt-get install原创 2021-03-19 10:58:55 · 106 阅读 · 2 评论 -
vi编辑器
3、编辑器vi的使用(vi和vim的联系)什么是编辑器?编辑器就是一款软件,它的主要作用就是用来编辑。譬如编写文件,编写代码。Windows中的常用编辑器,如自带的notepad。比较好用的notepad++,UltraEditor,SlickEditorLinux中常用编辑器,自带的最古老的vi。比较好用的vim,gedit。注:vi和vim的关系:vim是vi的升级版,推荐使用vim。我们在后面提到vi时,其实都是指vim。3.1、vi基础使用使用vi来打开/创建一个文件,vi path原创 2021-03-18 17:02:25 · 1200 阅读 · 6 评论 -
Linux基础知识和命令
2、linux基础知识与技能2.1、linux内核、发行版linux本身指的是一个操作系统内核,只有内核是无法直接使用的。我们需要的,可以使用的操作系统是一个包含了内核和一批有用的应用程序的一个集合体,这个就叫linux发行版。ubuntu、redhat就是linux的不同的发行版。2.2、GUI(图形用户界面)和cmdline(命令行)GUI:grahics user interface,图形用户界面。cmdline:command line,命令行。人机交互:人和机器(计算机)进行交互,常原创 2021-03-11 18:31:23 · 196 阅读 · 1 评论 -
主流操作系统及其特点
1、操作系统基础概念*1.1、Windows与linux的关系****当前主流的操作系统:windows、、android、iOS、symbian、linux/unixWindows:傻瓜式、好学习、工资低Linux:linux认为每一个用户都是专业人士,操作麻烦,学习比较难,免费的、开源的,linux性能好,可移植性好,好的设计理念Android:移动操作系统,android基于linuxiOS:很优秀,创造性,走钢丝嵌入式操作系统:linux + WinCE当前:消费电子Androi.原创 2021-03-10 15:39:58 · 4710 阅读 · 0 评论