
linux
文章平均质量分 66
Dongliner~
别废话,使劲学
展开
-
【C++:智能指针】
内存泄漏是指因为疏忽或者错误造成程序对一部分不再使用的内存没有进行释放的情况,内存释放不是指内存在物理上的消失,而是应用程序分配某段内存时,因设计错误,失去了对该内存的控制,从而造成内存浪费。原创 2024-10-25 20:08:52 · 437 阅读 · 0 评论 -
【Linux:生产消费模型】
总结:伪唤醒就是添加未被满足,但线程被异常唤醒叫做伪唤醒。情况:一个生产者只生产唯一的产品,但消费者有两位。锁和条件变量即可实现以上三种关系。原创 2024-10-19 14:30:20 · 969 阅读 · 0 评论 -
【Linux:线程锁】
举个例子,有两个线程,命名为A,B,内存中的临界资源加锁后,lock加锁后为0,未加锁即为1,寄存器中的数据设为0。因此,把数据从内存移动到cpu寄存器中,本质就是把数据从共享变成线程私有。原创 2024-10-10 17:36:34 · 462 阅读 · 0 评论 -
【Linux:线程控制】
主线程需要等待其他线程结束后再退出,避免僵尸进程等情况的出现,线程运行的顺序并不确定,是随机切换的。原创 2024-10-05 17:46:32 · 468 阅读 · 0 评论 -
【Linux:线程概念】
在CPU中存在一个cache,用于存放热数据,在进程切换时,不仅要切换地址空间,页表,上一个进程cache的热数据也要做清空然后重新加载该进程的热数据。但线程是共享地址空间,CPU 中cache的数据每个线程都有可能用上,就不需要清空cache中的数据重新加载。栈 (线程在运行时会形成各种临时变量,这些临时变量会被每个线程保存在自己的栈区)pid和lwp一样的线程叫做主线程。上图可以看见创建了两个线程,但是俩线程的pid却是一样的。热数据: 高频访问的数据、极其重要的文件。一组寄存器(硬件的上下文数据)原创 2024-09-30 18:08:41 · 638 阅读 · 0 评论 -
【Linux:页表转换】
操作系统管理内存并不是以字节位单位,而是以4内存块为单位进行管理的,一个内存块大小为4kb。原创 2024-09-30 10:32:08 · 270 阅读 · 0 评论 -
【Linux:进程信号】
信号的产生是异步的(信号在产生时,进程是不受干扰的,两者独立进行,当信号发送给进程时进程才会识别处理)原因:1.全局变量不能被所有的进程都看见 2.信号量的++或者--不是原子的(原子就是没有中间过程,只有开始和结束)信号的发送与保存本质是修改指定进程PCB的指定位图,PCB是内核数据结构对象,只有OS有资格对其进行修改。信号是Linux系统提供的一种对指定进程发送特定事件的一种方式。【1,31】信号是不可靠的,信号有可能会丢失。【34,64】信号是可靠的,信号不会丢失。原创 2024-09-25 17:40:00 · 821 阅读 · 1 评论 -
【Linux:共享内存】
共享内存不随着进程的结束就释放,因为共享内存不属于进程而属于操作系统,需要手动释放或者后续其它系统调用。共享内存的生命周期随内核。原创 2024-09-19 20:32:19 · 913 阅读 · 0 评论 -
【Linux:命名管道】
当读端关闭时,写端也会退出。原创 2024-09-17 15:29:58 · 369 阅读 · 0 评论 -
【Linux:管道】
每一个进程想要访问物理内存,都是通过访问进程虚拟地址空间当中的虚拟地址进行访问,访问时,通过各自的页表结构,造成了每一个进程和每一个进程的数据独立,由于进程独立性的存在,进程运行时不会相互干扰,但是造成了进程与进程之间相互协作的难点。由此学习进程间通信本质就是为了进程与进程交换数据时使用进程通信的前提是不同的进程能看见同一份资源。原创 2024-08-25 12:15:30 · 430 阅读 · 0 评论 -
【Linux:动静态库】
库文件实际就是把.o文件打包,库文件的出现提高了i开发的效率。原创 2024-09-13 14:10:27 · 418 阅读 · 0 评论 -
【Linux:文件系统】
在操作系统中,为了实现内核对磁盘的管理,对磁盘进行一个逻辑抽象的管理。把磁盘抽象的看作为一个数组。该数组叫做sector disk_arry[N]数组,文件=很多个secotr数组下标,操作系统可以通过扇区的下标转化为CHS地址,从而定位到指定的扇区操作系统与磁盘进行交互时(为了拷贝更多的数据),一次性读取磁盘的基本单位:4Kb 8*扇区理解为八个连续的扇区,在系统层次上叫做数据块。原创 2024-09-10 12:26:52 · 877 阅读 · 0 评论 -
【Linux:软硬链接】
软链接与硬链接是文件系统中的两种不同的链接方式。原创 2024-09-08 17:26:19 · 644 阅读 · 0 评论 -
【Linux:进程终止】
退出码是子进程退出时,返回给父进程的一个回应每一个退出码都对应着不同的退出原因,父进程bash获取到最近的一个子进程的退出码。子进程执行完毕后,调用exit()/_exit()函数并传递一个整数值作为退出码操作系统记录子进程的退出码,并将其状态设置为终止。原创 2024-08-13 14:51:39 · 356 阅读 · 0 评论 -
【Linux:地址空间】
实际的物理内存中,一个地址不可能会存在两个不一样的内容,因此这里的地址只能是虚拟地址。原创 2024-08-11 11:22:49 · 284 阅读 · 0 评论 -
【Linux:环境变量】
但与其不同的是,自己写的程序在执行时,需要带路径,但我们使用程序命令(例如:ls,pwd等等)都不用带路径是因为该命令已经添加到环境变量中。,以:划分的区域是一个路径,bash在执行命令中时需要进行查找,查找的方式就是一个区域一个区域的查找。在登录操作系统时,系统中的很多配置就已经加载到了Bash命令中(内存),其中包括PATH,PATH是一个环境变量,查看环境变量中的内容就需要带$符号。命令行中启动的进程都是Bash的子进程,命令行参数的存在本质上就是通过选择不同的选项来定制不同的程序功能。原创 2024-08-09 18:32:30 · 581 阅读 · 0 评论 -
【Linux:进程优先级】
在操作系统中,进程的数量远多于资源,我们使用的操作系统绝大多数都是分时操作系统,因此,在资源分配上,操作系统有一个“基本公平”的原则,于是有了优先级。如果进程长时间不被调度就会造成饥饿问题。nice值是有范围的([-20,19],一共四十个数字),不能随便调度 同时优先级在普通用户下也不能频繁更改。优先级每一次调整都是从80开始。原创 2024-08-09 15:33:23 · 425 阅读 · 0 评论 -
【Linux:gbd基础调试】
gcc/g++默认的编译是release版本,而调试需要在Debug版本下,因此只需要在Makefile文件中添加-g即可把环境转换到debug环境下。原创 2024-08-05 14:20:28 · 519 阅读 · 0 评论 -
【Linux:文件描述符】
文件描述符的分配原则:最小未分配原则而文件描述符的分配方式是找到当前没有被使用的最小的下标分配给新文件当close(0)关闭下标为0的元素,该文件按就会放在0的位置。原创 2024-06-27 21:16:31 · 331 阅读 · 0 评论 -
【Linux:进程程序替换】
圈起来的都是库函数,库函数是依靠系统调用函数。原创 2024-05-23 07:52:34 · 948 阅读 · 0 评论 -
【Linux:进程概念】
死亡状态,ps,aux是查不到该进程信息的,该进程当要被释放时,释放的前一刻进程状态标记为死亡状态,ps,aux能查进程信息全凭进程的组织双向链表,遍历该链表由此查看进程。程序的本质为一个文件,当程序跑起来时就叫做进程,这是一个动态的,由操作系统管理,操作系统分配cpu资源对进程进行一个管理。在此还需要知道的一个常识:CPU(中央处理器)的数量远小于进程数。操作系统内核(本质上就是某种代码的统称)+应用,操作系统的本质也是软件。进程是由操作系统管理的,程序运行起来叫做进程。1.所有的数据采用二进制的存储。原创 2024-05-13 14:39:29 · 480 阅读 · 0 评论 -
【Linux:yim和vim】
命令模式:允许使用者通过命令对文本进行一系列的操作。n+yy复制光标所选中的那一行,也可以一次复制多行,只需要在yy的前面加上你需要复制的行数即可n+p粘贴,粘贴内容到光标选定的下一行,也可以多粘贴几行(n+p)u撤销n+dd删除指定行,在前面带数字即可一次删除连续多行大小写快速切换n+x删除光标后的一个字符,前面加上数字,可以连续删除n个字符n+X删除光标前的一个字符,前面加上数字,可以连续删除n个字符n+r对光标指定的位置进行一个字符的替换R进入替换模式h光标向左移动j。原创 2024-03-24 16:44:31 · 1606 阅读 · 1 评论