操作系统
文章平均质量分 53
wxc_Huang
这个作者很懒,什么都没留下…
展开
-
协程
参考链接协程一文读懂什么是进程、线程、协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行协程的特点在于是一个线程执行协程的目的就是当出现长时间的I/O操作时,通过让出目前的协程调度,执行下一个任务的方式,来消除ContextSwitch上的开销优势协程极高的执行效率因为子程序切换不是线程切换,而是由程序自身控制,没有线程切换的开销和多线程比,线程数量越多,协程的性能优势就越明显不需要多线程的锁机制因为只有一个线程,也不存在同时写变量冲突在协原创 2021-01-20 16:38:45 · 108 阅读 · 0 评论 -
JMM
参考链接Java内存区域(运行时数据区域)和内存模型(JMM)Java内存区域(运行时数据区域)内存区域: Jvm 运行时将数据分区域存储,强调对内存空间的划分Java内存模型Java Memory Mode(JMM ):定义了 线程和主内存之间的抽象关系JMM 定义了 JVM 在计算机内存(RAM)中的工作方式Java 内存模型的主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量(线程共享的变量)存储到内存和从内存中取出变量这样底层细节Java内存模型中规定了所有的变量都存储在主原创 2021-01-11 23:36:34 · 103 阅读 · 0 评论 -
守护进程
参考链接Linux 守护进程的启动方法守护进程守护进程(daemon)一直在后台运行的进程许多服务器进程就是写成了 Daemon 程序,例如 Nginx、Redis、Apache 等Linux 中一般把守护进程放在/etc/init.d/中用途为了保护程序/服务的正常运行,当程序被关闭、异常退出等时再次启动程序/恢复服务让程序/服务能不中断地运行,在关闭终端后也能在后台默默运行常见http 服务的守护进程叫 httpdmysql 服务的守护进程叫 mysqld进程组(Proc原创 2021-01-08 20:40:20 · 201 阅读 · 0 评论 -
线程池
目录对线程池的了解原因(优势)工作机制四种常见的线程池Executors.newCacheThreadPool()Executors.newFixedThreadPool(int n)Executors.newScheduledThreadPool(int n)Executors.newSingleThreadExecutor()参考链接4种常用线程池介绍对线程池的了解线程池在系统启动时即 创建大量空闲的线程程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务执行结束以后,该线程并不原创 2020-12-29 00:37:15 · 280 阅读 · 0 评论 -
死锁
目录产生死锁的原因死锁的四个必要条件预防死锁避免死锁检测死锁和解除参考链接死锁产生的原因及四个必要条件(2017腾讯实习生题目)面试杂谈 - 死锁的四大条件与处理策略死锁的四个必要条件?如何避免与预防死锁?产生死锁的原因系统资源的竞争系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁进程运行推进顺序不合适进程在运行过程中,请求和释放资源的顺序不当,会导致死锁死锁的四个必要条件场景:如此这般,死锁就产生了两个线程各自持有一个 无法共享(互斥条件) 的资源,并且他们 都需要获取(原创 2020-12-28 08:27:59 · 72 阅读 · 0 评论 -
信号量 & 管程
目录前提知识信号量管程参考连接锁原理 - 信号量 vs 管程:JDK 为什么选择管程前提知识临界资源虽然多个进程可以共享系统中的各种资源,但其中许多 资源一次只能为一个进程所使用,我们把一次仅允许一个进程使用的资源称为临界资源许多 物理设备 都属于临界资源,如打印机等。此外,还有许多 变量、数据 等都可以被若干进程共享,也属于临界资源临界区对临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区互斥只有一个进程能访问临界区锁机制的实现方案有两种:信号量(Sem原创 2020-12-08 07:42:29 · 620 阅读 · 0 评论 -
生产者与消费者模型
目录实现方式参考链接生产者与消费者模型生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞实现方式wait()和notify()方法的实现可重入锁ReentrantLock的实现...原创 2020-12-08 00:16:19 · 146 阅读 · 0 评论 -
内核态 & 用户态 内核空间 & 用户空间
目录内核态 & 用户态【OS】内核态用户态内核空间 & 用户空间【内存】IO示例当进程运行在内核空间时,它就处于内核态;当进程运行在用户空间时,它就处于用户态内核态 & 用户态【OS】参考链接怎样去理解Linux用户态和内核态?IO 系列——用户空间与内核空间现代计算机是由硬件、操作系统组成,操作系统通过内核与硬件交互当需要 进行IO操作 时,如读写硬盘文件、读写网卡数据等,进程需要 切换到内核态,否则无法进行这样的操作无论是从内核态切换到用户态,还是从用户态原创 2020-12-06 14:22:53 · 744 阅读 · 0 评论 -
进程/线程的状态
目录创建状态就绪(Ready)状态执行状态阻塞状态挂起状态终止状态参考链接操作系统之进程的几种状态进程的状态转换创建状态步骤为一个新进程 创建PCB ,并填写必要的管理信息把该进程 转入就绪状态并插入就绪队列之中当一个新进程被创建时,系统已为其分配了PCB,填写了进程标识等信息,但由于该进程所必需的资源或其它信息,如主存资源尚未分配等,一般而言,此时的进程已拥有了自己PCB,但进程自身还未进入主存,即创建工作尚未完成,进程还不能被调度运行 ,其所处的状态就是创建状态引入创建状态,原创 2020-11-28 22:37:03 · 284 阅读 · 0 评论 -
进程切换 & 线程切换
目录进程切换和线程切换的区别虚拟内存进程切换和线程切换?进程切换和线程切换的区别进程切换涉及 虚拟地址空间 的切换而线程不会,虚拟地址空间切换会比较耗时把虚拟地址转换为物理地址需要 查找页表,页表查找是一个很慢的过程通常使用Cache(TLB)来缓存常用的地址映射,这样可以加速页表查找每个进程都有自己的页表,当进程切换后页表也要进行切换,页表切换后TLB就失效 ,cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢虚拟内存操作系统为每个进原创 2020-11-28 22:02:15 · 511 阅读 · 0 评论 -
锁机制
目录理解参考链接常见的锁机制理解锁机制:一种保护机制,在多线程的情况下,保证操作数据的正确性/一致性原创 2020-11-21 23:06:20 · 3320 阅读 · 0 评论 -
CAS 无锁机制
目录理解优缺点参考链接面试必备:CAS无锁机制CAS无锁机制和AQS理解保证多线程安全有三种方式:使用 Synchronize关键字 ,但使用了Synchronize加锁后的多线程相当于串行,执行效率并不是太高思想上:Synchronized属于悲观锁,悲观地认为程序中的并发情况严重,所以严防死守在高并发场景下,使用 Lock锁 ,Lock锁底层就是通过 AQS+CAS机制 实现的使用Java并发包下的 Atomic 原子操作类 ,原子类的底层就是基于 CAS无锁算法实现的CA原创 2020-11-20 08:12:58 · 705 阅读 · 2 评论 -
进程 & 线程 多进程 & 多线程
目录进程线程进程 & 线程多进程 & 多线程sum进程线程资源分配的最小单位程序执行的最小单位有自己的独立地址空间共享进程中的资源IPC通信方便【python 多线程和多进程】说说进程和线程的区别进程进程:具有独立功能的程序关于某个数据集合上的一次运行活动资源分配 的基本单位,它是程序执行时的一个 实例资源:CPU、内存等程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为原创 2020-11-04 22:28:31 · 304 阅读 · 0 评论 -
进程
目录组成要素状态启动通信消息队列调度算法先来先服务 FCFS短作业优先 SJF优先级调度算法高响应比优先算法时间片轮转算法组成要素1、有一段程序供其执行程序段:能被进程调度到 CPU 执行的代码2、有进程专用的系统堆栈空间数据段:进程对应的程序加工处理的原始数据、栈3、在内核有task_struct数据结构进程控制块PCB :进程存在的唯一标识,包括进程描述信息、控制信息、资源分配信息等4、有独立的存储空间,拥有专有的用户空间如果只具备前面三条而缺第四条,那就称为 “线程”原创 2020-11-08 10:22:21 · 126 阅读 · 0 评论 -
进程的调度算法
目录先来先服务 FCFS短作业优先 SJF优先级调度算法高响应比优先算法时间片轮转算法参考链接调度算法进程调度算法算法优化人生之 —— 调度算法先来先服务 FCFS从后备队列选择最先进入的作业,调入内存短作业优先 SJF从后备队列选择估计运行时间最短的作业,调入内存。平均等待时间、平均周转时间最少。优先级调度算法非剥夺式剥夺式:适合用于刚好有任务紧急的任务需要先完成高响应比优先算法综合了 FCFS 和 SJF,同时考虑了每个作业的等待时间和估计的运行时间时间片轮转原创 2020-11-25 22:21:29 · 119 阅读 · 0 评论 -
进程间的通信
通信进程间通信每个进程的 用户地址空间 都是独立的,一般而言是不能互相访问的,但 内核空间 是每个进程都共享的,所以进程之间要通信必须通过内核管道管道传输数据是 单向 的,如果想相互通信,我们需要创建两个管道才行管道是以 文件 的方式存在管道传输的数据是 无格式的流 且 大小受限匿名管道用完销毁匿名管道是特殊的文件,只存在于内存(内核里面的一串缓存),不存于文件系统中匿名管道的 生命周期随进程 的创建而建立,随进程的结束而销毁通信范围:存在 父子关系 的进程因为管道没有原创 2020-11-25 22:17:51 · 228 阅读 · 0 评论 -
消息队列
目录好处问题常用场景各种消息队列优缺点rabbitMqrocketMq参考链接新手也能看懂,消息队列其实很简单主流消息队列rocketMq,rabbitMq比对使用好处通过 异步处理 提高系统性能(削峰、减少响应所需时间)将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务降低系统耦合性问题系统可用性降低: 系统可用性在某种程度上降低系统复杂性提高: 加入MQ之后需要保证消息没有被重复消费、处理消息丢失的情况、保证消息传递的顺序性等等问题一致性问题:如果消原创 2020-11-08 14:37:58 · 207 阅读 · 0 评论 -
内存碎片
目录内存碎片产生原因内存碎片产生原因【操作系统】内存碎片产生原因及终极解决办法内部碎片:通常难以完全避免采用固定大小的内存分区,当一个 进程不能完全使用 分给它的固定内存区域时就产生了内部碎片外部碎片某些未分配的连续内存区域太小,以至于 不能满足任意进程 的内存分配请求,从而不能被进程利用的内存区域...原创 2020-11-04 21:16:33 · 86 阅读 · 0 评论 -
网络 I/O模型
目录阻塞I/O(BIO)非阻塞I/O(NIO)IO多路复用selectpollepoll信号驱动IO(SIGIO)异步IO(AIO)参考链接IO 模型知多少 | 理论篇了解哪些I/O模型?select是阻塞IO吗?聊聊Linux 五种IO模型网络IO的本质:socket的读取,socket在linux系统被抽象为 流,IO可以理解为对流的操作数据会先被拷贝到操作系统 内核的缓冲区 中,然后才会从操作系统内核的缓冲区拷贝到 应用程序的地址空间 (对于 I/O而言)第一阶段:等待数据准原创 2020-11-28 21:32:45 · 196 阅读 · 0 评论 -
Windows系统结构
文章目录一、文件系统1.host 文件一、文件系统1.host 文件c:\Windows\System32\drivers\etc\hosts:域名解析文件https://blog.csdn.net/hebbely/article/details/52354714Hosts文件配置的映射是 静态 的格式:ip地址-空格-域名目的:可以将一个域名重新定向到一个IP作用加快域名解析输入域名计算机就能很快解析出 IP ,而不用请求网络上的 DNS 服务器方原创 2020-10-19 22:41:59 · 112 阅读 · 0 评论 -
操作系统
目录计算机存储器内存RAM只读存储器(ROM)高速缓存存储器(cache)磁盘硬盘CPU寄存器快照 VS 备份开机先运行BIOS,之后再由BIOS执行把操作系统加载到内存(RAM)计算机存储器存储器的种类很多,按其用途可分为主存储器和辅助存储器主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多内存主板上的存储部件,是C原创 2020-11-08 09:24:49 · 145 阅读 · 0 评论