Linux操作系统
文章平均质量分 58
fresher_Z
这个作者很懒,什么都没留下…
展开
-
lock_guard函数
一. 功能解释lock_guard函数可以用来包装Mutex,做到自动锁定和解锁。2. linux下源码template<typename _Mutex> class lock_guard { public: typedef _Mutex mutex_type; explicit lock_guard(mutex_type& __m) : _M_device(__m) { _M_device.lock(); } lock_gu原创 2022-02-27 19:33:49 · 632 阅读 · 0 评论 -
阻塞与非阻塞IO、同步与异步IO
目录IO的过程阻塞与非阻塞IO阻塞IO非阻塞IO同步与异步IO同步异步IO的过程数据的准备过程 数据从内核缓冲区拷贝到用户进程缓冲区的过程阻塞与非阻塞IO阻塞IO当用户进程执行read操作的时候,该用户进程会被阻塞。一直等到内核数据准备好,并将数据从内核缓冲区拷贝到用户缓冲区中后,read操作才返回,进程往下执行。阻塞等待的是内核数据准备完成,并且将数据从内核态拷贝到用户态的这两个过程。非阻塞IO当用户进程执行read请求时,非阻塞的read原创 2021-09-02 15:23:09 · 132 阅读 · 0 评论 -
linux下的七大文件类型
1. 七大文件类型普通文件第一个属性为[-],linux中最多的一种文件类型,文本文件,二进制文件等目录文件第一个属性为[d]块设备文件第一个属性为[b],是存储数据,以提供系统随机存取的借口设备,比如硬盘等字符设备文件第一个属性为[c],是一些串行端口的借口设备,如键盘和鼠标等,这些设备是一次性读取和连续输出的套接字文件第一个属性为[s],一般用于网络数据连接管道文件第一个属性为[p]链接文件第一个属性为[l],类似window下的快捷方式...原创 2021-07-29 14:21:55 · 895 阅读 · 0 评论 -
IP数据包在网络中的传输过程
1. 获取目的IP2. 判断源IP与目的IP是否在同一网段 --> 比较IP& Genmask 是否相同 2.1 若在同一网段,则先查询arp缓存中是否有目的ip的mac地址,如果arp缓存中有则封装mac包,将ip数据发送给目的主机;如果arp缓存中没有则发送arp请求得到目的主机的mac地址 2.2 若不在同一网段,则将数据包发送给默认路由(或者是网关),通过多个路由(或者是网关)的转发,找到目标子网。重复2.1的操作。MAC头部 ...原创 2021-07-29 13:43:57 · 3605 阅读 · 0 评论 -
五种IO模型
阻塞IO 系统调用(如read)一直等待文件描述符的数据,直到内核将数据准备好,系统可以拿到数据为止,默认的文件描述符均是阻塞方式。非阻塞IO 每次系统调用都询问内核数据是否准备好,即文件描述符缓冲区是否就绪。当数据准备好是,就进行拷贝数据的操作;当数据没有准备好时,不阻塞程序,内核直接返回为准备就绪的信号,等待用户程序的下一个轮询。 不断的轮询会占用较大的CPU资源,一般只在特定的场景下使用【如ET模式下的socket文件描述符】 使用的基...原创 2021-07-28 22:27:19 · 53 阅读 · 0 评论 -
查看进程占用的CPU和内存情况
目录top命令 top命令的前5行统计信息top命令从第五行开始的信息(进程的详细信息)cat命令ps命令参数案例top命令top 实时查看所有进程的详细信息top -p pid 实时查看进程号为pid的进程详细信息进top界面后按f切换线程的内存显示单位,按F切换系统总的内存显示单位,t,g,m,k,p。默认内存小于1G的线程可以自由切换单位,默认内存大于1G的线程不能自由切换单位。top命令的前5行统计信息第一行内容...原创 2021-07-15 15:20:59 · 6116 阅读 · 0 评论 -
CPU使用率的查看
top命令%us:表示用户空间程序的cpu使用率(没有通过nice调度)%sy:表示系统空间的cpu使用率,主要是内核程序。%ni:表示用户空间且通过nice调度过的程序的cpu使用率。%id:空闲cpu%wa:cpu运行时在等待io的时间%hi:cpu处理硬中断的数量%si:cpu处理软中断的数量%st:被虚拟机偷走的cpu注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%...原创 2021-07-12 14:36:43 · 565 阅读 · 0 评论 -
进程与线程
进程代码是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着CPU会执行程序中的每一条指令,那么这个运行中的程序就被称为进程。并行和并发进程的状态运行状态(runing):该时刻进程占用CPU就绪状态(ready):可运行,但由于其他进程处于运行状态而暂时停止运行阻塞状态(blocked):该进程正在等待某一事件发生而暂时停止运行,这时机试给他CPU控制权,它也无法运行创建状态(new):进程正在被创建时的状态结束状态(Ex原创 2021-05-25 15:24:24 · 462 阅读 · 1 评论 -
linux下共享文件夹与samble配置
共享文件夹配置功能:共享文件下配置基本步骤:虚拟机->设置->选项->共享文件夹->选择目录并开启共享文件夹的目录:/nmt/hgfs/共享文件夹名称共享文件夹无法显示 :方法1(有效):在/mnt下新建一个文件夹cdrom,将/dev/cdrom中的内容挂载到/mnt/cdrom【sudo mount /dev/cdrom /mnt/cdrom】方法2:sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1原创 2021-05-25 15:19:16 · 1376 阅读 · 0 评论 -
linux防火墙相关的操作命令
查看防火墙状态systemctl status firewalld.service关闭防火墙systemctl stop firewalld.service查看关闭以后的防火墙状态开启防火墙systemctl start firewalld.service禁止firewall开机启动systemctl disable firewalld原创 2021-05-24 15:50:43 · 76 阅读 · 0 评论 -
守护进程
概念守护进程是一个(Daemon/精灵)进程,是linux后台服务进程,通常独立于控制终端并且周期性地执行或等待处理某些发生的事件。一般采用以d为结尾的名字。linux后台的一些系统服务器进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着。如预读入缓输出机制的实现,ftp服务器,nfs服务器。创建守护进程模型...原创 2021-05-19 11:12:50 · 62 阅读 · 0 评论 -
计算机基本结构与进程虚拟地址空间
计算机存储结构寄存器寄存器是最靠近CPU的控制单元和逻辑计算单元的存储器,每个寄存器可以存储一定的字节数据。它使用的材料速度是最快的,价格是最贵的,因此数量很少。寄存器的访问速度是非常快的,一般要求在半个CPU时钟周期内完成读写。CPU CacheCPU Cache使用一种SRAM的芯片(静态随机存储器)。只要有电数据就可以保持存在,一旦断电数据就会丢失。其中分为三个告诉缓存L1、L2、L3。L1和L2缓存每个CPU都有,L3缓存是多个CPU共享。L1高速缓存:分为指令缓存和数据缓存,它原创 2021-05-15 11:17:38 · 337 阅读 · 1 评论 -
冯诺依曼模型与程序执行过程
计算机的5个基本结构中央处理器中央处理器就是CPU,32位和64位的CPU最主要的区别在于一次性能计算多少字节的数据。32位CPU一次可以计算4个字节64位CPU一次可以计算8个字节CPU的位宽越大,可以计算的数值就越大。CPU内部有寄存器,控制单元和逻辑运算单元等,1. 控制单元负责控制CPU工作2. 逻辑运算单元负责计算3. 寄存器可以分为多类有通用寄存器:用于存放需要进行计算的数据程序计数器:用来存储CPU要执行的下一条指令的内存地址指令寄存器:存放程序计数器指向的指令,也就是原创 2021-05-14 16:34:08 · 1644 阅读 · 0 评论 -
进程间通信
进程间通信方式每个进程的用户地址空间都是独立的,一般情况下是不能互相访问的,进程之间是共享内核空间的,因此进程之间要通信必须通过内核。管道管道的数据传输是单向的,管道的这种通信方式效率低,不适合进程间频繁的交换数据,但是它的好处是简单。匿名管道:系统调用创建 int pipe(int fd[2]),返回两个文件描述符,fd[0]代表读,fd[1]代表写。匿名管道是特殊的文件,只存在于内存中,不存在与文件系统中。匿名管道,它的通信范围是存在父子关系的进程。因为匿名管道没有实体(没有管道文件),只能通过原创 2021-05-12 21:01:31 · 114 阅读 · 0 评论 -
死锁
概念当两个线程为了保护两个不同的共享资源而使用了两个互斥锁,那么这两个互斥锁应用不当时就会造成两个线程都在等待对方释放锁,在没有外力的作用下,这些线程会相互等待,没法继续运行。死锁产生的条件互斥条件多个线程不能同时使用同一个资源持有并等待当线程A已经持有了资源1,又想申请资源2,但是资源2已经被线程B持有了,所以线程A就会处于等待状态,但是线程A在等待资源2的同时并不会释放自己已经持有的资源1不可剥夺当线程A、已经持有了资源,在自己使用完之前不能被其他线程获取,线程B如果也想使用这个资源,原创 2021-05-12 20:59:59 · 59 阅读 · 0 评论 -
调度算法
进程调度算法先来先服务调度算法:每次从就绪队列选择最先进⼊队列的进程,然后⼀直运⾏,直到进程退出或被阻塞,才会继续从队列中选择第⼀个进程接着运⾏。最短作业优先调度算法:优先选择运⾏时间最短的进程来运行。高响应比优先调度算法:权衡短作业和长作业,计算响应比优先级,将响应比优先级高的进程先投入运行。 优先权 = (等待时间+要求服务时间)/ 要求服务时间时间片轮转调度算法:每个进程都被分配一个时间段,称为时间片,允许进程在该时间片中运行。时间片长度一般为20ms~50ms.最高优先级调度算法:对于原创 2021-05-06 21:26:04 · 341 阅读 · 0 评论 -
linux文件系统
回到根目录的命令:cd /文件系统的结构/bin和/sbinbin是Binary的缩写,存放着可执行文件或者可执行文件的链接。bin中的文件都是可执行的二进制文件,不是文本文件。cp、cat、echosbin是System Binary的缩写,存放着可以对系统配置进行操作的命令。普通用户可以使用它们来查看某些系统的状态,但是需要sudo授权或者切换到超级用户才能更改配置。ifconfig、iptables/boot存放系统启动需要的文件/devdev是device的缩写,存放着所有的设原创 2021-04-30 11:16:15 · 121 阅读 · 0 评论