Linux
文章平均质量分 88
2023框框
这个作者很懒,什么都没留下…
展开
-
如何通过域名获取主机ip地址
它是Linux系统上一个负责ip地址与域名快速解析的文件。hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来查找。可以通过将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问。系统查询域名的优先级为。的主机数据库文件中保存了一个主机名查询静态表。.除此之外,也可以使用下面的函数在程序中查看映射表。下面是获取主机信息的相关函数,使用时需要包含。转载 2022-12-18 23:49:35 · 1363 阅读 · 0 评论 -
Linux 常见的锁
我们在开发中使用的几种常见的锁主要有互斥锁、自旋锁、读写锁、乐观锁和悲观锁这五种。转载 2022-12-14 14:26:21 · 1643 阅读 · 0 评论 -
Linux 线程池
线程池就一堆已经创建好的任务线程,初始它们都处于空闲等待状态,当有新的任务需要处理的时候,就从这线程池里取一个空闲的线程来处理任务,当任务处理完成后再次把线程返回线程池里(把线程置于空闲等待状态),以供后面线程继续使用。当线程池里所有的线程都处于忙碌状态时,可以根据情况进行等待或创建一个新的线程放入线程池里。原创 2022-12-13 22:04:56 · 727 阅读 · 1 评论 -
线程安全下单例模式
单例模式是一种 “经典的, 常用的, 常考的” 设计模式定义对象无非就是根据对象结构开辟内存空间、然后进行赋值初始化。即加载内存。原创 2022-12-13 16:23:08 · 378 阅读 · 1 评论 -
linux 信号量
此时由于生产者生产的很快,运行代码后一瞬间生产者就将环形队列打满了,此时生产者想要再进行生产,但空间资源已经为0了,于是生产者只能在blank_sem的等待队列下进行阻塞等待,直到由消费者消费完一个数据后对blank_sem进行了V操作,生产者才会被唤醒进而继续进行生产。虽然消费者消费的很快,但一开始环形队列当中的数据资源为0,因此消费者只能在data_sem的等待队列下进行阻塞等待,直到生产者生产完一个数据后对data_sem进行了V操作,消费者才会被唤醒进而进行消费。转载 2022-12-12 21:10:10 · 108 阅读 · 0 评论 -
生产者消费者模型
我们先设计一个单消费者单生产者模型的阻塞队列,一个生产者线程给队列放入数据,另一个消费者线程往队列拿数据,队列就是交易场所,现在我们有了1个交易场所,两中角色,现在我们只需要维护角色之间的一个个关系即可,因为我们是单消费者单生产者,生产者和生产者,消费者和消费者,不需要维护。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。原创 2022-09-03 09:16:38 · 872 阅读 · 12 评论 -
Linux 线程安全
线程A第一次抢到1张票时,还剩999张票,当线程A再次抢票操作时,完成了第一步操作后,因为时间片的原因被OS切换,这时候线程A把票数为999的数据放到自己的上下文数据里保存,轮到线程B去抢票,线程B抢完了,还剩下1张票,这时候切换回线程A,线程A恢复上下文数据,这时候CPU看到的票数为999,最后。条件等待是线程间同步的一种手段,如果只有一个线程,条件不满足,一直等下去都不会满足,所以必须要有一个线程通过某些操作,改变共享变量,使原先不满足的条件变得满足,并且友好的通知等待在条件变量上的线程。...原创 2022-09-01 01:01:31 · 382 阅读 · 1 评论 -
Linux线程控制
每个线程还有自己的线程局部存储,当中包含了对应线程被切换时的上下文数据。注意: 在Linux中,应用层的线程与内核的LWP是映射关系的,实际上操作系统调度的时候采用的是LWP,而并非PID,只不过我们之前接触到的都是单线程进程,其PID和LWP是相等的,所以对于单线程进程来说,调度时采用PID和LWP是一样的。: 用pthread_self函数获得的线程ID与内核的LWP的值是不相等的,pthread_self函数获得的是用户级原生线程库的线程ID,而LWP是内核的轻量级进程ID,它们之间是映射的关系。..原创 2022-08-30 01:18:25 · 280 阅读 · 0 评论 -
Linux 多线程概念
1、在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。2、一切进程至少都有一个执行线程。3、线程在进程内部运行,本质是在进程地址空间内运行。4、Liunx下没有专门为线程设计TCB(线程的数据结构),而是用进程的PCB来模拟线程。原因不用维护复杂的进程和线程关系,不用单独为线程设计任何算法。常规的做法就是设计出一套线程,比如 windows系统。...原创 2022-08-29 15:20:55 · 330 阅读 · 0 评论 -
Linux 进程信号
文章目录1. 初识信号1.1 生活角度的信号1.2 信号的生命周期1.3 技术应用角度的信号1.3.1 用kill -l 命令查看系统定义的信号列表1.4 信号处理常见方式signal()上述总结:2、 产生信号2.1 通过终端按键产生信号2.2 通过系统函数向进程发信号2.3 由软件条件产生信号2.4 硬件异常产生信号2.5 上述总结:2.6 笔试常问题3. 阻塞信号3.1 信号其他相关常见概念3.2 在内核中的表示3.3 sigset_t3.4 信号集操作函数3.4 sigprocmask3.5 si原创 2022-08-17 00:52:15 · 185 阅读 · 1 评论 -
Liunx 进程通信
cat打印的数据给wc指令进行处理。每个进程都有一份独立的虚拟地址空间和页表,使得进程具有独立性,一个进程是看到另一个进程的资源,进程交互数据成本一定很高。此时的进程是不具备通信能力的,就这样的原因,操作系统要设计通信方式。两个进程要互相通信,必须得先看到一份由操作系统管理的公共资源,这里其实就是一段内存,可能以文件方式提供也可能提供的就是原始的内存块,这也就是通信方式有很多种的原因。...原创 2022-08-15 17:52:12 · 336 阅读 · 0 评论 -
Linux 基础IO
读文件输出信息到显示器,你有哪些方法所有的文件操作,表现上都是进程执行对应的函数!进程对文件的操作,对文件的操作就要先打开文件,打开文件的本质就是加载文件相关的属性,加载到内存!操作系统中存在大量的进程,进程对文件的比例是 1:n,那么系统中就存在可能更多的,打开文件!打开文件是加载到内存中,os必须对文件进行管理,先描述后组织,struct file{ //包含了打开文件的相关属性 // 打开文件之间的链接属性}C默认会打开三个输入输出流,分别是stdin, stdout, stderr原创 2022-08-12 14:29:22 · 684 阅读 · 0 评论 -
Linux 进程控制
父进程调用waitpid(输出型参数status_p),子进程有它自己的PCB,mm_stuct,页表,通过这些进行映射到实际的物理内存中,子进程退出时先进入到僵尸状态:PCB保存进程退出时的退出数据,退出数据包含,int exit_code,int signal ,然后父进程拿到两个退出数据,通过输出型参数status_p返回,status_p是一个指针,通过解引用,就是能找到用户层status实体,并且让父进程。失败返回就需要执行后续的代码!否则,操作系统会根据该参数,将子进程的退出信息反馈给父进程。.原创 2022-08-02 23:33:53 · 690 阅读 · 18 评论 -
Linux进程概念
OS最终这样设计的目的,达到一个目标每个进程都认为自己是独占系统资源的!最后解析为什么父子g_val是两个相同的地址,原因就是进程虚拟地址空间,在语言上我们用的都是虚拟地址,当创建子进程时,子进程以父进程为模版创建,所以此时,子进程的页表地址空间与父进程基本一样,当子进程对g_val进行修改时,os检测到要进行写时拷贝,开辟新空间复制g_val值,改变子进程页表对g_val的物理映射。父子进程对g_val的虚拟地址从未改动过,所以打印的g_val的地址是一样的。补充所有的只读数据,一般在物理内。......原创 2022-07-29 12:42:31 · 447 阅读 · 4 评论 -
冯诺依曼体系结构
CPU是用来计算和控制的,CPU通过内存交互获取数据,CPU可以控制外设设备,内存设备,但是CPU也会受到其它硬件控制,内存的获取速率比硬盘高。通过图片理解,我认为冯诺依曼体系像搬运,而CPU就是总指挥。...原创 2022-07-25 20:56:48 · 177 阅读 · 0 评论 -
LInux——动静态库制作与使用
文章目录动静态库的基本概念静态库的制作与使用打包使用动态库的制作与使用打包使用动静态库的基本概念静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic原创 2022-04-23 21:59:22 · 1816 阅读 · 0 评论 -
Linux基础指令的基本操作(一)
文章目录Linux用户管理:1.adduser添加用户2.passwd修改用户密码3.userdel删除用户其他指令alias指令(取别名)whoami指令man指令(重要)bc指令unamefreedf -hLinux 访问指令和查看指令ls指令(查看目录)ll与ls指令的区别cd 指令 改变工作目录(重要)相对路径和绝对路径. 和 .. 的含义cat指令more文件查看less指令(重要)head指令tail指令重定向和管道(重要)grep (索搜指令)Linux文件创建与修改操作touch指令(创建普原创 2022-01-29 14:37:35 · 2135 阅读 · 1 评论 -
Linux——基础IO
文章目录先来段代码回顾C文件接口写文件读文件输出信息到显示器,你有哪些方法默认打开的三个流:stdin & stdout & stderr系统接口openclosewriteread文件描述符fd文件描述符的分配规则重定向重定向原理dup2FILE理解文件系统初始文件inodestat命令磁盘的概念磁盘的基本概念磁盘线性存储磁盘分区与格式化磁盘分区磁盘格式化EXT2文件系统的存储方案理解硬链接理解软链接先来段代码回顾C文件接口写文件#include<stdio.h>int原创 2022-04-22 08:17:51 · 1984 阅读 · 0 评论 -
Linux 权限(二)权限掩码 粘滞位 详细
文章目录Linux权限的概念Linux权限管理01.文件访问者的分类(人)02.文件类型和访问权限(事物属性)02.文件类型和访问权限(事物属性)![在这里插入图片描述](https://img-blog.csdnimg.cn/f5cf55d2a550499babdbbb3b796c182c.png)test.txt文件由 root创建,所以该文件拥有者是root,Linux权限的概念Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用原创 2022-01-30 14:49:28 · 2455 阅读 · 18 评论