![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
剑指Offer(线程)——yield
关于Yield,我们可以先提一句这个关键字的概念先来到源代码:当使用了yield之后,代表当前线程愿意让出CPU的使用权,但是线程调度器通常会忽略这个暗示。也是写一个Demo看一下:这是一个比较正常的情况,我们首先运行出线程A,当i=5的时候,理应转让线程使用CPU的权限,让给B,然后B也是到i=5的时候,再转让给A,然后A执行5次,运行完成,再轮到B执行。但是也会有抽风的情况这...原创 2019-12-02 23:27:24 · 148 阅读 · 0 评论 -
操作系统专栏——线程同步之条件变量
先来说一下条件变量的概念:条件变量是一种相对复杂的线程同步的方法条件变量允许线程睡眠,直到满足某种条件当满足条件的时候,可以向该线程信号,通知唤醒解释条件变量,还是应用到之前使用过的生产者-消费者模型:简单来说,当缓冲区小于等于0的时候,不允许消费者消费,消费者必须等待,当缓冲区满的时候,不允许生产者往缓冲区生产,生产者必须等待。现在我们使用了条件变量,就可以针对这个模型施加更加...原创 2019-11-20 00:41:08 · 280 阅读 · 0 评论 -
操作系统专栏——线程同步之读写锁
之前两篇文章粗劣说了互斥锁和自旋锁的原理,从本质上来说都是针对线程同步问题进行的一定的措施。互斥锁是直接去阻断另一个线程的访问,而自旋锁是让线程进入死循环不断申请资源。而读写锁针对互斥锁和自旋锁都进行了一定的改进。主要根据临界资源,进行了考量:我们在实际的开发环境中,很容易就会碰见针对数据库的资源多读少写的情况,更多的是select居多。而读取并不会改变临界资源的值。如果频繁加锁,释放锁,那...原创 2019-11-20 00:32:44 · 320 阅读 · 0 评论 -
操作系统专栏——线程同步之自旋锁
上一节我们说了互斥锁,互斥锁的意义就是,当多个线程访问临界资源的时候,互斥锁可以做到,让临界资源串行的被访问,达到解决线程同步带来的问题。而自旋锁,其做到的事情,其实可以说是和互斥锁是一样的,都可以让临界资源被串行的访问,但自旋锁,和互斥锁,还是有着一定的区别的。自旋锁也是一种多线程同步的变量。使用自旋锁的线程会反复检查锁变量是否可用,如果不可用,会一直不断的申请资源。自旋锁不会让出C...原创 2019-11-20 00:24:00 · 212 阅读 · 0 评论 -
操作系统专栏——线程同步之互斥锁
之前我们介绍过生产者-消费者模型,意思也就是说,如果有两个线程同时申请临界资源,那么就会有可能产生线程同步的错误,而解决这个问题,我们就要依赖互斥锁。我们先来说说,互斥锁究竟做到了什么?我们已经知道,之前的时候,因为我们使用两个线程同步操作资源,导致指令交叉进行,产生了错误,这是问题的根源所在。那么,互斥锁,它做到的是,让我们的线程操作,按照顺序去执行。我们称互斥锁的这种特性为:原子性...原创 2019-11-20 00:05:51 · 255 阅读 · 0 评论 -
操作系统专栏——操作系统的设备管理
广义的IO设备对CPU而言,凡是对CPU进行数据输入的都是输入设备。对CPU而言,凡是对CPU进行数据输出的都是输出设备。并且广义的IO设备,拥有四种分类:按照使用特性分类按照设备的共享属性分类按照信息交换的单位分类按照传输速度分类...原创 2019-11-18 22:08:02 · 197 阅读 · 0 评论 -
操作系统专栏——操作系统的文件管理
文章目录1.文件的逻辑结构2.辅存的存储空间分配3.目录管理1.文件的逻辑结构逻辑结构的文件类型在有结构文件当中:文件内容由定长记录和可变长记录组成定长记录存储文件格式、文件描述等结构化数据项可变长记录存储文件具体内容在无结构文件当中:文件内容长度以字节为单位,也称为流式文件。像exe dll so文件都是无结构文件。顺序文件顺序文件是指按照顺序存放在存储...原创 2019-11-17 16:13:35 · 319 阅读 · 0 评论 -
操作系统专栏——Linux存储管理
我们将会从两个方面来说Linux的存储管理:1. Buddy内存管理算法首先来简单介绍一下Buddy内存管理算法:Buddy算法是经典的内存管理算法。算法基于计算机处理二进制的优势具有极高的效率。算法主要是为了解决内存外碎片的问题。那么,什么是内存页内碎片,什么是内存页外碎片呢?页内碎片: 内部碎片是已经被分配出去(能明确指出属于哪个进程)的内存空间大于请求所需的...原创 2019-11-17 14:38:35 · 312 阅读 · 0 评论 -
操作系统专栏——虚拟内存
首先先引出一个问题:一个游戏有十几G,物理内存只有4G,那么这个游戏是怎么运行起来的?首先先简述一下我们的虚拟内存:有些进程实际需要的内存很大,超过物理内存的容量。多道程序设计,使得每个进程可用物理内存更加稀缺。不可能无限增加物理内存,物理内存总有不够的时候。虚拟内存是操作系统内存管理的关键技术。使得多道程序运行和大程序运行成为现实。把程序使用内存划分,将部分暂时不使用的内存放置...原创 2019-11-16 16:15:35 · 299 阅读 · 0 评论 -
操作系统专栏——段页式存储管理
文章目录1. 页式存储管理2. 段式存储管理3. 段页式存储管理上一节,从物理内存角度讲述了内存管理,这一节,将会从进程的角度来讲述一下存储管理。所以,我们思考一下,操作系统是怎么去管理进程的内存空间的呢?一共有三种管理模式,我会一一来介绍:1. 页式存储管理首先先明白两个重要的概念:字块是相对物理设备的定义。页面是相对逻辑空间的定义。而我们的页式存储管理,是将进程逻辑空间等分成若...原创 2019-11-16 15:58:12 · 635 阅读 · 0 评论 -
操作系统专栏——内存分配与回收
文章目录存储管理之内存分配与回收1. 内存分配2. 内存回收存储管理之内存分配与回收在早期的计算机编程中,并不需要过多的存储管理,但是随着计算机和程序的越来越复杂,存储管理成为必要。而存储管理的意义也就在于:确保计算机有足够的内存处理数据。确保程序可以从可用内存中获取一部分去使用确保程序可以归还使用后的内存供其他程序使用。1. 内存分配内存分配的方法一共有三种:单一连续分配...原创 2019-11-15 23:07:59 · 4649 阅读 · 0 评论 -
操作系统专栏——死锁
文章目录死锁1. 死锁的产生2. 死锁的处理死锁首先我们要明白,什么是死锁?死锁死锁是指两个及以上进程在执行过程中,由于竞争资源或者由于彼此通信而造成阻塞,无法继续推进进程的一种情况,此时称系统处于死锁状态或者系统产生了死锁。打个比方,我们有线程A和线程B,资源C和资源D,现在线程A正在占有资源C,线程B正在占有资源D,而又只有当线程A或者线程B同时拥有资源C和D的时候才能释放内存,...原创 2019-11-15 21:09:23 · 224 阅读 · 0 评论 -
操作系统专栏——进程调度
文章目录一、进程调度概述二、进程调度算法一、进程调度概述在多道程序设计中,进程的资源调度是十分重要的。进程调度:计算机通过决策决定哪个就绪进程可以获得CPU使用权。在进行调度的过程中:保留旧进程的运行信息,请出旧进程选择新进程,准备运行环境并且分配CPU就绪队列的排队机制所谓就绪队列的排队机制,即是将就绪进程按照一定的方式排成队列,以便调度程序可以最快找到就绪进程。...原创 2019-11-14 23:30:16 · 229 阅读 · 0 评论 -
操作系统专栏——进程管理之进程同步
文章目录一、为什么需要进程间的同步二、进程间同步的原则三、线程同步一、为什么需要进程间的同步首先我们来引入一个著名的生产者与消费者问题,来说明为什么需要进程间的同步吧。生产者-消费者问题当生产者,生产出东西投入缓冲区的时候,进行+1,当消费者从缓冲区取出的时候,进行-1。然后来简要的说一下,+1/-1,到底是怎么进行的。首先我们明白一点,缓冲是在Cache上的,当我们操作缓冲区...原创 2019-11-14 22:07:24 · 518 阅读 · 0 评论 -
操作系统专栏——五状态模型
进程的状态分为以下五种:创建,就绪,阻塞,执行,中止。就绪状态当进程被分配到除了CPU以外所有必要的资源后,只要再获得CPU的使用权,就可以立即运行,并且其他资源也都准备好了,只差CPU资源的状态,就是就绪状态。而在一个系统中多个处于就绪状态的进程通常会排成一个队列。我们称这个队列叫做就绪队列。阻塞状态当进程因为某种原因如:其他外围设备未就绪而无法继续执行,从而放弃CPU的状...原创 2019-11-13 23:38:39 · 3805 阅读 · 0 评论 -
操作系统专栏——进程管理之进程实体
为什么需要进程我们上一篇专栏也说了,操作系统管理着处理器资源,存储器资源,IO设备资源,文件资源。那么再没有os的时候,这些资源是怎么处理的呢?事实上,在没有配置os之前,资源属于当前运行的程序,而在配置了os之后,引入了多道程序设计的概念,让我们从之前的一台电脑只能运行一个任务到可以同时运行多个任务。而进程,就是搭载着运行这些任务的载体,它做到了合理的隔离资源、运行环境,提升资源利...原创 2019-11-13 23:05:50 · 1304 阅读 · 0 评论 -
操作系统专栏——操作系统概览
文章目录1. 什么是os2. 我们为什么需要os3. 操作系统的基本功能1. 什么是os操作系统是管理计算机硬件和软件资源的计算机程序,是软件。它管理配置内存、决定资源供需顺序、 控制输入输出设备等操作系统会提供让用户和系统交互的操作界面。os也不限定于计算机,遍布在各个地方2. 我们为什么需要os因为我们不可能直接操作计算机硬件设备种类繁多复杂,需要用界面统一操作操作系...原创 2019-11-13 00:39:05 · 423 阅读 · 0 评论