八、进程的状态与转换

1.进程的基本状态 三种基本状态: 运行态:占有 cpu,并在 cpu 上运行 就绪态:已具备运行条件,但没有空闲 CPU 而暂时不能运行 阻塞态(或称等待态):因等待某一事件而暂时不能执行 ...

171735-11-170 · 1 min · 31 words · cmlark

七、进程的定义、组成、自制方式、特征

1.进程的定义 程序什么么?程序就是一个指令序列。 早期的计算机支支持单道程序。引入多道程序后,多道程序可以并发执行。为了方便操作系统管理、完成程序并发执行,引入了进程,进程实体的概念。 PCB(进程控制块),程序段和数据段三部分构成了进程实体。进程实体被简称为进程。所谓创建进程实际上是创建进程实体中的 PCB;撤销进程实质上就是撤销进程实体中的 PCB。 PCB 是进程存在的唯一标志。 ...

161644-6-160 · 1 min · 56 words · cmlark

Hexo Next8.x美化配置记录

前言 网上收集的方法做一个整合贴。 ...

151548-9-150 · 22 min · 4555 words · cmlark

六、系统调用

1.什么是系统调用 操作系统是用户和计算机硬件之间的接口需要向上层提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组==系统调用==组成。 用户接口: 命令接口(允许用户直接使用) 联机命令接口:用户说一句,系统做一句 脱机命令接口:用户说一堆,系统做一堆。 程序接口(允许用户通过程序间接使用):由一组系统调用组成。 系统调用就是操作系统提供给程序使用的接口,可以理解为一种可供应用程序调用的函数,应用程序可以发出系统调用请求来获得操作系统的服务。 2.系统调用的作用: 应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源由操作系统统一管理,因此在用户程序中,凡事与资源有关的操作(如存储分配,I/O 操作,文件管理等),都必须通过系统调用的方式像操作系统提出服务请求,由操作系统代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作。 系统调用(按功能分类): 设备管理:完成设备的请求、释放、启动等工作 文件管理:完成文件的读写、创建、删除等功能 进程控制:完成进程的创建。撤销、阻塞、唤醒等功能 进程通信:完成进程之间的消息传递、信号传递等功能 内存管理:完成内存的分配、回收等功能 系统调用相关处理涉及到对系统资源的管理,对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下完成。 3.系统调用与库函数的区别 4.系统调用背后的过程 首先需要做的是把传入系统调用的参数用相应的指令放入相应的通用寄存器中并执行相应的陷入指令(interrupt 的缩写,此汇编指令的作用是引发一次系统中断),指令运行在用户态。当指令被执行时系统会执行相应的系统调用服务程序,这时候系统中断开始并运行在核心态,待系统调用完成后会把执行结果返回给用户程序,重新回到用户态,继续执行后续操作。如下图所示: 有些书上陷入指令被叫做访管指令。概念是:因操作系统不允许用户态运行某些“危险性”高的指令,于是用户态运行这些指令的结果会转化成操作系统的核心态(管态)去运行。 上图注意 3 补充:核心态只能执行系统调用,不能请求系统调用;用户态不能执行系统调用,只能请求系统调用。 **系统调用发生在用户态,执行在核心态。**比如说你去仓库提货,仓库有专门的管理员而且你并不能进入仓库。管理员在门口待命。你过去跟他说你要什么什么,仓库管理员就进仓库提你想要的货物,提完货物后会回到仓库门口把货物交给你。在这个过程中,门外就相当于用户态,仓库内就相当于核心态。你跟管理员要货就相当于请求一次系统调用,管理员进仓库给你拿货就相当于执行了一次系统调用,并在拿完货后出门给我你货物,这个过程就相当于返回系统调用的结果。很简单的道理。 吧啦吧啦:有的弹幕说中断就是切换任务的,我我个人觉得说的好像也蛮准确的 5.知识回顾

131357-8-130 · 1 min · 29 words · cmlark

Hexo Next主题代码块美化

1.正文 在 NexT 主题下的 scripts 目录中创建 events.js var exec = require('child_process').exec; hexo.on('new', function(data){ exec('open -a MacDown ' + data.path); }); 在 NexT 主题下的 scripts 目录中创建 codeblock.js var attributes = [ 'autocomplete="off"', 'autocorrect="off"', 'autocapitalize="off"', 'spellcheck="false"', 'contenteditable="true"' ] var attributesStr = attributes.join(' ') hexo.extend.filter.register('after_post_render', function (data) { while (/<figure class="highlight ([a-zA-Z]+)">.*?<\/figure>/.test(data.content)) { data.content = data.content.replace(/<figure class="highlight ([a-zA-Z]+)">.*?<\/figure>/, function () { var language = RegExp.$1 || 'plain' var lastMatch = RegExp.lastMatch lastMatch = lastMatch.replace(/<figure class="highlight /, '<figure class="iseeu highlight /') return '<div class="highlight-wrap"' + attributesStr + 'data-rel="' + language.toUpperCase() + '">' + lastMatch + '</div>' }) } return data }) 在 themes/next/source/css/_common/components/highlight/highlight.styl 的基础上调整了下样式,包裹上一层类 mac Panel 的效果。 ==注: 这里不用删除原来 highlight.styl 里边的内容,只需要在末尾添加下面代码即可== .highlight-wrap[data-rel] { position: relative; overflow: hidden; border-radius: 5px; box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.4); margin: 35px 0; ::-webkit-scrollbar { height: 10px; } ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 10px; } ::-webkit-scrollbar-thumb { border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); } &::before { color: white; content: attr(data-rel); height: 38px; line-height: 38px; background: #21252b; color: #fff; font-size: 16px; position: absolute; top: 0; left: 0; width: 100%; font-family: "Source Sans Pro", sans-serif; font-weight: bold; padding: 0px 80px; text-indent: 15px; float: left; } &::after { content: " "; position: absolute; -webkit-border-radius: 50%; border-radius: 50%; background: #fc625d; width: 12px; height: 12px; top: 0; left: 20px; margin-top: 13px; -webkit-box-shadow: 20px 0px #fdbc40, 40px 0px #35cd4b; box-shadow: 20px 0px #fdbc40, 40px 0px #35cd4b; z-index: 3; } } 在 highlight.styl 中找到如下部分代码,修改 margin 为 36px 0 0 0: ...

11119-1-110 · 2 min · 289 words · cmlark

五、中断和异常

1.中断机制的诞生 为了解决早期计算机资源利用率低的的问题,人们发明了操作系统,引入了中断机制,实现多道程序并发执行。 本质:发生了中断也就意味着需要操作系统介入,展开管理工作。CPU 收到计时部件发送的中断信号,切换为内核态,操作系统负责处理中断。 2.中断的概念和作用 当中断发生时,CPU 立即进入核心态。 当中断发生后,当前运行的进程暂停执行,并由操作系统内核对中断进行处理。 对于不用的中断信号,会进行不同的处理。 中断可以使 CPU 从用户态切换为核心态,使操作系统获得计算机的控制权。有了终端,才能够实现多道程序并发执行。只有在核心态操作系统才能够执行特权指令。从用户态切换到核心态是通过中断实现的,并且是唯一的途径。 3.中断的分类 中断(广义上的): 内中断(也称异常,例外,陷入) 信号来源:CPU内部,与当前执行的指令有关。 自愿中断——指令中断(系统中断) 强迫中断——硬件故障或软件中断 外中断(狭义上的中断) 信号来源:CPU外部与但钱执行的指令无关。 外设请求 人工干预 另一种分类方式: 4.外部中断的处理过程 每条指令执行结束后,CPU 检查是否有外部中断信号 若有外部中断信号,则需要保护中断进程的 CPU 环境 根据中断信号类型转入相应的中断处理程序 恢复原进程的 CPU 环境并推出中断,返回原进程继续往下执行 5.知识图谱

101011-9-100 · 1 min · 34 words · cmlark

四、操作系统的运行机制与体系系统

1.运行机制 什么是指令, “指令”和“代码”有什么区别? 比如:C语言指令代码源文件经过编译后变成机器语言指令,而一条高级语言的代码可能对应着多条指令。 简而言之,“指令”就是CPU能够处理和执行的最基本的命令,就是让CPU干一件具体的事情。 (1)两种指令: 特权指令:如内存清零指令(不允许用户程序使用) 非特权指令:如普通的运算指令 问:CPU怎样执行特权指令? (2)两种处理器状态: 用户态(目态):在该状态下CPU只能执行非特权指令。 核心态(管态):在该状态下特权指令和非特权指令都可以执行。 在CPU中存在一个用户程序状态寄存器(PSW),在其中的某一个标志位来标识当前处理器处于什么状态。如0为用户态,1为核心态。 (3)两种程序: 内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。 应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。 2.操作系统内核 [ 内核是计算机配置上的底层软件,是操作系统最基本,最核心的部分。 实现操作系统内核功能的哪些程序就是内核程序。 操作系统内核包括: 时钟管理:实现计时功能。 中断处理:负责实现中断机制 原语: 是一种特殊的程序 处于操作系统最底层、最接近硬件的部分 这种运行的程序具有原子性,其运行过程不可中断 运行时间较短,调用频繁 对系统资源进行管理的功能: 进程管理 存储管理 设备管理 内核又可被分为:大内核和**微内核。**如果内核中包含存储管理,进程管理,设备管理等功能的就被叫做大内核,只包含最基本如时钟管理,中断处理,原语等的就被叫做微内核。 3.操作系统的体系结构 操作系统的体系结构: 大内核 将操作系统的主要功能模块都作为系统内核,运行在核心态 优点:高性能 缺点:内核代码庞大,结构混乱,难以维护 微内核 只把最基本的功能保留在内核 优点:内核功能少,结构清晰,方便维护 缺点:需要频繁的在核心态和用户态之间切换,性能低 比如:

10102-7-100 · 1 min · 44 words · cmlark

在GithubPages上搭建Hexo并配置NexT主题

在 GithubPages 上搭建 Hexo 并配置 NexT 主题 啰里啰唆 记录一下自己搭建 blog 的过程,之前在 vps 上配置过 word press,但是一直也没更新,而且好的 vps 很贵维护成本也很高,索性干脆不用了,就尝试一下使用 hexo 在 github 上搭建 blog,效果还不错,总共也就历时两天。网上类似的教程也很多,这里总结记录一下,方便以后开新坑 首先安装 Node.js 和 Git for Windows [Node.js 官网](Node.js (nodejs.org)),[Git for windows 官网](Git (git-scm.com)),Node.js 建议安装 LTS 长期支持版,支持周期更长且更稳定 Node.js:点击第一个绿色的按钮下载 Node.js,版本不需要和图示一致,直接下载最新版即可。 Git:点击网页左侧小电脑当中的 Download for windows,直接下载最新版即可无需与图示中版本一致。 下载完成后按照默认安装设置安装即可。 在 GitHub 上创建一个仓库 首先,需要一个 GitHub 账号。打开 GitHub 官网点击左上角的 sign in 就能注册了,不复述了很简单。进行这个过程可能需要科学上网,具体自行百度。 创建一个 Github 仓库 点击左上角头像,在弹出的下拉菜单中选择 Your repositories,待页面加载完毕后点击左上角绿色的new创建一个仓库。 注意:仓库名务必是**==你的用户名.github.io==**,比如上面我的用户名是 ivy-lun,那么仓库名就是 ivy-lun.github.io,其他的保持默认即可,点击绿色按钮 Create repositories 即可创建一个仓库。 ...

101010-4-100 · 1 min · 69 words · cmlark

markdown笔记

· markdown 笔记 1.代码块 ```java 语言代码 ``` public static void main(String[] args){ System.out.print("Hello World!"); } 2.标题 # 一级标题 ## 二级标题 ### 三级标题 ... ###### 六级标题 一级标题 二级标题 三级标题 … 六级标题 3.字体 **加粗** ==高亮== ~~删除线~~ _斜体_ 加粗 删除线 斜体 4.引用 > 作者:某某某 > > > 二级作者 > > > > > 三级作者 作者:某某某 二级作者 三级作者 5.分割 ## 分割线 分割线 2 --- 分割线 1 ...

9091-11-90 · 1 min · 126 words · cmlark

三、操作系统的发展和分类

1. 手工操作阶段 缺点:用户独占全机,人机速度矛盾导致资源利用率极低。人的速度慢,输入输出速度也慢,但计算机处理速度极快,人机速度矛盾。 2. 批处理阶段 (1)单道批处理系统 引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入、输出。 主要优点:一定程度缓解了人机速度矛盾,资源利用率有所提升 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能进入到下一道程序,**cpu 有大量的时间都是在空闲等待 I/O 完成,**资源利用率仍然很低。 (2)多道批处理系统 在多道批处理系统中,操作系统开始出现。 主要优点:多道程序并发执行,共享计算机资源,资源利用率大幅度提升。 主要缺点:用户响应时间长,没有人机交互功能(用户不能对执行的程序进行任何操作)。 在单道批处理系统中,输入,计算和输出都是串行进行,资源利用率低。 而在多道批处理系统中,当一个系统资源不再被使用时,可以提前进行下一个任务,系统并行执行任务,资源利用率大幅度提高。 (3)分时操作系统 计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机交互。 主要优点:用户请求可以被即时响应,解决了人机交互的问题,允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。 主要却带你:不能优先处理一些紧急任务,操作系统的各个用户、作业都是完全公平的,循环为每个用户、作业服务一个时间片,不区分任务的紧急性。 (4)实时操作系统 主要优点:可以实时处理一些紧急任务,某些紧急任务不需要时间片排队。 在实时操作系统的控制下,计算机接受到外部信号后及时进行处理,并且要在严格的时间限制内处理完成事件,实时操作系统的主要特点是及时性和可靠性。 实时操作系统可分为: 硬实时系统:必须在绝对严格的规定时间内完成处理。如导弹控制系统,自动驾驶系统。 软实时系统:能接受偶尔违反时间规定。如 12306 火车订票系统。 (5)网络操作系统 伴随计算机网络的发展而诞生的,能把网络的各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各个计算机之间的通信。 (6)分布式操作系统 主要特点是分布性和并行性,系统中的割台计算机地位相同,任何工作都可以分布在这些计算机上,由他们并行、协同完成这个任务。 (7)个人计算机操作系统 略,如 windows,macos 等

9091-11-90 · 1 min · 38 words · cmlark