Linux
文章平均质量分 74
runner668
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linxu虚拟文件系统proc
一:简介Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。...转载 2018-06-13 21:26:15 · 725 阅读 · 0 评论 -
工程Makefile写法
#SDK测试程序CXX = g++#执行c++编译器的命令行参数CXXFLAGS = -Wall -Wno-strict-aliasing -Wno-unused-variable#包含头文件路径,类似这个 下面很多用到的就是函数SUBDIR = $(shell ls ../../src -R | grep /)../../src:#字符串替换 将:替换为/SUBD...原创 2018-04-27 12:49:17 · 665 阅读 · 0 评论 -
linux中监视某个进程的线程
在linux下进行业务开发的时候,尤其是在应用第三方包的时候,首先要分析进程中的线程数目,查看进程的线程数对于开发或者是运维都是一个必备的技能。 进程的id 也就是 pid,由于linux中线程和进程都有各自的进程描述符,本质上进程和线程都是 clone()产生的,对于线程来说只要不查看线程所在进程的组号(tid),我们都把线程的id 也叫做pid。 ps -aux...原创 2018-05-14 10:22:31 · 4434 阅读 · 0 评论 -
二级指针输出模型与易犯错误模型
一:二级指针做输出在被调函数中分配内存,形参改变实参的值——指针存在的最大意义。#include <stdio.h>#include <stdlib.h>#include "string.h"int geta(char ** a){ char *tmp = NULL; tmp = (char *)malloc(100); //...原创 2018-05-20 17:15:44 · 219 阅读 · 0 评论 -
基于环形队列的的生产者消费者模型
在linxu的多线程机制中,由于可能同时对临界资源进行读写操作,因此互斥锁经常被用来进行互斥操作。初次之外信号量和环形队列等互斥机制则使用起来更为简单。一、基于环形队列的生产-消费模型(信号量)////////////////////////////////////#include<stdio.h>#include<pthread.h>#include<sema...原创 2018-05-14 22:45:34 · 719 阅读 · 0 评论 -
protobuf学习
要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。有点类似于socket套接字,但是这个更加灵活,方便我们自己定义数据。一、Protobuf? 1. 是什么? Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可...转载 2018-05-21 21:13:31 · 446 阅读 · 0 评论 -
ubuntu安装的软件在哪找到
有时候我们在ubuntu下安装了软件,特别是默认安装的时候,有时候却找不到软件的安装位置。其实安装后的软件我们可以dash中查找,或者在application文件夹找到,或者直接在终端打开。安装完成后,我们可以在桌面的左上角打开dash菜单。2在底部切换到“A”标志的选项。 和window下的cmd窗口还是很想的。如果上面还找不到,我们也可以在“/usr/share/appli...原创 2018-05-22 11:21:43 · 26930 阅读 · 1 评论 -
ubuntu下jrtplib的安装和使用
一、流媒体协议实时传输协议(Real-time Transport Protocol,PRT)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用TCP或者ATM等其它协议,整个RTP协议由两个密切相关的部分组成...原创 2018-05-28 14:43:42 · 1483 阅读 · 0 评论 -
epoll内核源码详解+自己总结的流程
作者:赛罗奥特曼~链接:https://www.nowcoder.com/discuss/26226来源:牛客网发现自己发的一篇面经后,很多小伙伴向我索要epoll的内核源码实现,那我就在牛客网发下这源码还有自己总结的流程. 另外 网上很多博客说epoll使用了共享内存,这个是完全错误的 ,可以阅读源码,会发现完全没有使用共享内存的任何api, 而是 使用了copy_from...转载 2018-05-29 16:30:59 · 2344 阅读 · 1 评论 -
linux下socket使用
转子:https://blog.csdn.net/zeweig/article/details/51760624Linux系统中,查看SOCKET使用情况可以使用ss命令。1、命令格式:ss [参数]ss [参数] [过滤]2、命令功能:ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 ...转载 2018-06-05 17:30:27 · 3878 阅读 · 0 评论 -
ubuntu下qt开发界面程序
开发环境ubuntu16zhao@zhao:~$ qmake -versionQMake version 3.0Using Qt version 5.6.2 in /home/zhao/anaconda3/lib程序的执行效果如下:程序实现步骤如下:1、打开Qt Creator->新建项目-> 选择Qt Widgets Application2、编辑项目名称并且选择创建项目的目录3、接...原创 2018-05-30 15:18:12 · 12510 阅读 · 1 评论 -
QT创建界面二
本篇文章不依赖UI设计界面,而是用继承窗口的办法实现界面的设计,本文重点介绍信号和槽函数的使用。一:创建工程这种工程创建的办法相对于上一篇没有出现ui界面那个文件夹:so界面的设计和槽函数的设计和关联都需要手动进行。...原创 2018-05-30 15:43:46 · 5139 阅读 · 0 评论 -
linux进程-线程-协程上下文环境的切换与实现
一:进程-线程-协程简介进程和线程的主要区别是:进程独享地址空间和资源,线程则共享地址空间和资源,多线程就是多栈。进程调度,切换进程上下文,包括分配的内存,包括数据段,附加段,堆栈段,代码段,以及一些表格。线程调度,切换线程上下文,主要切换堆栈,以及各寄存器,因为同一个进程里的线程除了堆栈不同。协程又称为轻量级线程,每个协程都自带了一个栈,可以认为一个协程就是一个函数和这个存放这个函数运行时数据的...原创 2018-05-30 17:46:38 · 13437 阅读 · 1 评论 -
qmake的使用-生成项目的makefile文件
这只是对qmake使用的一个说明而已。如果一直使用Qt Create来构建工程,很容易让人以为Qt项目必须使用Qt Create来创建。其实我们可以像写普通的C++工程一样,不一定需要IDE,编辑器+编译器即可搞定了。不过这个有一个缺点,就是如果在connect函数连接信号的槽的时候,即便是槽函数不存在,也能够通过编译。1. 先来写源代码必须先写源代码,这个源代码很简单,就是创建一个Widget,...转载 2018-04-21 16:08:30 · 6433 阅读 · 0 评论 -
linux分区与目录
转子:https://www.cnblogs.com/yyyyy5101/articles/1901842.html本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。相信有了这些知识对于深入的学习linux会有一定的帮助。文章例子主要是基于ubuntu发行版。Linux各种发行版的目录结构基本一致,各...转载 2018-06-13 21:51:42 · 5490 阅读 · 0 评论 -
linux文件系统VFS
1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系...转载 2018-06-13 21:54:58 · 835 阅读 · 0 评论 -
Linux 内核/sys 文件系统介绍
linux2.6内核引入sysfs文件系统,sysfs可以看成与proc,devfs和devpty同类别的文件系统,该文件系统是虚拟的文件系统,可以更方便对系统设备进行管理。它可以产生一个包含所有系统硬件层次视图,与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs...转载 2018-06-13 22:09:22 · 1711 阅读 · 0 评论 -
linux中cat、more、less、tail、head命令的区别
转自:https://my.oschina.net/junn/blog/304868一、cat 显示文件连接文件内容的工具 cat 是一个文本文件(查看)和(连接)工具,通常与more搭配使用,与more不同的是cat可以合并文件。查看一个文件的内容,用cat比较简单,就是cat后面直接接文件名。 如:root@ubuntu :/# cat /etc/passwd 1、cat 语法结构: ca...转载 2018-06-13 22:26:41 · 319 阅读 · 0 评论 -
select-epoll比较
转子:http://www.cnblogs.com/Anker/p/3265058.htmlselect,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说...转载 2018-06-14 15:02:53 · 240 阅读 · 0 评论 -
Linux┊理解devfs、sysfs、udev、tmpfs
转自:https://blog.csdn.net/qq258711519/article/details/8090418文件系统位于内核应用层,是内核应用层的核心,也是用的最多的内核模块。linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。 一、devfs devfs是在2.4内核就出现了,它是用来解决linux中设备管理混乱的问题,你查看一下/dev下的设备文...转载 2018-06-23 21:38:28 · 825 阅读 · 0 评论 -
一个最简单的aufs文件系统
转自:http://book.51cto.com/art/201401/427823.htm 《linux内核探秘》2.3.1 一个最简单的文件系统aufs我们先写一个最简单的文件系统,这个文件系统直接创建在内存中。它在内存中创建了两个目录和几个文件,用户可以通过ls命令显示目录和文件,但是无法创建目录和文件,也不能对文件进行读写操作。这样不涉及硬盘操作,大大简化了开始阶段需要考虑的问题...转载 2018-06-23 21:56:46 · 853 阅读 · 0 评论 -
Netfilter/Iptables入门
转自:http://url.cn/5EcllojLinux的内核是由www.kernel.org这个组织负责开发维护,下面我们要讨论的Netfilter/iptables是www.netfilter.org组织为Linux开发的防火墙软件。由于Linux是非常模块化的,很多功能都是以模块加载扩充系统功能,Netfilter同样采用这种方式存在于Linux中。如果你理解了Linux模块加载也就能够理...转载 2018-07-07 23:45:47 · 498 阅读 · 0 评论 -
mmap映射区和shm共享内存的区别总结
转自:https://blog.csdn.net/hj605635529/article/details/73163513linux中的两种共享内存。一种是我们的IPC通信System V版本的共享内存,另外的一种就是我们今天提到的存储映射I/O(mmap函数) 在说mmap之前我们先说一下普通的读写文件的原理,进程调用read或是write后会陷入内核,因为这两个函数都是系统调用,进...转载 2018-08-24 18:33:04 · 817 阅读 · 0 评论 -
linux的零拷贝技术
参考:https://blog.csdn.net/hzrandd/article/details/51025341 零拷贝(zero-copy)技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。数据拷贝受制于传统的操作系统或通信协议,限制了通信性能。采用零...转载 2018-10-02 14:38:23 · 493 阅读 · 0 评论 -
linux网络配置命令 ifconfig 、route 、ip 、ip route
最近在研究docker的网络,对linux的网络方面的基本命令做了个简单的学习。一、ifconfig 命令(查看或配置Ip)1、查看网络连接 1 #ifconfig\\显示所有活动连接,不包令禁用的设备 或 1 #ifconfig-a\\显示所有活动及非活动的连接 显示指定接口...转载 2019-09-16 09:55:03 · 826 阅读 · 0 评论 -
linux内存机制整理
经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方 面,区别于Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。而Wi...转载 2018-04-18 19:31:51 · 2342 阅读 · 0 评论 -
xshell远程连接服务器解决方案
必备知识:linux下对文件的编辑操作 首先给出的是vi的基础 后面会有详细的远程连接Centos的方法vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode), 各模式的功能区分如下: 1. Comand mode:控制屏幕光标的移动,字符或光标的删除转载 2017-03-04 21:34:05 · 6963 阅读 · 0 评论 -
xshell远程连接ubuntu问题
最近在用xshell的时候发现ip网络已经打开,就是无法远程连接,在网上搜了如下的解决方案,亲测可用!确认步骤: (1)输入:ps -e |grep ssh 如果服务已经启动,则可以同时看到“ssh-agent”和“sshd”,如果没有启动,或没有安装服务 ; (2)输入sudo apt-get install openssh-server 安装服务。 (3)转载 2017-03-04 21:47:27 · 667 阅读 · 0 评论 -
字符设备驱动LED驱动程序编写
一. 概念介绍一般用户在应用程序里调用的 open, read, write 函数是 c 库的函数, 这些函数会触发 swi val异常,从而引发系统调用,进入到内核空间, 内核通过VFS(virtual Filesystem)来实现调用不同的驱动函数(因此驱动程序必须挂载到VFS中)。例如:我们有一个函数,int main(){ int fd1, fd2; int val = ...原创 2018-04-07 19:43:45 · 1225 阅读 · 0 评论 -
LINUX系统初始化
说明BIOS是位于位于主板flash rom(掉电不丢失0)中的程序,操作系统Boot Loader位于硬盘MBR中。BIOS在完成硬件检测和资源分配后。将硬盘MBR中的Boot Loader读到系统的RAM中,然后将控制权交给操作系统Boot Loader。Boot Loader的主要任务就是将内核映像从硬盘读到RAM中,然后跳转到内核的入口点运行,即开始启动操作系统。一、对于PC机来说 ...原创 2018-04-07 20:35:44 · 18714 阅读 · 0 评论 -
LINUX学习感悟
一:一切皆文件 linux有个口号是:一切皆文件,也就是它把所有的对象都当成一个文件操作,这个操作的前提就是LINUX的虚拟文件系统VFS。二:数据结构与面向对象 linux中的结构体到处可见,无论实现哪一个子系统,都是先定义一堆结构体,有时甚至把结构体的某些实现称为数据结构。关于它的面向对象的思想就是在结构体里边封装了函数指针,这样就可以通过操作这些结构体实现对函数的调用,有...原创 2018-04-07 20:48:37 · 2091 阅读 · 0 评论 -
四种网络IO模型与高并发服务器实现
同步:必须等待IO操作完成,控制权才返回给用户进程;异步:无需等待IO操作完成,控制权便返回给用户进程。当一个read操作发生时,它会经历两个阶段:1:等待数据准备(到内核)2:将数据从内核拷贝到用户进程中。服务器端套接字的创建有两次:开始的时候创建一个用于监听;accept()的时候返回一个新的socket!fctl()函数将套接字设置为非阻塞状态。下边是多路复用io的几个模型这个模型和阻塞IO...原创 2018-04-16 12:13:22 · 2965 阅读 · 0 评论 -
linux高端内存与内存映射——重要
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。内核空间和用户空间用户空间:在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚存地址是用户空间,通过每个进程自己的页目录、页表,用户进程可以直接访问...原创 2018-04-17 20:20:25 · 1536 阅读 · 1 评论 -
Buddy算法和slab分配器
伙伴Buddy算法解决了外部碎片问题.内核在每个zone区管理着可用的页面,按2的幂级(order)大小排成链表队列,存放在free_area数组。具体buddy管理基于位图,其分配回收页面的算法描述如下,buddy算法举例描述:假设我们的系统内存只有16个页面RAM。因为RAM只有16个页面,我们只需用四个级别(orders)的伙伴位图(因为最大连续内存大小为16个页面),如下图所示。 ord...原创 2018-04-18 16:32:53 · 1716 阅读 · 0 评论 -
linux内存耗尽
当内存不足时会发生什么,结果很简单,linux的内存用完了,无法申请缓冲区,内核会挑选进程将其杀死,一般情况下,杀死正在申请内存的程序。频繁的进行磁盘swap操作,经常会出现这类问题,或是并发处理时启动的进程数过多。出现内存耗尽的原因很简单,你申请的内存大小,超过了可用的虚拟内存的大小,注意是虚拟内存(内存并不是唯一的,交换分区也可以提供内存)探究oom(out of memory)首先运行下面的...转载 2018-04-18 16:35:21 · 2878 阅读 · 0 评论 -
虚拟机VirtualBox下安装linux(centos7)遇到的小问题
在官网下载好必要的工具的时候安装VirtualBox和创建linux系统时都遇到一点小问题: 工具版本如右 问题一:遇到的小问题是VirtualBox安装后打不开,有如下错误 分析:在明细中明显说 We suggest you try unins原创 2017-02-14 14:22:56 · 4547 阅读 · 0 评论 -
linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市面上或是...转载 2018-04-18 20:47:58 · 188 阅读 · 0 评论 -
linux中的自旋锁和信号量
一:自旋锁用在多个cpu系统中。当一个线程在一个cpu上正在使用资源,另一个线程在另一个cpu上正忙等待这个资源的时候,就会用到自旋锁来保护临界资源。在单处理器系统中,自旋锁函数为空。二:自旋锁基于共享变量(如ststic变量)。函数通过给变量设置一个值来获得锁,其它需要锁的函数会查询它,并知道锁现在不可用,然后再一个忙等待的循环中“自旋”,直到锁可用为止。由于使用自旋锁时,其它cpu被强制等待。...原创 2018-04-07 11:55:46 · 242 阅读 · 0 评论 -
linux应用程序内存布局
1.linux应用程序内存布局从低地址到高地址分别为:代码段、数据段、BSS段、堆、栈对向高内存地址生长,栈想低内存地址生长linux中所有的应用程序都是这个布局,每个应用程序都是从0x80480000这个地址开始的,这样冲突吗?不冲突,因为这个地址是一个虚拟地址,linux中每个应用程序都有自己的虚拟地址空间。2.2.查看linux中应用程序内存布局方 法:通过查看应用程序进程中的进程地址映射文...转载 2018-04-18 21:32:25 · 377 阅读 · 0 评论 -
追踪和定位内存泄漏
一、问题现象Bigpipe是Baidu公司内部的分布式传输系统,其服务器模块Broker采用异步编程框架来实现,并大量使用了引用计数来管理对象资源的生命周期和释放时机。在对Broker模块进行压力测试过程中,发现Broker长时间运行后,内存占用逐步变大,出现了内存泄漏问题。二、初步分析针对近期Broker的升级改造点,确定Broker中可能出现内存泄漏的对象。Broker新增了监控功能,其中一项...转载 2018-04-18 21:45:50 · 895 阅读 · 0 评论
分享