Linux
文章平均质量分 81
Billy12138
i am billy
展开
-
QBreakPad使用流程-段错误在动态库中
有时候遇到段错误定位到动态库中,却无法看到定位到库中哪一行原创 2022-07-16 17:55:57 · 616 阅读 · 2 评论 -
linux-vmstat命令监控系统信息详解
Linux vmstat命令实战详解 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单转载 2020-07-14 10:50:45 · 450 阅读 · 0 评论 -
【Linux】UDP/TCP协议
我们知道UDP/TCP这两个协议是在传输层上面的,传输层的主要功能是实现分布式进程通信。 下面我们来分别介绍一下UPD和TCP协议 一、UDP又叫用户数据报协议 UDP协议端格式: 解释说明: 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度 如果校验和出错,直接丢弃 UDP的特点: UDP的过程类似于寄信 (1)无连接:知道对端的IP和端口号就直接进行...原创 2018-07-03 21:50:34 · 701 阅读 · 0 评论 -
【Linux】shell脚本思维导图
这是Linux中的最后一部分,shell脚本相关知识:原创 2018-07-16 23:16:24 · 2671 阅读 · 6 评论 -
【Linux】IP协议
我们知道互联网是将一个一个的计算机连接起来的庞大的系统,由于计算机很多所以,互联网也很复杂,那么怎样在复杂的网络中找到一个合适的路径呢? 如上图所示,就是在复杂的互联网中找合适路径的过程。 先来介绍几个基本概念: 主机:配有IP地址,但是不进行路由控制的设备; 路由器:既配有IP地址,又能进行路由控制; 节点:主机和路由器的统称 来看一下·IP协议报头的结构: 下面对报头信息...原创 2018-07-04 01:09:00 · 1234 阅读 · 0 评论 -
【Linxu】ARP协议、DNS协议和ICMP协议
这篇文章旨介绍常用的三种协议:分别是ARP协议,DNS协议和ICMP协议 P协议 (1)ARP是地址解析协议,ARP不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。 (2)ARP协议的作用: 【1】ARP协议建立了主机IP地址和MAC地址的映射关系 【2】在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址 【3】数据包首先被...原创 2018-07-04 16:31:27 · 1897 阅读 · 0 评论 -
【Linux】网络基础2
前面我们知道,TCP/IP协议已经将网络划分为五层或者说四层,下面我们就来自顶向下的来介绍一下各层的具体情况以及使用的协议字段。 1、应用层 我们程序员写的一个个实现具体功能的网络程序就是在应用层 前面我们提到了协议的定义,而具体的应用层协议是什么呢? 只要保证在,一段发送时构造的数据,在另一端能够正确解析,就是可以的,这种约定就是应用层协议。 HTTP协议: 虽然说应用层协议是程序员...原创 2018-07-05 17:08:14 · 208 阅读 · 0 评论 -
【Linux】shell基础之符号篇
我们以前可能也听过shell这个名词,但是并未深入了解,本片博客旨在揭开shell神秘的面纱。 一、与shell相关的一些概念的介绍 1、Shell定位、 (1)Shell是一种用c语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言又是一种程序设计语言 (2)Shell是指一种应用程序,一种和内核沟通的外壳应用程序的统称。有时会提供一个界面,用户通过这个界面访问操作系...原创 2018-07-18 15:19:51 · 1006 阅读 · 0 评论 -
【Linux】Linux网络编程思维导图
我将Linux分为三部分:一个是系统编程,一个是网络编程,还有shell脚本,系统边成德知识框架,前面已经给出,这次来给出网络编程部分的知识框架原创 2018-07-15 16:43:58 · 1235 阅读 · 1 评论 -
【Linux】进程和线程的区别总结
进程与线程的区别: (1)进程是资源分配的最小单位,线程是cpu调度和分派的基本单位 (2)创建一个线程比创建一个进程的代价要小得多,进城创建需要系统分配地址空间,建立数据表等很多工作,而线程需要的很少 (3)线程之间切换比进程间切换需要操作系统做的工作更少 (4)线程占得资源更少,大部分资源都是共享, (5)线程能充分利用多处理器的并行数...原创 2018-08-26 17:59:19 · 2736 阅读 · 0 评论 -
【Linux】生产者消费者模型
想要直到什么是生产者消费者模型首先要了解两个概念:同步和互斥。 互斥:由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥,理解起来就是一个用这份资源的话另一个就不能用,这两者之间就是互斥关系 同步...原创 2018-08-27 16:22:12 · 1884 阅读 · 0 评论 -
【Linux】wait和waitpid的区别
先来看一下这两个函数的函数原型 这两个函数的功能都是回收已经退出的子进程的资源,获取子进程的退出信息,防止出现僵尸进程。 先来看wait函数: 函数参数:输出型参数,获取子进程退出状态,不关心则设置成NULL 返回值: 成功返回被等待进程id,失败返回-1 再来看waitpid函数: 函数参数: pid: pid=-1,等待任意一个子进程,和wait等效 pid>0:...原创 2018-08-30 16:39:59 · 4125 阅读 · 0 评论 -
【Linux】fork和vfork
一、fork函数 函数原型: 函数功能: 一个函数可以调用fork函数创建一个新进程。 函数返回值: 由fork函数创建的新进程叫做子进程,fork函数被调用一次但是返回两次,两次返回的唯一区别是子进程的返回值是0,父进程的返回值是新进程的进程ID。 将子进程进程ID返回给父进程的原因是:因为一个进程的子进程可能有多个,并且没有一个函数可以...原创 2018-08-21 10:58:08 · 247 阅读 · 0 评论 -
【操作系统】常见知识点
1、操作系统的基本特性: (1)并发 (2)共享 在一段时间内只允许一个进程访问的资源称为临界资源,访问临界资源的代码叫做临界区 (3)虚拟 (4)异步 2、C/S模式 (1)客户机:每台客户机都是一个自主计算机,具有一定处理能力,客户进程在客户机上运行,可以处理本地业务,也可以访问服务器请求服务。 (2)服务器:通常是一台规模较大的机器,在其上驻留的网络文件系统或者数据库系统,能...原创 2018-08-28 22:05:36 · 2004 阅读 · 0 评论 -
【操作系统】银行家算法
首先来介绍一下什么是银行家算法,银行家算法是最具代表性的避免死锁的方法。 这个算法因为本来是为银行设计的而得名,这种算法的提出能保证银行在发送贷款的时候,不会发生不满足所有用户需要的情况。 联系到操作系统上就是:每一个新进程进入系统时,必须声明需要每种...原创 2018-08-29 00:40:29 · 64666 阅读 · 18 评论 -
【计算机网络】TCP和UDP区别
1、TCP是有连接的在编写代码时需要监听,需要accept把链接拿进来,UDP是无连接的在写代码的时候不需要监听也不需要accept,直接使用sendto发送和使用recvfrom接收就可以了。2、TCP是面向字节流的,传输的过程中传输的也就是二进制,UDP是面向数据报,对数据进行一块一块的发送3、TCP是可靠的,TCP有很多机制来保证它的可靠性,比如超时重传,确认重传机制,拥塞窗口机制,而U...原创 2018-10-09 21:03:09 · 519 阅读 · 0 评论 -
【Linux】shell基础工具
1、sort 1.1原则: sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,最后将他们按升序输出。 1.2常见选项: 1.2.1sort的-r选项sort默认的排序方式是升序,如果想改成降序加上-r选项就可 1.2.2-u选项,它的作用很简单,即使在输出行中去除重复行 1.2.2-n选项,“要以数值来排序” 1.2...原创 2018-07-08 19:46:47 · 1368 阅读 · 0 评论 -
【linux】http协议
HTTP是Web浏览器和服务器之间交换请求和应答报文的通信协议。首先来了解一下HTTP协议的一些特性。 HTTP一共有两个特性: (1)无状态性 HTTP协议在传输层使用的是TCP协议,为了提高Web浏览器的并发处理能力,协议的设定者规定Web服务器在接收到浏览器HTTP请求报文,返回应答报文之后不保存先关Web浏览器的任何信息。。因此,HTTP属于一种无状态的协议。(浏览器可以用cooki...原创 2018-06-18 21:18:06 · 598 阅读 · 0 评论 -
【Linux】gdb调试多进程多线程
对下面代码进行调试:#include <stdio.h>#include <pthread.h>void processA();void processB();void * processAworker(void *arg);int main(int argc, const char *argv[]) { int pid; pid = f...原创 2018-06-03 02:10:49 · 4964 阅读 · 0 评论 -
【Linux】Linux进程间通信之共享内存
1、共享内存概念引入共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据2、共享内存数据结构struct shmid_ds { struct ipc_perm shm_perm; /* operation perms */ int ...原创 2018-04-10 00:55:12 · 365 阅读 · 0 评论 -
【Linux】Linux进程间通信之消息队列
1、消息队列概念引入 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)2、进程间通信数据结构内核为每个进程间通信对象维护了...原创 2018-04-09 23:46:56 · 352 阅读 · 0 评论 -
【Linux】Linux进程间通信之管道
管道介绍:1、首先来介绍一下什么是管道?管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”,我们可以将这个概念形象的理解为一个我们生活中常见的一些管道,自来水管道,石油管道,天然气管道等等。这些管道有什么共性呢?它们都可以把资源从一端传到另一端,因为不论是石油,自来水,石油都可以称之为资源。而在计算机中的资源就是数据流。2、管道的分类:(1)匿名...原创 2018-04-08 19:17:20 · 404 阅读 · 0 评论 -
【Linux】Linux进程控制
1. 学习进程创建, 等待, 终止. 使用代码实现. (1)进程创建进程创建有两种方式,一种是使用fork()函数,另一种是使用vfork()函数下来对这两个函数进行逐一介绍:fork函数介绍:在linux中fork()函数是一种非常重要的函数,它从已有的函数中创建一个新的进程。新进程为子进程,而原进程为父进程。函数原型:#include<unistd.h>pid_t fork(voi...原创 2018-04-03 00:58:31 · 354 阅读 · 0 评论 -
【Linux】进程概念
1. 调研进程的调度算法. 进程的调度算法大的方面分为五种,分别为轮转调度算法,优先级调度算法,多队列调度算法,多级反馈队列调度算法,基于公平原则的调度算法(1)轮转调度算法简介:轮转调度算法是在分时系统中,比较常用的调度算法,它是基于时间片的。,该算法采用了比较公平的处理机分配方式,即让就绪队列上的每个进程仅仅运行一个时间片。如果就绪队列上有n个进程,则每个进程每次大约都可获得1/n的处理机时间...原创 2018-04-01 01:12:34 · 316 阅读 · 0 评论 -
【Linux】基础IO
1. 练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体 (1) 在man手册上open的原型是:int open(const char *pathname, int flags, mode_t mode);第一个参数是打开文件的路径,第二个参数是打开的方式,打开方式有以下几种:O_RDONLY:只读方式打开O_WRONLY:只写方式打开O_R...原创 2018-03-31 16:15:59 · 362 阅读 · 0 评论 -
【Linux】Linux基础
1、进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限. 首先来了解一下,什么是权限,先利用touch命令创建一个temp文件,如图所示,给出了这条信息的含义,权限分为四种:r:可读w:可写x: 可执行_不具有权限(还有一种针对目录的权限:粘滞位 符号t)第一个_表示文件的类型:文件的类型分为以下几种:_ 普通文件d ...原创 2017-12-03 21:52:00 · 1574 阅读 · 0 评论 -
【Linux】Linux进程通信
1. 编写课堂代码,实现pipe/msgqueue/sems/shm相关代码,并总结 进程间通信我们一共了解过四种,分别是:管道,消息队列,信号量和共享内存首先我们来介绍一下什么是进程间通信:进程间通信的目的一共有四种:数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了原创 2018-04-11 00:28:36 · 278 阅读 · 0 评论 -
【Linux】Linux进程信号详解
一、引入信号概念信号其实我们也见过,当我们在shell上写出一个死循环退不出来的时候,只需要一个组合键,ctrl+c,就可以解决了,这就是一个信号,但是真正的过程并不是那么简单的。1、当用户按下这一对组合键时,这个键盘输入会产生一个硬件中断,如果CPU正在执行这个进程的代码时,则该进程的用户代码先暂停执行,用户从用户态切换到内核态处理硬件中断2、终端驱动程序将这一对组合键翻译成一个SIGINT信号...原创 2018-04-22 18:04:44 · 14701 阅读 · 6 评论 -
【Linux】Linux系统编程架构图
这是我总结的系统编程架构图,希望能对有需要的人有点帮助、原创 2018-04-23 12:33:12 · 1522 阅读 · 0 评论 -
【Linux】Linux多线程
一、线程概念 1、首先来介绍一下线程的基础概念 (1)在程序里的一个执行路线就是一个线程,更准确的是:“一个进程内部的控制序列” (2)一个进程至少有一个线程 2、线程和进程的区别 谈到线程就必须联系到进程,因为线程就是进程的一个执行流,下来我们深入解析一下: (1)进程是分配资源的最小单位 (2)线程是程序执行或者说调度的最小单位 (3)我们常说线程是在进程内部执行的,更准确的说...原创 2018-05-02 21:45:24 · 456 阅读 · 0 评论 -
【Linux】死锁与死锁的避免
调研什么是死锁 在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源,或者说每个线程所等待的事件是该组中其他进程释放所占有的资源。由于所有这些进程都已经无法运行,因此它们谁也无法释放资源,致使没有任何一个进程可被唤醒。这样这组进程只能无限制的等待下去。 如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程就是死锁的。调...原创 2018-05-03 01:22:56 · 664 阅读 · 0 评论 -
【Linux】网络之基础框架篇
经过艰苦奋斗之后我们终于完成了系统编程部分的学习,可是新的战斗才刚刚开始,我们学习系统编程的目的就是为了后面网络部分的学习,我们知道21世纪的一些重要特征就是数字化、网络化、和信息化,这是一个以网络为核心的世界,随着科技和社会的发展,网络已经深入社会的各个角落,我们的手机和电脑都被一种神奇的东西连在一起,让我们互相之间实现远距离沟通资源共享等等以前做不到的事情。 下来我们就来推开这扇神奇的大门来...原创 2018-05-10 22:50:56 · 885 阅读 · 0 评论 -
【Linux】Linux进程间关系和守护进程
1、在了解真正的知识之前我们来了解几个非常重要的概念: (1)进程组 我们在学习进程的时候知道每个进程都会有一个唯一的标识,就是它的进程ID,每个进程除了有这样一个标识之外还属于一个进程组。进程组是一个或多个进程的集合。通常它们与同一个作业相关联,可以接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标志是进程组ID等于进程ID。组长进...原创 2018-05-08 00:42:36 · 657 阅读 · 0 评论 -
【Linux】守护进程
是什么? 守护进程又称精灵进程,是运行在后台的一种特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件,守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如ftp服务器,ssh服务器,web服务器httpd等。同时,守护进程完程许多系统任务,比如企业规划进程crond等。如何创建? 创建守护进程最关键的一步是调用setsid函数,创建一个...原创 2018-05-25 23:06:46 · 155 阅读 · 0 评论 -
【Linux】网络编程套接字
1、想要了解套接字,想让我们了解一些关于套接字的一些基础知识。 (1)先来认识一下什么是IP地址? IP地址一共有两个分类,IPV4和IPV6,一般情况下无特殊说明的都是IPV4协议。 IP地址的概念: IP地址是在IP协议中,用来标识网络中不同主机的地址。 对于IPV4来说,IP地址是一个4字节,32位的整数。 对于IPV6来说,IP地址是一个16字节,128位的整数。 我们通常也...原创 2018-06-03 00:52:42 · 305 阅读 · 0 评论 -
【Linux】Linux进程间通信之信号量
1、信号量概念引入在我们过去学习的进程间通信中,共享内存无疑是最快的进程间通信,但是共享内存没有进行同步互斥,而信号量的功能就是实现同步和互斥2、同步和互斥概念介绍那么什么是同步和互斥呢?以下我们一一进行介绍:先来介绍进程互斥相关概念:(1)由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥,就是一个进程使用这份资源另外一个进程就不能使用,...原创 2020-04-02 15:32:18 · 747 阅读 · 0 评论