![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 82
Chackca
把自己活成每一个暗恋过的人
展开
-
计算机内存模型
内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。CPU和缓存一致性随着CPU技术的发展,CPU的执行速度越来越快。而由于内存的技术并没有太大的变化,所以从内存中读取和写入数据的过程和CPU的执行速度比起来差距就会越来越大,这就导致CPU每次操作内存都要耗费很多等待时间。所以,人们想出来了一个好的办法,就是在CPU和内存之间增加高速缓存。...原创 2018-09-21 11:12:19 · 2628 阅读 · 0 评论 -
数据传输方式(零拷贝)
在介绍零拷贝之前我想说下在计算机系统中数据传输的方式。早期阶段:分散连接,串行工作,程序查询。 在这个阶段,CPU就像个保姆一样,需要手把手的把数据从I/O接口从读出然后再送给主存。这个阶段具体流程是:CPU主动启动I/O设备 然后CPU一直问I/O设备老铁你准备好了吗,注意这里是一直询问。 如果I/O设备告诉了CPU说:我准备好了。CPU就从I/O接口中读数...转载 2018-09-22 09:06:19 · 7582 阅读 · 1 评论 -
什么是缓冲区溢出?有什么危害?原因是什么?
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 危害有以下两点: 1、程序崩溃,导致拒绝服务 2、跳转并且执行一段恶意代码 原因:造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。 所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的...原创 2018-09-22 09:03:48 · 54549 阅读 · 3 评论 -
页面置换算法
在地址映射过程中(虚拟内存机制),若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。 1、最佳置换算法:只具有理论意义的算法,用来评价其他页面置换算法。置换策略是将当前页面中在未来最长时间内不会被访问的页...原创 2018-09-22 09:02:25 · 983 阅读 · 0 评论 -
操作系统中的进程调度策略有哪几种
先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到...原创 2018-09-22 09:00:39 · 50001 阅读 · 1 评论 -
虚拟内存/虚拟存储器VM
背景:如果存在一个程序,所需内存空间超过了计算机可以提供的实际内存,那么由于该程序无法装入内存所以也就无法运行。单纯的增加物理内存只能解决一部分问题,但是仍然会出现无法装入单个或者无法同时装入多个程序的问题。但是可以从逻辑的角度扩充内存容量,即可解决上述两种问题。基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息...原创 2018-09-22 08:52:06 · 573 阅读 · 0 评论 -
内存泄露与内存溢出及其相关优化
基本介绍 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会...原创 2018-09-22 08:50:46 · 541 阅读 · 0 评论 -
连续内存分配与非连续内存分配
连续内存分配首次适配:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。 最优适配:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。 最坏适配:空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。 非连续内存分配一、分页式存储管理介绍: 用户程序逻辑地址空间->...原创 2018-09-22 08:45:03 · 11919 阅读 · 0 评论 -
总线锁、缓存锁、MESI
随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性,比如处理器需要保证读一个字节或写一个字节是原子的,那么它是如何实现的呢?有两种机制:总线锁定和缓存一致性。 我们知道,CPU和物理内存之间的通信速度远慢于CPU的处理速度,所以CPU有自己的内部缓存,根据一些规则将内存中的数据读取到内部缓存中来,以加快频繁读取...原创 2018-09-22 08:29:53 · 17219 阅读 · 7 评论 -
什么是死锁、导致死锁的原因,活锁、饥饿又是什么?
死锁 是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 一个线程先获取from锁,另一个先获取to锁(在获取两个锁的代码之间可以加上sleep)死锁条件:有一个条件不成立,则不会产生死锁1.互斥等待(有锁...原创 2018-09-21 15:15:50 · 10045 阅读 · 0 评论 -
线程同步、通讯的方式有哪些?
线程同步互斥量(互斥锁/mutex):采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。互斥对象和临界区(代码的一个区间)对象非常相似,只是其允许在进程间使用,而临界区只限制于同一进程的各个线程之间使用,但是更节省资源,更有效率。 信号量/semaphore:它允许同一时刻多个线程访问同一资源,但是需要控制同一时...原创 2018-09-21 14:58:37 · 1865 阅读 · 0 评论 -
进程同步、进程通信和进程状态
进程同步背景:多进程虽然提高了系统资源利用率和吞吐量,但是由于进程的异步性可能造成系统的混乱。进程同步的任务就是对多个相关进程在执行顺序上进行协调,使并发执行的多个进程之间可以有效的共享资源和相互合作,保证程序执行的可再现性。1、信号量(用于互斥): 用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行:初始化,P操作(-)和V操作(+),这三种操作都是原...原创 2018-09-21 14:47:03 · 978 阅读 · 0 评论 -
操作系统中的句柄是什么?
1.这里将句柄所能标识的所有东西(如窗口、文件、画笔等)统称为“对象”。2.图中一个小横框表示一定大小的内存区域,并不代表一个字节,如标有0X00000AC6的横框表示4个字节。 程序运行到某时刻的内存快照 程序往后运行到另一时刻时的内存快照 Windows是一个以虚拟内存为基础的操作系统,很多时候,进程的代码和数据并不全部装入内存,进程的某一段装...转载 2018-09-21 11:22:13 · 7090 阅读 · 3 评论 -
用户态与内核态
当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;反之,当程序运行在3级特权级下时,就可以称之为运行在内核态。虽然用户态下和内核态下工作的程序有很多差别,但最重要的差别就在于特权级的不同,即权力的不同。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,...原创 2018-09-21 11:17:31 · 2432 阅读 · 0 评论 -
进程、线程、协程
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。 进程是让操作系统的伪并发性成为可能线程是让进程里面内部子任务的并发成为可能最终目标是提高cpu的利用率 进程是系统分配的最小单元,线程是cpu调度的最小单元进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。线程是...原创 2018-09-21 11:15:21 · 434 阅读 · 0 评论 -
同步与异步、阻塞与非阻塞、操作系统的IO模型
同步和异步关注的是消息通信机制 (synchronous communication/asynchronous communication)同步请求,A调用B,B的处理是同步的,在处理完之前他不会通知A,只有处理完之后才会明确的通知A。异步请求,A调用B,B的处理是异步的,B在接到请求后先告诉A我已经接到请求了,然后异步去处理,处理完之后通过回调等方式再通知A。同步和异步最大的区别就是...原创 2018-09-21 11:13:54 · 1911 阅读 · 2 评论 -
服务限流算法
业务代码中的逻辑限流 按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事) 因为某个热点事件(微博热搜) 竞争对象爬虫 恶意的刷单 2、对内的RPC服务一个服务A的接口可能被BCDE多个服务进行调用,在B服务发生突发流量时,直接把A服务给调用挂了,导致A服...转载 2018-11-17 19:15:05 · 574 阅读 · 0 评论