+ 操作系统
文章平均质量分 62
操作系统
youaresherlock
江湖人称狗哥!
展开
-
并发编程之缓存一致性
并发编程之缓存一致性Java内存模型(JMM)的设计是建立在物理机的内存模型之上的,因此了解物理机内存模型的原理也十分重要。简单来说,物理机的内存模型经历了3个阶段:早期的CPU计算速率与内存操作速率相当,CPU直接从内存中读取数据,运行程序计算,得出结果再写入内存;后来CPU飞速发展,内存的速率已经远不及CPU的计算了,这时CPU计算任务因等待内存数据读取而停滞,造成计算资源浪费,于是人们...转载 2019-11-17 19:15:56 · 359 阅读 · 0 评论 -
为什么volatile关键字保证不了线程安全
对于缓存一致性和线程安全之间的联系还有点蒙,找了一篇博文看在当前高并发的时代,不懂一点高并发多线程都不好意思出去,即使没地方使用,网上大多数相关文档博客也都讲解了这些部分。我并不想具体介绍什么是volatile,我写这篇博客目的是说明白为什么volatile保证不了线程安全。想要线程安全必须保证原子性,可见性,有序性。而volatile只能保证可见性和有序性在说明这个问题之前,首先还是...转载 2019-11-17 18:55:58 · 402 阅读 · 0 评论 -
操作系统概念(Operating System Concepts Ninth Edition恐龙书)第三章课后非编程题答案
CHAPTER 3In this chapter we introduce the concepts of a process and concurrent execution;These concepts are at the very heart of modern operating systems. A process is aprogram in execution and is...翻译 2019-01-14 23:10:37 · 16556 阅读 · 6 评论 -
循环中fork()创建的进程数量
包括初始的父进程,总共下面创建了多少个进程创建了16个进程,该程序可以加入printf()语句来更好说明创建了几个进程#include <stdio.h>#include <unistd.h>int main() { int i; for(i = 0; i < 4; i++) fork(); return 0;}将其修改成这样,可以打印出15...原创 2019-01-14 13:21:42 · 4671 阅读 · 1 评论 -
E: Could not get lock /var/cache/apt/archives/lock - open (11: Resource temporarily unavailable)解决办法
在ubuntu系统中使用apt-get安装软件包时,会出现以下类似错误: ubuntu@clarence:~$ sudo apt-get install cowsayReading package lists... DoneBuilding dependency treeReading state information... DoneThe following additional...原创 2018-12-17 14:43:27 · 2021 阅读 · 0 评论 -
用户级线程,内核级线程和硬件线程
在阅读<<操作系统概念>>一书中多次提到用户线程、内核线程、以及硬件线程、软件线程、我们来解释这些概念的不同。 1.用户级线程在用户层通过线程库来实现。对它的创建,撤销和切换都不利用系统的调用。2.核心级线程由操作系统直接支持,即无论是在用户进程中的线程,还是系统进程中的线程,它们的创建,撤销和切换都由核心实现。3.硬件线程就是线程在硬件执行资源上的...原创 2018-12-12 19:35:26 · 2474 阅读 · 0 评论 -
操作系统概念(Operating System Concepts Ninth Edition恐龙书)第二章课后非编程题答案
CHAPTER 2Chapter 2 is concerned with the operating-system interfaces that users (or at least programmers) actually see:system calls. The treatment is somewhat vague since more detail requires pick...翻译 2018-12-02 19:19:05 · 9080 阅读 · 2 评论 -
操作系统概念(Operating System Concepts Ninth Edition恐龙书)第一章课后题答案
CHAPTER 1 Chapter 1 introduces the general topic of operating systems and a handful of important concepts (multiprogramming, time sharing, distributed system, and so on). The purpose is to show w...翻译 2018-11-29 18:23:48 · 21036 阅读 · 10 评论 -
操作系统概念(Operating System Concepts Ninth Edition恐龙书)阅读
我最近在读一本操作系统的书(操作系统概念Operating System Concepts Ninth Edition),这本书是学习操作系统非常不错的书,只要学习过计算机组成原理、计算机体系结构、微机原理等课程就很容易读下去,虽然大多数是概念,不过课后也有编程实战题目,因此可以对操作系统有很好的把控。因此推荐给大家。大家如果看完,可以进一步看看Unix内核编程、现代操作系统的书。...原创 2018-11-29 15:29:58 · 8293 阅读 · 4 评论 -
操作系统中的中断和陷阱、以及编程语言中的异常区别
在阅读操作系统概念圣经书导论部分中,学习到了中断和陷阱,同时联系到高级语言中的异常处理,下面我们介绍他们的概念。 陷阱计算机有两种运行模式:用户态, 内核态。 其中操作系统运行在内核态,在内核态中,操作系统具有对所有硬件的完全访问权限,可以使机器运行任何指令;相反,用户程序运行在用户态,在用户态下,软件只能使用少数指令,它们并不具备直接访问硬件的权限。这就出现了问题,假如软件需要访问硬...原创 2018-11-26 15:11:26 · 656 阅读 · 0 评论 -
硬中断和软中断
中断中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。硬件中断硬件中断是一个异步信号, 表明需要注意, 或需要改变在执行一个同步事件. 硬件中断是由与系统相连的外设(比如网卡 硬盘 键盘等)自动产生的. 每个设备或设备集都...转载 2018-11-26 14:12:32 · 240 阅读 · 0 评论 -
DMA(直接存储器存储)
DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。 利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送...转载 2018-11-25 18:31:50 · 3141 阅读 · 0 评论 -
线程调度器和调度策略
线程调度器(Thread Scheduler): 操作系统的核心,它实际上就是一个常驻内存的程序,不断地对线程队列进行扫描,利用特定算法(时间片轮转法、优先级调度法、多级反馈队列调度法(MLFQ等),找出比当前占有CPU的线程更有CPU使用权的线程,并从之前的线程中收回处理器,再使待运行的线程占用处理器。 线程调度策略(Thread scheduling p...原创 2018-10-23 12:34:10 · 3792 阅读 · 0 评论 -
并发的数据竞争(可见性)与竞态条件(原子性)
数据竞争(data race):出现在一般数据的访问,一个读进程和写进程,如果没有进行同步,那么就会出现数据访问错误。 竞态条件(race condition):如果程序运行顺序的改变会影响最终结果,这就是一个竞态条件不是所有竞态条件都会出现数据竞争,竞态条件有时取决于运气,竞态条件指的是类中没有加锁的对象。如果一个类中没有属性变量,则称为无状态的,相反成为有状态的。多个...原创 2018-10-10 23:18:28 · 668 阅读 · 2 评论 -
Java死锁产生的四个条件
死锁的四个条件:1. 互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2. 不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占用者 主动释放3. 请求和保持,即当资源的请求者在请求其他的资源的同时保持对原有资源的占有4. 循环等待,即存在一个等待队列: P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。 这样就形成了一个...原创 2018-10-10 18:33:17 · 3111 阅读 · 0 评论 -
高并发中原子性、可见性、有序性
线程安全包含原子性和可见性两个方面,Java的同步机制都是围绕这两方面来确保线程安全的。Java的内存模型是围绕着在并发过程之中如何处理原子性,可见性和有序性这三个特征来建立的。下面我们来谈谈原子性、可见性、有序性 原子性 由java内存模型来直接保证的原子性变量操作包括read,load,assign,use,store,write,我们大致可以认为基本数据类型的...原创 2018-10-10 18:16:23 · 826 阅读 · 0 评论 -
线程和进程上下文切换区别
线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。 另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区...转载 2018-10-09 16:23:45 · 358 阅读 · 0 评论 -
内核线程、轻量级进程、用户线程三种线程概念讲解(线程≠轻量级进程)
转载关于进程、线程和轻量级进程的一些笔记[维基百科-轻量级进程]https://en.wikipedia.org/wiki/Light-weight_process#See_also线程与进程概念在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位一个进程的...转载 2018-10-09 16:10:31 · 1095 阅读 · 0 评论