linux
烊萌
欲戴王冠,必承其重;欲登高峰,必忍其痛;欲有大成,必有其梦。
展开
-
【linux操作系统知识】虚拟地址中:.data段和.bss段
虚拟地址中:.data段和.bss段.data段:为数据段,用来存放程序中已初始化并且初始化不为0的全局变量和静态局部变量,数据段属于静态内存分布,可读可写。.bss段:称为未初始化段,用来存放未初始化或者初始化为0的全局变量和静态局部变量。bss段不占用物理文件尺寸,但占用内存空间;data段占用物理文件,也占用内存空间。当程序读取data段的数据时,系统会发生缺页中断,从而分配相应的物理内存;当程序读取bss段的数据段时,内核会将其转到一个全零页面,不会发生缺页中断,也不会为.原创 2020-09-13 14:34:43 · 1302 阅读 · 0 评论 -
【操作系统知识】进程、线程、协程
进程、线程、协程进程:操作系统分配资源的最小单位; 有自己的独立地址空间; 有独立的内存资源,代码段、数据段、堆栈段; 进程间互不干扰,所以通信复杂(管道、消息队列、mmap、socket、信号); 进程间切换消耗大(需要切换页目录,为了提高虚拟地址映射到物理地址的效率,有一个缓存用于缓存常用的映射关系,在切换页目录后,这个缓存就失效了,所以映射命中率就会降低,表现出来就是程序运行慢);线程:操作系统调度的最小单位; 一个进程可以包含多个线程,多个线程共享这一个进程的资源;原创 2020-09-04 09:16:10 · 146 阅读 · 0 评论 -
【linux系列知识】线程、协程、异步
线程、协程、异步线程:CPU调度的最小单位,是操作系统级别的概念。想开辟多线程,需要调用操作系统底层的API。为什么会出现多线程?我们以读取文件为例根据上图所示,我们可以发现当有读取文件请求时,CPU会先触发一个DMA中断,让DMA去处理后面的工作,再中断返回通知CPU处理,当DMA去处理的这段时间,CPU是处于闲置状态的,这时就可以给其他线程去使用,所以如果只是一个单线程程序...原创 2020-02-05 21:26:22 · 202 阅读 · 0 评论 -
【linux系列知识】操作系统内存管理
操作系统内存管理 逻辑地址即虚拟地址,存在目的即为了更充分地利用物理内存,对于一个32的操作系统,虚拟内存大小为4G,所以每个程序都以为自己有4G的内存,算是让内存“无限大”。 为了更好地利用内存空间,我们把内存进行分页,即按照页单位进行获取内存,虚拟内存和物理内存都进行了分页处理,为了区分两者,我们把虚拟内存的称为页,而物理内存的称为帧。而我们需要根据虚拟内存找到对应的...原创 2020-02-05 21:04:53 · 197 阅读 · 0 评论 -
【linux系列知识】用户态和内核态
用户态和内核态用户态:只能受限地访问内存,且不允许访问外围设备内核态:CPU可以访问内存的所有数据,包括外围设备 这两个状态指的都是程序所处的一个状态,当申请外部资源时都需要从用户态转变到内核态,具体由用户态转变到内核态方法有:(1)系统调用;(2)中断;(3)异常例如:1)读写文件: 就是依次系统调用open/read/write等函数,这时就会导致用户态转变到内核态...原创 2020-02-05 20:24:55 · 263 阅读 · 0 评论 -
【linux系列知识】关于linux启动过程
关于linux启动过程1、CentOS 6.x基本启动过程服务器加电,加载BIOS信息,BIOS进行系统检测 加载启动引导程序(grub) 由grub加载系统内核 系统内核重新自检,并加载硬件驱动 由内核启动系统第一个进程/sbin/init 后面依次串联式地调用各个文件,进行系统初始化配置、确定系统的默认运行级别等 执行/etc/rc.d/rc.local中的程序,然后进入登...原创 2020-02-04 15:33:29 · 140 阅读 · 0 评论 -
【linux系列知识】IO多路转接技术
IO多路转接技术目录IO多路转接技术1、简单介绍2、select技术3、poll技术4、epoll技术epoll整个过程epoll三种工作模式1、简单介绍select/poll 委托内核去做 假设:100/30 只能得到有30个在传输数据,需要去遍历100个,找出那30个。 epoll 不用遍历2、select技术在用户区,先构造一张有关文件描述符...原创 2020-01-07 11:26:20 · 281 阅读 · 0 评论 -
【linux系列知识】并发服务器
并发服务器目录并发服务器1、TCP多进程并发服务器2、TCP多线程并发服务器并发:某个时间点处理的任务个数。并发服务器:某个极短时间片内,服务器能接受多少个客户端请求连接。1、TCP多进程并发服务器2、TCP多线程并发服务器注意事项:cfd不能只创建一个; 传入线程函数的参数是一个结构体,对需要数据进行打包; 当不再监听时,只能选择退出主线程,但...原创 2020-01-07 10:22:37 · 175 阅读 · 0 评论 -
【linux系列知识】socket编程
socket编程目录socket编程1、简单介绍2、套接字3、服务器端和客户端通信流程TCP通信UDP通信4、TCP、UDP使用场景5、本地套接字1、简单介绍 网络通信的函数接口,间接操作 tcp/udp ,封装了传输层协议。套接字——socket,必须成对存在。 socket通信必须有两端:服务器端(插座) 被动;客户端(插头) 主...原创 2020-01-06 09:01:24 · 136 阅读 · 0 评论 -
【linux系列知识】线程
线程目录线程1、简单介绍2、线程同步加锁条件变量(生产者消费者模型)信号量(加强版的互斥量)1、简单介绍 轻量级的进程,通信简单,有效利用CPU;明确的执行目的,一个进程内部可以有多个线程,默认一个线程。真正干活的是线程。线程互相独立,所以通信繁琐。 根据是否共享判断是进程或线程。进程是系统最小的分配资源单位,线程是最小的执行单位。...原创 2020-01-05 10:37:54 · 120 阅读 · 0 评论 -
【linux系列知识】进程
进程目录进程1、简单介绍2、进程的状态切换3、PCB进程控制块4、孤儿进程和僵尸进程5、进程间通信方式pipeFIFO通信mmap信号6、守护进程(脱离终端)1、简单介绍通俗讲,编译好的二进制程序是程序,例如a.out;运行着的程序是进程。程序员角度:运行一系列指令的过程操作系统角度:分配系统资源的基本单位区别:程序占用磁盘,...原创 2020-01-04 11:43:54 · 146 阅读 · 0 评论 -
【linux系列知识】基础知识
基础知识linux系统特点:安全、稳定、费用低基本指令:cd、pwd、mkdir、tree、rmdir、rm -r、touch、cat、cp、mv、head/tail权限表示介绍:改权限:chmod u-x a.outfind:find ./ -type l/xargs ls -l xargs将find命令查找的结果分成若干块输出给...原创 2020-01-04 10:44:23 · 129 阅读 · 0 评论 -
YouCompleteMe实现vim自动补全【Ubuntu 14.04以上版本】【简单又详细版】
YouCompleteMe实现vim自动补全1、安装在命令行依次输入:sudo apt-get install vim-addon-managersudo apt-get install vim-youcompletemevim-addons install youcompleteme2、寻找到ycm_extra_conf.py文件cd /usr/lib/ycmdls...原创 2019-08-05 14:50:13 · 683 阅读 · 0 评论 -
【linux环境下】【C语言编译】【使用makefile】【详细版】
前言 这是一个简单地演示C语言如何使用makefile在linux下进行编译。目录前言一、C语言编译1、编写add.c文件2、编写sub.c文件3、编写test.h文件4、编写makefile文件5、执行makefile文件6、高级一点的makefile文件写法7、makefile模板一、C语言编译整个流程:1、编写add.c文...原创 2019-08-02 21:27:56 · 7318 阅读 · 2 评论