Linux
文章平均质量分 90
Linux
Aspirant-GQ
这个作者很懒,什么都没留下…
展开
-
Linux系统启动分析
文章目录大体流程分析一.BIOS1.1 BIOS简介1.2 POST二.BootLoader (GRUB)2.1 What's MBR?2.2 What's GRUB?2.3 boot.img2.4 core.imglzma_decompress.img 切换CPU到保护模式kernel.img 选择加载 Linux Kernel Image三.Kernel Init3.1 Unpack the kernel3.2 start_kernel()静态创建0号进程init_tasksetup_arch(&原创 2021-09-16 09:20:15 · 1192 阅读 · 1 评论 -
CSND搬家到------->博客园(在博客园写作&&技术交流)
后续就在博客园整理笔记和技术交流啦~~~已经把CSDN相关的文章全部整理发布到博客园点击去康康博主的新家之前很多人通过qq与博主联系,由于各种原因在QQ上不能够及时解答疑惑,现在大家可以通过如下方式在博客园与博主交流哦(我会经常去看博客园消息的):...原创 2021-07-18 23:37:13 · 1293 阅读 · 1 评论 -
从头实现Linux字符设备驱动——2万字详解
文章目录字符设备驱动基础申请设备号创建设备节点在驱动中实现操作方法文件IO调用驱动中的操作应用程序与驱动的数据交互内核驱动如何控制外设控制LED的简单驱动实例驱动程序的改进框架复盘面向对象思想出错处理读写硬件寄存器的改进代码展示字符设备驱动基础参考:https://blog.csdn.net/zqixiao_09/article/details/50839042Linux中有很多设备,主要分为三类:字符设备、块设备、网络设备。重点学习字符设备,字符设备是以字节流的方式驱动的,典型的字符设备是LCD、原创 2021-03-06 15:02:30 · 418 阅读 · 0 评论 -
Linux 零拷贝技术
文章目录使用标准I/O的痛点零拷贝技术介绍直接I/O操作mmap内存映射sendfile 在文件描述符之间传递数据使用标准I/O的痛点在Linux中 标准I/O操作都是基于数据拷贝的缓冲机制,从内核中拷贝数据到用户空间的缓冲区中,然后将用户缓冲区中的数据拷贝至内核中。所以I/O操作频繁的使用会导致数据在内核和用户空间之间进行频繁的切换,这样做的好处虽然是可以通过缓冲机制减少实际的I/O系统调用,但是在数据拷贝的过程中会额外增加CPU的开销。这里我们主要讨论如何在I/O操作的时候,有效减少数据拷贝,数据原创 2021-02-17 22:50:45 · 328 阅读 · 0 评论 -
Linux 进程间传递文件描述符
文章目录文件描述符文件数据结构共享文件UNIX域socket实现传递文件描述符进程间传递打开的文件描述符,并不是传递文件描述符的值。先说一下文件描述符。文件描述符对内核来说,所有打开的文件都会通过文件描述符引用,文件描述符在进程中是一个非负整数,文件描述符在进程中是从0开始,默认0与标准输入关联、1与标准输出关联、2与标准出错关联。之后进程每打开一个文件或者创建一个新文件的时候,内核都会向进程返回一个文件描述符来表示这个文件,文件描述符是递增的。文件描述符的值与文件没有必然的联系,只是该文件在进程中的原创 2021-02-17 20:19:54 · 1465 阅读 · 0 评论 -
miniFTP项目实战六
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录6.1 限.原创 2021-02-16 22:08:01 · 345 阅读 · 1 评论 -
miniFTP项目实战五
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录5.1 下.原创 2021-02-16 22:07:32 · 294 阅读 · 0 评论 -
miniFTP项目实战四
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录传输目录列.原创 2021-02-16 22:07:01 · 294 阅读 · 0 评论 -
miniFTP项目实战三
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录3.1 服.原创 2021-02-16 22:06:30 · 359 阅读 · 0 评论 -
miniFTP项目实战二
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录2.1总体.原创 2021-02-16 22:05:56 · 396 阅读 · 0 评论 -
miniFTP项目实战一
项目简介:在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进程来为客户提供服务。同时每个ftp服务进程配套了nobody进程(内部私有进程),主要是为了做权限提升和控制。实现功能:除了基本的文件上传和下载功能,还实现模式选择、断点续传、限制连接数、空闲断开、限速等功能。用到的技术:socket、I/O复用、进程间通信、HashTable文章目录一.FTP.原创 2021-02-16 22:05:23 · 716 阅读 · 0 评论 -
Linux下基于SQLite3 实现商店商品管理系统
文章目录一.SQLite相关C接口重要接口打开数据库插入信息查询二.程序要求三.程序说明四.实现代码水果店账单管理系统一.SQLite相关C接口如果第一次直接在命令行安装sqlite3,是不包含sqlite3.h这个包的,我们需要单独下载sqlite3支持的库,即通过命令行:sudo apt install libsqlite3-dev如果我们不知道该安装什么包来提供sqlite3的C/C++接口,可以通过debian官网通过查询软件包关键词可以知道库是依赖libsqlite3-dev包的。注原创 2021-01-21 16:19:24 · 771 阅读 · 0 评论 -
Linux UDP服务器编程
UDP主要使用sendto()和recvfrom()recvfrom()函数原型如下:#include <sys/types.h>#include <sys/socket.h>ssize_t recv(int sockfd, void *buf, size_t len, int flags);ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr,原创 2020-12-23 15:29:42 · 330 阅读 · 0 评论 -
Linux 并发服务器编程(多进程)
文章目录说明注意事项server.c client.c运行截图说明在Linux中通过流式套接字编程(TCP),实现一个并发服务器的访问回显,适合刚学完Linux套接字编程的朋友进行巩固训练具体功能:服务器能够同时连接、处理多个客户端的信息客户端向服务器发送数据之后,服务器收到数据,然后反手发送给客户端服务器能够对客户端的退出做出反应,并在客户端退出连接的时候给出提示服务器能够识别每个客户端发送的信息,在显示的时候加上客户端的IP地址服务器中能够对已经退出的服务进程作回收处理客户端能够对服原创 2020-12-22 09:57:01 · 1355 阅读 · 3 评论 -
Linux 多进程编程实例(一)
文章目录目标:main.cprocess1.cprocess2.c目标:一个进程,创建两个子进程,利用exec函数族使两个子进程执行不同的程序。子进程1执行ls -l命令后正常返回,子进程2暂停5s后异常返回,父进程阻塞方式等待进程1,非阻塞方式等待进程2,等父进程收集到进程2的返回信息后就退出。main.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/typ原创 2020-12-09 13:47:58 · 2008 阅读 · 1 评论 -
Linux 进程常用命令
文章目录ps 静态查看系统进程快照top 动态查看进程信息/proc 产看进程详细信息pstree 产看进程树htop 文本交互模式查看nice/renice 改变优先级jobs 查看后台进程bg/fg 前后台运行切换ps 静态查看系统进程快照ps用来产看静态的进程统计信息,常用的选项如下:a:显示当前终端下所有进程信息,包括其他用户的进程u:以用户为主的格式输出进程信息x:显示当前用户在所有终端下的进程-e:显示系统内所有进程信息-l:使用常格式显示进程信息-f:使用完整格式显示进程信息原创 2020-12-07 09:59:01 · 367 阅读 · 0 评论 -
Linux下的段错误(Segmentation fault)
Linux下的段错误(Segmentation fault)段错误是指:访问了系统分配给程序的内存空间之外起的内存空间,比如:访问不存在的地址访问受系统保护的地址访问了只读内存地址内存访问越界要注意的:使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函数防止读写越界原创 2020-11-11 08:03:33 · 1066 阅读 · 1 评论 -
Linux下库的制作(静态库与共享库)
库中实际上就是已编译好的函数代码,可以被程序直接调用。Linux下的库一般的位置在/lib或者/usr/lib中静态库静态库是复制拷贝到调用函数中的,函数运行的时候不再需要静态库,因为静态库是在链接的时候加进去的,所以当函数运行的时候,源库的改变对运行中的函数造成不影响。随之而来,当静态库升级之后,每一个调用静态库的程序都需要重新编译。特点:链接静态库的时候,会把库中的相关代码拷贝到可执行文件中程序运行时不再需要静态库程序运行时不需加载库,运行速度快因为库中相关代码是拷贝到可执行文件中,所原创 2020-11-06 10:18:16 · 196 阅读 · 0 评论 -
Linux系统启动初始化
文章目录一.BIOS 加载启动引导程序二.MBR 主引导扇区三.GRUB引导内核3.1运行 boot.img3.2加载 core.img3.3切换到保护模式3.4kernel.img 引导内核四.内核初始化五.系统调用Linux系统启动初始化的主要流程是:1.上电BIOS自检2.启动Boot Loader(GRUB)3.加载内核4.启动第一个进程5.配置环境一.BIOS 加载启动引导程序BIOS(英文:Basic Input/Output System),即基本输入输出系统,亦称为ROM原创 2020-09-28 21:03:10 · 1848 阅读 · 0 评论 -
ubuntu与主机ping不通的解决办法(主机检测不到虚拟网卡)
文章目录一.问题的出现与思路的转变二.Ubuntu的网络适配器的俩种模式1.桥接模式( Bridged)2.NAT模式三.桥接模式下的网卡配置出现问题四.解决问题的步骤(一次通过)集线器是把接收到的数据向所有端口转发交换机是利用MAC地址来确定数据要转发到哪个网段路由器是利用IP地址中的网络号来判断转发到哪一个网络集线器和交换机连接同一局域网中的设备,路由器连接不同的网络...原创 2020-03-21 15:12:37 · 19179 阅读 · 1 评论 -
S3C2440—2.裸机开发步骤及工具使用
文章目录一.裸机开发步骤简介1.在X86架构的Windows系统中2.在X86架构的Ubuntu系统中3.ARM裸机开发二.soucre insight使用1.sourec insight介绍2.操作流程Ⅰ.增加文件类型Ⅱ.创建工程Ⅲ.编译工程Ⅳ.设置中文字体Ⅴ.界面说明Ⅵ.小技巧一.裸机开发步骤简介1.在X86架构的Windows系统中1.建立工程2.编辑源代码3.编译(VC6.0)...原创 2020-03-18 19:22:20 · 540 阅读 · 0 评论 -
U-Boot详解
转自:http://www.elecfans.com/d/617674.html文章目录一.为什么要有uboot1.1、[计算机](http://www.hqchip.com/app/873)系统的主要部件1.2、PC机的启动过程1.3、典型嵌入式[linux](http://www.elecfans.com/tags/linux/)系统启动过程1.4、[android](http://www....转载 2020-03-18 10:48:36 · 489 阅读 · 0 评论 -
S3C2440—1.熟悉裸机开发板
文章目录一.板载资源介绍二.安装驱动及上位机1.USB的驱动及上位机2.eop驱动安装3.安装烧录软件oflash三.烧写开发板1.预备知识2.烧写裸板3.使用u-boot烧写程序四.恢复出厂设置一.板载资源介绍开发板使用了三星的JZ2440,网上有丰富的资源,有助于学习,板载资源如图所示:需要特别注意以下几点:一般使用JTAG烧写口来烧写程序,用eop即可有俩个USB接口,其中U...原创 2020-03-17 23:53:39 · 1545 阅读 · 0 评论 -
Linux入门—基础命令总结_Ⅱ
文章目录1.find 查找文件2.grep 查找文件中的字符串3.file 识别文件类型4.which和whereis 查找命令或者应用程序的位置5.gzip和bzip2 压缩、解压单个文件6.tar 打包文件,结合压缩指令,压缩多个文件1.find 查找文件find可以用来再指定目录下查找指定文件。最常用的就是find <路径> -name “文件名”其中,路径可以是绝对路径...原创 2020-03-16 22:19:25 · 203 阅读 · 0 评论 -
Linux入门—基础命令总结_Ⅰ
文章目录1.命令行提示符2.echo3.PATH环境变量4.pwd 打印当前所在目录5.cd 切换路径6.ls 列出目录内容7.mkdir 创建目录8.rmdir 删除目录9.touch 创建文件10.mv 修改名字、移动文件路径11.cp 复制文件或目录12.rm 删除文件或目录13.cat 查看文件内容Linux的命令一般是在英文单词中提取出来的,如图:对应了Linux操作命令:dir c...原创 2020-03-15 15:37:49 · 491 阅读 · 0 评论 -
Linux_C编程—信号的阻塞
文章目录信号阻塞信号集sigprocmask()检测修改信号掩码sigpending()查看未决信号队列sigsuspend()等待信号典型程序信号阻塞在处理信号时,有些进程不希望被突如其来的信号中断当前的执行,也不想忽略信号,而是希望等到处理完手头上的信号后再处理这些信号,这种情况就涉及到信号的阻塞了。信号阻塞也称为信号屏蔽。信号集之前介绍信号的时候列出了64种信号,超过了一个整型数能...原创 2019-09-25 22:10:31 · 680 阅读 · 0 评论 -
Linux_C编程—信号处理函数的返回
文章目录信号处理函数执行完怎么办setjmp()/longjmp()sigsetjmp()/siglongjmp()信号处理函数执行完怎么办一般来讲,信号处理函数执行完毕都会正常返回,也可以调用其他函数返回到程序的主函数中。这里总结一下信号处理函数执行完毕后跳转到主函数中指定的位置的操作(有点类似goto语句,但goto不支持函数间的跳转,只能在一个函数中跳转),主要是通过俩对函数来实现的:...原创 2019-09-25 19:17:20 · 1213 阅读 · 0 评论 -
Linux_C编程—信号的捕捉和处理
文章目录信号的捕捉处理概述signal()函数sigaction()函数pause()函数信号的捕捉处理概述前面介绍了信号的基本信息和信号的发送,这里总结一下Linux中进程对信号的捕捉和处理,进程收到信号一般会设置一个信号处理函数来专门执行接收到信号后的操作,类似于中断一样。在信号处理函数中,可以根据信号的不同来执行相应的操作,也可以读取信号所携带的信息。Linux系统中对信号的处理主要...原创 2019-09-24 23:03:48 · 930 阅读 · 0 评论 -
Linux_C编程—信号的发送
文章目录信号的发送函数kill()函数raise()函数sigqueue()函数alarm()函数信号的发送函数前面介绍了Linux中信号的一些基本情况,这里总结一下信号的发送。信号的发送主要由函数kill()、raise()、sigqueue()、alarm()、settimer()、abort()来完成。kill()函数kill()函数用来发送信号给指定进程,在shell下输入man...原创 2019-09-24 21:27:59 · 976 阅读 · 0 评论 -
Linux_C编程—信号介绍
文章目录Linux中的信号信号来源信号的种类信号的可靠性进程对信号的响应Linux中的信号在Linux中,信号是一种进程间通信的机制,在Linux这个多用户多进程系统中,信号的存在是必然的。信号是一种软件中断,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式。根据POSIX标准拓展以后的信号机制,信号不仅可以用来通知某进程发生了什么事件,还可以给进程传递数据。Linux中所支持的...原创 2019-09-24 20:20:26 · 166 阅读 · 0 评论 -
Ubuntu安装arm-linux-gcc 详细步骤
文章目录1.获取压缩包2.解压 压缩包到指定路径3.新建目录,解放目录权限4.复制到新目录5.配置环境变量和库变量6.使用source命令重新加载生效该配置文件7.验证gcc编译的只能在Linux中使用,要在ARM中使用,还要使用交叉编译工具:arm-linux-gcc1.获取压缩包首先尝试使用命令行安装,结果如下:但是此方法需要翻墙获取(我听别人说的…),一般情况不会成功的。所以在...原创 2020-03-21 19:33:54 · 7736 阅读 · 1 评论 -
Linux_C编程—pthread_join()的使用
以我目前的知识储备,我对线程执行的理解就是:在一个进程中创建了一个线程,此线程调用了一个函数,可以在进程中通过这个线程所调用的函数来执行一些其他工作,或者辅助进程工作。由于CPU是单核,一般的来讲只要进程一直处于main程序的运行过程时,线程所调用的函数是不会执行的,因为进程没有给线程留有执行的时间。要想使线程执行,一般的操作就是使进程休眠一段时间,通过sleep()函数可以实现,在进程休眠的这段...原创 2019-09-21 10:06:41 · 3284 阅读 · 0 评论 -
Linux_C编程—线程的终止
文章目录线程的终止情况使用return返回线程调用pthread_exit()终止线程非正常终止时清理线程资源例程线程的终止情况Linux中有俩种方式可以使线程正常终止:通过return从线程函数返回通过调用pthread_exit()函数,使线程退出另外线程受到其他线程的干扰或者自身出错,都会导致线程非正常终止,而这种终止是不可预见的。无论线程是正常终止还是非正常终止,都会涉及到...原创 2019-09-20 14:18:20 · 1365 阅读 · 1 评论 -
Linux_C编程—创建线程
文章目录线程创建线程线程学习了进程后,了解到进程是是资源分配的最小单位,而线程是调度的最小单位,线程相比于进程的不同如下:1.进程拥有独立的地址空间、代码段、数据段、堆栈段,而线程只有独立的堆栈段;2.进程间拥有多种通信方式,而线程间通信通常是通过全局变量或者是在创建线程是进行数据传输;3.运行于同一个进程中的各个线程都是共享大部分数据的;4.创建线程花费的空间远小于创建进程花费的空...原创 2019-09-19 23:08:02 · 1852 阅读 · 0 评论 -
Linux_C编程—进程控制详解
文章目录一.进程概述1.进程概念2.进程与线程、程序的区别3.进程标识4.进程的结构5.进程的状态一.进程概述1.进程概念Linux是一个多用户多任务操作系统,多用户是指多个用户可以同时操作计算机,多任务是指Linux可以同时执行多个任务。进程的话,简单的可以理解为运行中的程序,所以根据Linux的多任务特性,我们知道Linux可以同时启动多个进程。进程是操作系统资源管理的最小单位,进程是...原创 2019-09-15 23:06:21 · 556 阅读 · 0 评论 -
Linux—GCC编译器概述
文章目录一.gcc简介二.程序的编译过程1.预处理2.编译3.汇编4.链接5.总结三.gcc基本用法1.-c2.-o3.-g4.-O(大写)5.-O26.-Wall7.-Idirname8.-Werror四.关于优化一.gcc简介因为在Linux下开发应用程序时,基本使用的都是C语言,所以就要求我们至少熟练掌握一种C编译器。编译器可以把我们利用高级语言编写的源代码转换成为计算机能够直接执行的二...原创 2019-09-13 23:22:12 · 428 阅读 · 0 评论 -
Linux—Vim编辑器概述
文章目录简介一般模式编辑模式简介在所有得Linux distributions上都会有一套Vi文本编辑器。而且很多软件默认也是将Vi作为它们的编辑界面,Vim是Vi的高级版本,Vim不仅可以用不同的颜色显示文字的内容,还能进行诸如shell脚本,C等程序编辑功能。Vi有三种工作模式:一般模式、编辑模式、命令模式。一般模式用vi打开一个文件会直接进入一般模式,在此模式下,可以使用上下左右按...原创 2019-09-13 16:14:32 · 207 阅读 · 0 评论 -
【写一个操作系统】3—汇编语言学习及Makefile入门
目录汇编代码制作启动区程序Makefile今天的主要任务是通过对helloos.nas核心代码汇的理解进行编语言的学习,还有就是Makefile的学习。汇编代码主要是对上次的汇编文件helloos.nas核心部分的学习,核心部分的原代码如下:DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c DB 0x8e, 0xd8, 0x8e...原创 2019-08-15 18:16:22 · 1174 阅读 · 0 评论 -
【写一个操作系统】2—VMware创建软盘映像
目录想法VMware虚拟机实现步骤注想法上次已经可以实现一个helloword的小程序了,本来是要把写好的软盘映像文件写入软盘的,但是由于没有qian买不起软盘,所以我就按照教程上的话,利用QEMU模拟了小程序的运行。可能是因为我有一点强迫症,想着把这个小程序完善到可以开机自启,所以我就决定用VMware虚拟机来创建一个软盘映像,启动虚拟机的时候那个程序就会自动运行。先附上成果:VMwa...原创 2019-08-13 19:11:20 · 2233 阅读 · 3 评论 -
【写一个操作系统】1—hello world重出江湖
目录目的第一阶段:利用二进制编辑器实现第二阶段:使用汇编语言编写第三阶段:改进汇编程序收获注释目的开发一个,基于底层硬件的helloworld小程序.第一阶段:利用二进制编辑器实现先下载了一个二进制编辑器软件Bz.exe1,创建一个helloos.img镜像文件,制作软盘镜像文件(通过这二进制编辑器),实际上C语句被其他程序转化为一系列的低级机器语言指令,这些指令再按照可执行目标程序的...原创 2019-08-12 18:53:08 · 551 阅读 · 1 评论