![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
linux
汪汪要努力呀
这个作者很懒,什么都没留下…
展开
-
【Linux】——消息队列
1、消息队列概述2、消息队列相关函数3、实例原创 2020-08-06 20:34:31 · 395 阅读 · 0 评论 -
【Linux】——信号
1、信号概述1.1 概念信号是操作系统预先定义好的某些特定的事件,信号可以被产生也可以被接收,产生和接收信号的主体都是进程作用就是一个进程向另外一个进程通知某一事件的发生。信号是软件中断,很多比较重要的应用程序都需处理信号。信号提供了一种处理异步事件的方法。【举个栗子】终端用户键入中断键,则会通过信号机制停止一个程序,或及早终止管道中的下一个程序。信号的定义文件位置在:/usr/include/bits/signum.h文件内容如下:如上图所示,在头文件<signal.h>中原创 2020-08-06 18:08:27 · 189 阅读 · 0 评论 -
【Linux】——库函数&&系统调用的区别
1、系统调用和库函数1、系统调用简答原理简单来理解一下,就是操作系统提供给我们的接口,让我们可以与硬件设备(如磁盘、打印机和CPU)进行交互。具体的,当发生系统调用的时候,内核将调用内核相关函数(如sys_read()等)来实现,这时CPU产生中断,陷入内核,用户态转成内核态执行内核系统调用函数。带有缓冲区的系统调用系统调用不断地在用户态和内核态转换,这影响了系统性能,产生系统开销。为了减少开销,我们减少系统调用地次数,并且尽量在内核态地一次转换中完成更多地任务。2、库函数Linux提供了一原创 2020-08-06 16:56:50 · 343 阅读 · 0 评论 -
【Linux】——系统调用
1、基本概念1.1文件描述符系统调用是在内核空间执行的,那么我们就需要了解在内核中是如何标识文件的。对于内核而言,所有打开的文件都通过文件描述符(简称fd)引用就是标识文件描述符是一个非负整数,指代被打开的文件,当打开一个现有的文件或创建一个新文件时,内核向进程返回一个文件描述符,将其作为参数给系统调用的I/O操作。POSIX标准要求每次打开文件时,必须从小到大申请文件描述符,那么最小的文件描述符是几呢?不是0,因为系统已经规定了前三个:文件描述符POSIX名称 (常量定义在头文件<转载 2020-08-06 16:34:28 · 165 阅读 · 0 评论 -
【Linux】——库函数
1、库函数的基础概念2、基础文件操作函数2.1fopen2.2fread2.2fwrite2.4fseek2.5fclose转载 2020-08-06 16:02:26 · 1915 阅读 · 0 评论 -
【Linux】——操作系统基础知识
1、计算机基本部件1.1五大部件基于冯诺伊曼体系,将计算机分为5大组成部分:运算器:也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运算,移位,比较等。要注意PC机32位或64位表示的是运算器计算能力,ALU的宽度,一次计算能够计算的数据的位数。控制器:它是整个计算机系统的控制中心,它指挥计算机各部分协调工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。存储器:存储程序和各种数据。输入设备:把人所熟悉地信息,如,图片,声音,文字,转换为计算机能够识别地信息存储转载 2020-08-06 15:35:56 · 216 阅读 · 0 评论 -
【Linux】——用户管理命令 && 文件系统 && 连接文件 && 系统知识
1、用户管理命令1.1 3个存储用户信息的文件Linux是多用户的操作系统,对于用户和系统的管理一般都是root最高权限的管理员来管理,我们首先了解一下用户的信息都是在哪里存放的,三个文件:我们先进入cd /etc,进入etc,它包含了存放系统的配置文件,包括vim,网络配置等。1、 vim passwd:存储用户UID,GID详细信息文件里面的内容每一行代表一个账号,有几行就代表系统中有几个用户,里面也存在系统正常运行所必须的账号,我们成为系统称号,例如bin,adm等。【举个栗子】其中账转载 2020-08-06 15:12:04 · 407 阅读 · 0 评论 -
【Linux】——Linux常见文件命令
1、文件编辑命令vi/vim我们需要在Linux上编写代码,那么自然离不了vi/vim,普通文件,目录文件里面是文件,所以对文件的操作就是对目录文件的操作。vi 和vim是一样的,底层都是vim。vim 文件名//存在打开,不存在创建但是我们初次打开它肯定没有向visual那样的有格式,所以我们要做的第一件事就是配置文件。1、配置文件方便我们进行写代码,我们将我们每次打开的文件进行配置,让其可以自动缩进,显示行号等在当前用户的家目录下创建并编辑(.vimrc或者.virc)vim .vim原创 2020-08-06 10:55:10 · 1824 阅读 · 0 评论 -
【Linux】——Linux文件类型,权限及基本操作
1、文件类型我们需要通过ls -l 查看文件的具体信息,最前面的标识符可以查看文件类型。每种文件都有标识符。普通文件:- 只要不属于下面4个就属于普通文件目录文件:d 文件夹管道文件:p 进程间通信会用到连接文件:l 类似于快捷方式设备文件:(字符设备文件c,块设备文件b,套接字s)2、文件属性文件类型对不同用户的权限标识权限r读w写x普通文件:可以执行;目录文件:可以进入-没有权限针对普通文件来说就是连接数,针对目录文件转载 2020-08-06 09:51:33 · 140 阅读 · 0 评论 -
【Linux】——目录结构
1、Linux内核版本1、uname -a查看自己的Linux版本号2、打开一个终端2、Linux系统目录结构介绍1、类似一颗倒状树,如下:2、常见目录说明目录说明/bin存放常用命令即二进制可执行程序(如ls,pwd)/etc存放系统的配置文件,包括vim,网络配置等/root管理员用户的家目录,给多个用户可以单独划分家目录,实现多用户同时工作。不同用户权限不同。/usr存放系统应用程序及文档,如系统的gcc,并存储.h头文件/lib转载 2020-08-06 09:02:58 · 294 阅读 · 0 评论 -
【Linux】——进程管理命令
一、关于进程二、查看进程命令(一)ps(二)top(三)pstree(四)jobs三、前台&&后台运行进程命令四、挂起后台进程命令五、结束进程命令转载 2020-08-05 10:02:50 · 514 阅读 · 0 评论 -
【高性能服务器编程】——线程池
文章目录1、引言2、线程池3、线程池的代码实现1、引言在我们之前所讲述过的以poll方式实现TCP服务器流程,我们仔细研究一下会发现,客户端的数据我们还是以串行的方式来处理的。由此我们提出了以多进程或者多线程的方式来加以实现是不是会更好。比如采用多进程的方式,在处理客户端发来的数据时让其子进程来处理,父进程只负责监听文件描述符上面有哪些事件就绪。但是这种方式还是会有bug出现,比如有僵死进程的情况出现和创建进程的代价很大等情况发生。此处代码可以写成如下:pid_t pid = fork();ass原创 2020-05-28 20:48:18 · 252 阅读 · 0 评论 -
【Linux】——锁和死锁
1.锁的实现2.死锁2.1什么是死锁2.2为什么会发生死锁2.3死锁的应付3、哲学家就餐问题4、银行家算法原创 2020-06-29 23:30:45 · 269 阅读 · 0 评论 -
【Linux】——线程安全
1、线程安全1.1线程安全的概念1.2造成线程不安全的原因1.3如何保证线程安全2、多线程下fork之后子进程的状态3、多线程下锁的状态原创 2020-06-29 17:40:06 · 247 阅读 · 0 评论 -
【Linux】——线程同步与互斥
1、同步和互斥的概念2、互斥锁(同步)3、条件变量(同步)4、读写锁(同步)5、信号量(同步与互斥)原创 2020-06-28 18:06:51 · 334 阅读 · 0 评论 -
【Linux】——线程的概念和创建
1、线程概述2、线程的实现方式2.1操作系统的实现方式2.2Linux系统的线程实现方式3、线程、进程、协程之间的区别和联系4、Linux系统上线程库的使用4.1线程相关函数的使用4.2多线程之间共享的资源原创 2020-06-27 16:51:30 · 317 阅读 · 0 评论 -
【Linux】——共享内存
1、共享内存的定义和原理2、特点3、共享内存的使用4、应用5、进程间通信的几种方式总结原创 2020-06-26 16:08:18 · 2224 阅读 · 3 评论 -
【Linux】——信号量
1、引言2、概念3、信号量的原理4、信号量的使用5、实例原创 2020-06-25 14:36:12 · 502 阅读 · 0 评论 -
【Linux】——同步问题之消费者生产者
关于生产者消费者的同步问题,是操作系统中比较经典的问题。在面试的通常会考第一点让你说出生产者消费者模型,第二点会给你该模型的使用场景,然后实现代码。这篇文章就让我们对其了解了解吧~一、生产者消费者模型描述两个或者更多的进程(线程)共享同一个缓冲区,其中一个或多个进程(线程)作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个进程(线程)作为“消费者”从缓冲区中取走数据。其模型关注的是以下几...原创 2020-02-13 10:43:53 · 614 阅读 · 0 评论 -
【Linux】——管道
1、管道1.1引言1.2有名管道1.3无名管道2、消息队列原创 2020-06-23 21:59:31 · 903 阅读 · 2 评论 -
【Linux高性能服务器编程】——高性能服务器框架
文章目录1、服务器模型2、服务器编程框架3、两种高效的事件处理模式4、两种高效的并发模式1、服务器模型1.1C/S模型这种模型通俗一点来说就是所有客户端都通过访问服务器来获取所需的资源。这种模型的逻辑非常简单,如下图所示:服务器启动过后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接。服务器稳定运行过后,客户端就可以通过调用connect函数向服务器发起连接。此时,针对客户端连接到达的异步事件,服务器就通过一种I//O模型原创 2020-05-29 19:43:21 · 255 阅读 · 0 评论 -
【Linux】——僵死进程和进程替换
一、僵死进程1、僵死进程概述2、僵死进程的解决方法二、进程替换1、进程替换的概念2、exec函数原创 2020-04-14 22:42:14 · 182 阅读 · 0 评论 -
【Linux】——文件操作系统调用
一、文件I/O函数二、原子操作三、实例四、库函数和系统调用函数的区别原创 2020-04-13 21:43:51 · 1346 阅读 · 0 评论 -
【Linux】——进程创建fork()详解
文章目录一、fork作用二、fork()特性1、父子进程之间的关系2、父子进程返回情况3、父子进程执行情况三、写时拷贝技术1、概念2、特点一、fork作用我们都知道fork可以用于进程的创建,那首先我们来了解一下fork的两种用法才真正的了解我们何时才会用到fork来进行进程的创建用法一:一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是最常见的——父进程等待客...原创 2020-04-10 22:57:18 · 10541 阅读 · 3 评论 -
【Linux】——进程概述
一、操作系统对进程的管理1、了解进程2、操作系统对进程的控制方式二、进程的状态原创 2020-04-09 20:15:58 · 503 阅读 · 0 评论 -
【Linux】——库文件
一、库文件的定义库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在:/lib和 /user/lib。在64位的系统上有些库也可能被存储在/user/lib64 。库的头文件一般会存储在/user/include下或其子目录下。比如说libc libstdc++,库是一些特定功能的实现,为用户提供一些调用接口。库有两种,分别是静态库和动态库之分,下图为库分别在不同系统下的呈现方式...原创 2020-04-08 16:58:35 · 429 阅读 · 0 评论 -
【Linux】——makefile
一、什么是makefile在一个大型工程中,工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。通俗一点理解就类似于windows下的IDE。二、makefile优势与make命令makefile 带来的好处就是——“自动化编译”,一旦写好,只需...原创 2020-04-07 22:43:55 · 175 阅读 · 0 评论 -
【Linux】——socket
TCP和UDP服务通常有一个客户和服务器的关系,而这个网络关系是依靠Socket进行连接和维持的。Socket是一个软件结构,是指TCP/IP的API。Socket接口定义了许多函数和例程,可以用其来开打TCP/IP协议网络上的应用程序。这篇文章让我们来好好了解一下它吧~一、socket地址1、通用socket地址表示socket地址的是结构体socketaddr2、专用socket地...原创 2020-02-26 22:51:56 · 229 阅读 · 0 评论