snowFlakeXue

Work hard for what you desire.


  • 首页

  • 关于

  • 分类

  • 归档

  • 搜索

信号量机制

发表于 2019-10-28 | 更新于 2019-12-25 | 分类于 操作系统

为啥要引入信号量机制,关于实现进程互斥我们有四种软件实现方法,三种硬件实现方法,但是要么就是不能让上锁和检查一气呵成出现问题,要么就是上述所有方法都有的一个通病:不能实现让权等待。那么,就是信号量机制诞生的意义啦。

阅读全文 »

进程同步与互斥

发表于 2019-10-18 | 更新于 2019-10-28 | 分类于 操作系统

进程同步

我们知道为了实现并发,进程就有了异步性这个概念,异步性就是以不可预知的速度和方向进行的,但是有的时候我希望各个进程是可以共同合作的,就是有一定顺序的进行,就比方说管道通信,我就想先写再读而不是不知道是先读还是先写,这个时候就要引入进程同步来解决这个问题。

进程同步:有的进程之间需要相互配合地完成工作,各进程的工作推进需要遵循一定的顺序

阅读全文 »

线程

发表于 2019-10-17 | 更新于 2019-10-18 | 分类于 操作系统

什么是线程

什么是线程?我们首先得说说为什么要引进线程->从程序到进程,我们实现了进程并发让我的qq和网易云可以同时运行,但是我想用QQ一边视频,一边打字聊天,一边看QQ空间怎么办呢。QQ这个进程里的代码是顺序执行的,我是不是也得让这些小操作也可以并发执行才行,这个时候就得引出我们的线程了。

阅读全文 »

进程

发表于 2019-10-15 | 更新于 2019-10-18 | 分类于 操作系统

进程的定义(强调动态性)

进程是能和其他程序并行执行的程序段在某数据集合上的一次运行过程,它是系统资源分配和调度的基本单位。

话说为什么要引入进程呢?

阅读全文 »

系统调用

发表于 2019-10-15 | 更新于 2019-12-13 | 分类于 操作系统

什么是系统调用

我们知道操作系统要向上提供两种接口,一种是命令接口,一种是程序接口,而程序接口就是由一组系统调用组成,我们可以把系统调用简单的理解为,可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。

系统调用功能

功能

需要注意的是,有的功能是需要特权指令的,因此要在系统调用的相关处理要在核心态下进行

系统调用与库函数的区别

区别

图中黑色箭头表示,我们本该用汇编语言调用系统调用,但现在我们一般都通过调用高级语言的库函数来实现调用系统调用,因为库函数封装好了系统调用。

传递系统调用参数->执行陷入指令(用户态)->执行系统调用响应服务程序(核心态)->返回用户程序

这里需要注意,陷入指令是唯一一个只能在用户态执行而不能在核心态执行的指令

发出用户系统调用请求是在用户态,对系统调用的处理在核心态

中断和异常

发表于 2019-10-14 | 更新于 2019-10-15 | 分类于 操作系统

中断机制的诞生

早期的计算机程序只能串行执行,什么意思呢,就是计算机只能处理一个程序,这个程序处理完了,下一个程序才能拿到计算机里来运行,这样就大大降低了资源利用率。为了解决这个问题,人们就发明了操作系统,从而引入了中断机制,实现了多道程序并发执行。事实上,我们只要知道,发生中断就意味着需要操作系统介入,开展管理工作.

中断的概念及作用

下面我们大概来看看过程

中断演示

如图所示,因为中断的引入,我们可以实现多道程序并发执行。我们来模拟一下中断过程,

进程1时间片用完了,计时器向CPU发出中断信号,CPU就会切换为核心态,这个时候就是将管理权交到了操作系统的手上,操作系统的内核就会对中断信号做处理,也就是停止进程1,让进程2运行,处理完之后会用指令再转换成用户态,这个时候进程2就开始运行了;当进程2运行一段时间后,他想输出,但I/O这是特权指令,他就得申请,他就发出系统调用(内中断信号),这是CPU转到核心态,交给操作系统处理,操作系统会根据进程2的请求,让打印机打印,进程2停止运行去等待打印机,换进程3运行,再转回用户态,这时当打印机完成了,他会向CPU发出中断信号,告诉他自己完成了,CPU又转换为核心态交给操作系统,操作系统就让进程2恢复,完成后续工作。再转成用户态,进程2继续执行。

通过上面的栗子,我们不难看出,只要CPU一收到中断信号,他就要转成核心态,用户程序停止运行,操作系统内核对中断处理完之后,转回用户态,用户程序按操作系统的安排继续运作。

最最最重要的:用户态转核心态,有且仅有中断这一种方法,核心态转用户态是通过执行一个特权指令,将程序状态字的标志位设置为用户态

中断分类

中断分类1

内中断和外中断区别的根本在于中断信号的来源,内中断是来自CPU内部,与当前执行的指令有关,比如说时间片用完了,计时器向CPU发中断信号;外中断来自于CPU外部,与当前执行的指令无关,比如说刚刚的打印机发给CPU它打印结束了。

操作系统概述

发表于 2019-10-12 | 更新于 2019-12-13 | 分类于 操作系统

什么是操作系统

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。

阅读全文 »

词法作用域

发表于 2019-08-30 | 更新于 2019-08-31 | 分类于 我不知道的javascript

作用域有两种模型,一种是词法作用域,一种是动态作用域,而js用的就是词法作用域。词法作用域就是在词法化时的作用域,变量及代码块写在哪就是在哪,当词法分析器处理代码时不会改变作用域。

阅读全文 »

什么是作用域

发表于 2019-08-27 | 更新于 2019-08-30 | 分类于 我不知道的javascript

一·编译原理

javascript是一种“解释执行”语言。它跟传统的编译语言编译时间不一样但编译的步骤基本相似且javascript的要更为复杂。因为与其他编译语言不同,他不需要提前进行编译,就导致了他没有太多时间进行优化,他只是在代码执行前进行几毫秒的编译。所以,他就想各种方法来进行性能优化,比如JIT(延迟编译)甚至实施重编译。

阅读全文 »

map

发表于 2019-08-01 | 分类于 ES6

map也是种数据结构,他与json,set这两种数据结构相比,更灵活,效率更高

阅读全文 »
1…456…12
Liu Xue

Liu Xue

119 日志
11 分类
RSS
GitHub E-Mail
© 2020 Liu Xue
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.1
本站总访问量 次 | 有人看过我的博客啦