
linux
文章平均质量分 69
KHY666
这个作者很懒,什么都没留下…
展开
-
线程池
线程池1>.**降低资源消耗。**通过复用已存在的线程,降低线程创建\关闭的次数来尽可能降低系统性能损耗;2>.**提升系统响应速度。**通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度;3>.**提高线程的可管理性。**线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。...原创 2021-04-28 22:18:26 · 178 阅读 · 0 评论 -
网络编程二(UDP)
网络编程二(UDP)UDP可能出现缓冲区被填满,再次接收数据会出现丢包的情况.UDP没有滑动窗口机制,所以靠以下方法解决:1>在服务器应用层设计流量控制,控制发送数据的速度;2>使用setsockopt()函数修改缓冲区大小.#include<sys/socket.h>//原型:int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t optlen);int n 220*1024sets原创 2020-12-18 10:15:35 · 257 阅读 · 0 评论 -
linux网络编程-高并发服务器
linux网络编程-高并发服务器1.多进程\多线程版高并发服务器(使用与客服端数量不多的情况,不适用与大型开发,该方法需要自己监听\处理对系统资源消耗太大.应用比如智能家居系统.)2.多路I\O转接服务器(多任务I\O服务器)核心思想:不再由应用程序自己监听客服端的连接,由内核替代.主要的实现方法有三种:1> select2> poll3> epoll1.多进程\多线程版高并发服务器1>.多进程版/**********************************原创 2020-12-03 19:47:53 · 410 阅读 · 1 评论 -
网络编程一(C/S-TCP模型)
协议1>预备知识1>网络数据流采用大端字节序(高对高);(补充:x86系统采用小端字节序(低对低))因此,在socket编程时需要将主机字节序转换为网络字节序(如果主机采用大端模式,则不需要转换)(路由传输(大端),链路层\网络层)/******************************************************** *函数4:htonl()\htons()\ntohl()\ntohs *头文件:#include <arpa/inet.h> *格式.原创 2020-12-02 09:06:47 · 428 阅读 · 0 评论 -
linux-线程\进程同步
线程\进程同步线程同步1>同步概念:协同步调,按预定先后顺序访问共享数据.2>访问共享数据的所有线程都硬加锁.(不加锁就可以直接访问)1.互斥量(互斥锁)(mutex)1>访问共享资源后应立即解锁(保证加锁粒度最小)2>死锁问题:1:对同一个锁加锁两次,第二次就会阻塞等待(解决办法:细心);2:两个线程同时去加锁对方已经加锁的锁时,双方均会阻塞等待.使用trylock一样(解决办法:当线程不能索取全部锁时,主动放弃所有的锁让对方加锁完成访问后释放锁)3>实现 #include&原创 2020-11-28 14:18:51 · 168 阅读 · 0 评论 -
linux-线程
linux线程- 线程的概念1>linux的线程与windos的线程区别很大(win的线程比较完善,进程不行,linux的进程发展的更早)2>每一个进程都会分配0-4G的虚拟空间地址,而线程共享0-4G的虚拟地址空间,但每一个线程有自己不同的pcb.但pcb中指向内存资源的三级页表是相同的三级页表(mmu映射虚拟地址到物理内存的过程)3>线程是最小的执行单位(抢占cpu的最小单位(根据线程的LWP号(使用ps -Lf pid//查看指定的线程LWP号))),进程是最小的资源分配单位(0-4G资原创 2020-11-25 15:46:38 · 268 阅读 · 0 评论 -
Linux 常规信号一览表
Linux 常规信号一览表SIGHUP:本信号在用户终端结束时发出,通常是在终端的控制进程结束时,通知同一会话期内的各个作业,这时他们与控制终端不在关联。比如,登录Linux时,系统会自动分配给登录用户一个控制终端,在这个终端运行的所有程序,包括前台和后台进程组,一般都属于同一个会话。当用户退出时,所有进程组都将收到该信号,这个信号的默认操作是终止进程。此外对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。SIGINT:程序终止信号。当用户按下CRTL+C时通知前台进程组终止进程。SI原创 2020-11-13 14:33:42 · 208 阅读 · 0 评论 -
Linux-信号
信号掌握知识点:- 1.信号1>信号的概念共性:1简单;2不能携带大量信息(比如:不能携带结构体);3满足某个条件才发送.2>每个信号都是内核处理3>信号的两种状态:1.递达;2.未决(阻塞(屏蔽)造成的)4>信号处理的三种方式:1执行默认动作;2忽略(丢弃)(不是不处理,是处理方式是丢弃.);3捕捉(不执行默认动作,调用用户定义的函数)5>信号四要素:1编号,2名称;3事件;4默认处理 ;其中默认处理包括下图五项:man 7 signal //查看man文档,如果编号有三个的事件l原创 2020-11-19 15:43:51 · 232 阅读 · 1 评论 -
Linux进程控制4-进程间通信(IPC)
进程控制4-进程间通信(IPC)进程间的全局变量独立,另一个进程无法获得,因此要交换数据必须通过内核.(在内核区建立一块缓冲区,进程1把数据从用户空间写入内核缓冲区,进程2再从内核缓冲区读取数据称为IPC)常见的进程间的通信方式:1>管道(使用简单)2>信号(系统开销最小)3>共享映射区(无血缘关系)4>套接字(最稳定)1.管道解释:a:伪文件:文件类型包含:普通文件(-),目录(d),符号链接(l),套接字(s),块设备(b), 字符设备(c),管道(p),其中套接字(s),块设备(原创 2020-11-06 20:25:04 · 232 阅读 · 0 评论 -
Linux 终端-进程组-会话-守护进程
- 终端1>ctrl+alt+(1-6)文字终端,7是图形终端文字终端(bash)的启动流程- 网络终端- 进程组(作业)1>进程组ID=第一个进程ID(组长ID)2>kill -SIGKILL -进程组ID(负的) //杀死进程组内的全部进程3>进程组生命周期:进程组创建到最后一个进程结束(注意:组长进程结束,该进程并不会结束)4>进程组操作函数#include<stdio.h>#include<unistd.h>#include<stdlib.h&原创 2020-11-19 22:02:58 · 155 阅读 · 0 评论 -
Linux进程控制2-exec函数族
exec函数族fork子进程后,父子进程使用的是同一代码,要想子进程执行父进程以外的代码,就需要调用exec函数族来实现.execlp()1>该函数通常用来调用系统程序:ls;date;cp…2>实现#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdio.h>#include <unistd.h>#include<原创 2020-11-05 17:40:03 · 328 阅读 · 0 评论 -
Linux进程控制3-子进程回收
Linux进程控制原创 2020-11-05 15:48:34 · 303 阅读 · 0 评论 -
Linux进程控制1-创建子进程
Linux进程控制-创建进程/进程共享创建子进程#include<unistd.h>#include<stdio.h>#include<stdlib.h>int main(){ printf("*****************\n"); /******************************************************* *函数:fork() *头文件:#include <unistd.h> *格式原创 2020-11-06 10:29:10 · 356 阅读 · 0 评论 -
linux系统环境变量
linux系统环境变量linux系统:多用户多任务(并行)的开源操作系统.环境变量1>环境变量:指定操作系统运行环境的参数.2>本质:字符串(NULL结尾)3>格式: 名称=值1:值24>环境变量表 (extern char ** environ) 命令行:env也可查看.#include<stdio.h>extern char** environ;/********************************************************输出当前进原创 2020-11-04 15:20:02 · 155 阅读 · 0 评论 -
进程相关的概念
进程相关的概念程序:编译好的二进制文件,(在磁盘上,不在内存上),不占用系统资源(cpu,内存,打开的文件,设备,锁…)进程:活跃的程序,占用系统资源.在内存中执行.并发:一个时间段有多个进行在运行,但在一个时间点只有一个进程在运行.1>区别单道程序设计模式与多道程序设计模式单道程序设计模式:一个cpu,多个任务,但计算机是一个任务运行完后再运行下一个任务(比如DOS系统)多道程序设计模式:一个cpu,多个任务,通过时钟中断分派cpu的运行时间给不同的进程.可以实现并行运行.(将cpu的运行时原创 2020-11-04 11:10:09 · 194 阅读 · 0 评论 -
linux系统I/O函数
linux系统I/O函数注意:调用系统函数注意返回值的判断对错误进行输出和形参的选择open()查看man文档:man 2 open //2 -第二章#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdio.h>#include <unistd.h>#include<stdlib.h>int main(){ int原创 2020-11-03 16:19:37 · 268 阅读 · 0 评论 -
虚拟地址空间
虚拟地址空间(用户区和内核区)a.out开始运行,系统就会分配0-4G的虚拟地址空间(32位(2^32=4G))(分了4G,用户用了多少磁盘才少多少空间,4G只是用户可用的)虚拟地址空间的作用:a:虚拟地址空间与物理地址空间映射,可以使虚拟地址空间访问一系列不连续的物理地址空间b:方便进程之间的隔离(不同进程的虚拟地址彼此隔离)c:方便系统使用内存(因为内存很小,数据和代码方便在内存与磁盘之间移动)用户区(0-3G)1>最底层受保护地址:比如NULL指针地址就是在这里.不允许占用.2>.原创 2020-11-01 16:31:48 · 519 阅读 · 0 评论 -
C库函数
- c库函数FILE *就是一个结构体.1>文件读写指针位,当我们写文件时,有一个指针进行位置索引,当我们要读文件时就要考虑当前文件读写指针的位置,如果在写文件时就开始读,读出来的数据是写入文件后的值.2>I/O缓冲区,作用:提升读写效率(硬盘的寻道时间(ms)与内存读写(ns)之间(缓存)的差距)3>通常通过fflush和fclose的方法来刷新缓存....原创 2020-11-01 15:28:02 · 275 阅读 · 0 评论 -
makefile
makefile(代码编译管理工具)命名方式1>makefile //全部小写2>Makefile //首字母大写makefile 的规则(三要素 :目标,依赖,命令)目标:依赖条件(table缩进)命令app是终极目标,:后面的是生成app所需要的依赖table换行然后写具体的实现命令 不直接写gcc -o app的好处是通过下面的几个语句,生成对应的.o文件,下一次编译的时候makefile会检查对应的依赖文件的修改时间,如果都晚于app的修改时间就不用编译,只编译时间早于app的原创 2020-10-29 20:46:39 · 408 阅读 · 0 评论 -
静态库,共享库(动态库)
静态库命名方式lib+库名字+.aeg:libMytest.a制作静态库步骤1>把所有的.c文件生成.o的二进制文件(防止用户看见源码)gcc *.c -c2>将生成的.o文件打包ar rcs 生成静态库的名字(libMytest.a) 依赖的所有.o文件发布制作的静态库和头文件(包含函数的接口)//这样用户就只有接口和二进制代码,规避了源码实现的方法.调用静态库的方式:1>gcc main.c -I include -L lib -l Mytest -o my原创 2020-10-28 11:44:52 · 172 阅读 · 0 评论 -
gcc编译的四个过程
1.gcc编译的四个过程原创 2020-10-27 10:06:00 · 198 阅读 · 0 评论 -
linux其他命令
linux其他命令man manecho “xx” eg: echo $ PATH($取地址)sudo poweroff(关机)sudo reboot(重启)sudo shutdown原创 2020-10-26 14:35:45 · 105 阅读 · 0 评论 -
linux ftp\nfs\ssh服务器搭建
linux ftp\nfs\ssh服务器搭建1.ftp服务器的搭建(vsftpd)作用:文件的上传和下载服务端(serve)1>安装 sudo apt-get install vsftpd(vsftpd需要安装)2>修改配置文件进入/etc/vsftdp.conf 进行相关的配置3>重启服务sudo service vsftdp restart客服端(client)1>安装 sudo apt-get install vsftpd(vsftpd需要安装,默认的服务原创 2020-10-23 16:15:14 · 192 阅读 · 0 评论 -
进程管理
进程管理1.who原创 2020-10-22 09:49:08 · 105 阅读 · 0 评论 -
linux打包压缩
linux打包压缩与常用的服务器1. 压缩包管理原创 2020-10-22 09:33:50 · 148 阅读 · 0 评论 -
Linux文件、目录操作
Linux文件操作目录1Linux文件操作1.命令解析器2.快捷键3.Linux系统目录(tree)4.用户目录5.文件和目录的操作(tree或ls)1.命令解析器shell-----unix系统bash-----linux系统本质:根据输入的命令去调用对应的可执行程序(bin目录里面)2.快捷键1.ctrl+b(f)光标快速左右移动 ctrl+a光标直接移动到头部 ctrl+e光标直接移动到尾部 ctrl+u删除光标前面的所有字符3.Linux系统目录(tree)/原创 2020-10-20 17:20:42 · 110 阅读 · 0 评论