![](https://img-blog.csdnimg.cn/20190509132021386.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统学习:清华大学学堂在线
本专栏记录自己学习计算机网络的过程,学习的是清华大学在学堂在线的公开课。
时间很奇妙!
求知
展开
-
操作系统学习笔记(二十四):I/O子系统
I/O特点常见设备接口类型:1、字符设备:键盘鼠标、串口 a.以字节为单位顺序访问 b.I/O命令通常使用文件访问接口和语义2、块设备:磁盘、磁带、光驱 a.均匀的数据块访问 b.I/O命令通常使用文件系统接口,也可以使用内存映射访问3、网络设备:以太网、无线、蓝牙 a.格式化的报文交换 b.I/O...原创 2020-01-14 21:20:38 · 562 阅读 · 1 评论 -
操作系统学习笔记(二十三):文件系统
概念:文件系统和文件: 文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能,组织、检索、读写访问数据。 文件时具有符号名,由字节序列构成的数据项集合,是文件系统的基本数据单位,文件名是文件的标识符号。文件系统功能: 1.分配文件磁盘空间 a.管理文件块(位置和顺序) ...原创 2020-01-14 18:37:25 · 753 阅读 · 0 评论 -
操作系统学习笔记(二十二):管程
管程是一种用于多线程互斥访问共享资源的程序结构,采用面向对象的方法,简化线程间的同步控制,保证任意时刻最多只有一个线程执行管程代码,管程与临界区的区别是在管程中的线程可临时放弃管程的互斥访问,等待事件出现时恢复,而临界区只有线程退出临界区才能放弃互斥访问。 管程与临界区结构上差别在于多了共享数据,共享数据作为条件变量,如果条件变量的数量为0则跟临界区完全一样。进入管程...原创 2019-12-18 19:15:36 · 581 阅读 · 0 评论 -
操作系统学习笔记(二十一):信号量
信号量与管程也是进程间通信的方式。信号量是与锁在同一层级实现的,是操作系统提供的一种协调共享资源访问的方法。信号量由操作系统管理,操作系统作为管理者地位是高于进程的。 信号也是一种抽象的数据类型,由一个整型变量(sem)和两个原子操作组成。P()操作使sem减一,若sem<0进入等待,否则继续。V()操作使sem加一,如果加一后sem仍然小于等于零,代表还有线程...原创 2019-12-18 18:36:51 · 955 阅读 · 0 评论 -
操作系统学习笔记(二十):临界区与锁
多进程并发运行,导致多个进程间有资源共享,比如CPU、内存,因此存在不确定性和不可重现,可能导致多次运行结果不一致。因此操作系统需要利用同步机制在并发执行的同时,保证一些操作是原子操作。 互斥是指一个进程占用了某个资源,其他进程都不能使用该资源;死锁是指多个进程各占有了一部分资源,形成了循环等待;饥饿是指其他进程轮流占用资源,一个进程一直得不到资源。临界区 ...原创 2019-12-18 17:56:36 · 1286 阅读 · 1 评论 -
操作系统学习笔记(十九):处理机调度
处理机调度概念: 进程切换就是CPU资源当前占用者的切换,通过进程切换实现CPU的时分复用。进程切换时需要保存当前进程在PCB中的执行上下文,同时恢复下一个进程的执行上下文。而处理机调度就是要实现从进程就绪队列中挑选下一个占用CPU运行的进程;如果存在多个可用CPU,还要从中挑选就绪进程可用的CPU资源。因此其中要关注两个内容:调度策略与调度时机。调度时机: 有...原创 2019-12-18 15:21:30 · 341 阅读 · 1 评论 -
操作系统学习笔记(十八):进程控制
进程切换(上下文切换):定义:暂停当前运行进程,从运行状态变成其他状态 调度另一个进程从就绪状态变成运行状态要求:切换前,保存进程上下文 切换后,恢复进程上下文 快速切换进程存储的生命周期的信息:寄存器(PC,SP,...) CPU状态 内存地址空间进程控制块PCB:内核的进程状态记录内核为每个进程维护了对应的进程控制块PCB 内核将相同状态的进程的PCB...原创 2019-06-15 15:49:27 · 584 阅读 · 0 评论 -
操作系统学习笔记(十七):进程和线程
进程:进程概念:定义:进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。组成:代码 数据 状态寄存器:CPU状态CP0、指令指针IP 通用寄存器:AX、BX、CX 进程占用系统资源:打开文件、已分配内存特点:动态性:客动态地创建、结束进程 并发性:进程既可以被独立调度并占用处理机运行 独立性:不同的进程的工作不相互影响 制约性:因访问共...原创 2019-06-14 23:34:53 · 518 阅读 · 0 评论 -
操作系统学习笔记(十六):页面置换算法
功能:置换算法是指当出现缺页异常时,需要调入新页面而内存已满时,置换算法选择被置换的物理页面。设计目标:尽可能减少页面的调入调出次数; 把未来不再访问或短期内不访问的页面调出。页面锁定:了解具体的置换算法之前,先了解一个概念,页面锁定。页面锁定是用来描述某些必须常驻内存的逻辑页面,比如操作系统的关键部分,再比如一些要求响应速度的代码和数据,...原创 2019-05-28 00:18:54 · 4343 阅读 · 3 评论 -
操作系统学习笔记(十五):虚拟存储
虚拟存储是想把一部分内存中的内容暂时存放到外存中,以提供更大的内存空间。虚拟存储的目标:1. 只把部分程序放到内存中,从而运行比物理内存大的程序。并且由操作系统完成,无需程序员的干涉。2. 实现进程在内存和外存在之间交换,从而获得更多的空闲内存空间。在内存与外存之间只交换进程的部分内容。局部性原理:具体讲虚拟存储之前先了解一下局部性原理。局部性原理是指程序在执行过程中的一个...原创 2019-05-22 23:55:08 · 1254 阅读 · 0 评论 -
操作系统学习笔记(十四):覆盖、交换
接下来几节都是对虚拟存储的讲解。虚拟存储是非连续存储管理的扩展。通过将内存中的数据暂存到外存的方式,为进程提供更大的内存空间。虚拟存储出现的主要原因是因为程序规模的增长速度远远大于存储器容量的增长速度,导致内存空间不够用。其实针对内存空间不够用的问题有多重解决方案,比如覆盖、交换、虚拟存储。它们的概念如下:覆盖:应用程序手动把需要的指令和数据加载到内存; 交换:操作系统自动把暂时不能执行的程...原创 2019-05-18 15:37:55 · 1010 阅读 · 0 评论 -
操作系统学习笔记(十三):段页式存储管理
段页式存储管理是将前面讲过的段式存储管理与页式存储管理结合起来。这一节对段页式存储管理进行讨论。段页式存储管理的需求:段式存储管理在内存保护方面有优势。如何理解呢?因为分段时是将具有相同访问方式和数据属性的内容分配到一段连续内存中,也就是每个段内的数据属性是相似的,便于统一管理和保护。 页式存储管理在内存利用和优化转移到后备存储方面有优势。因为页式存储管理中内存划分的基本块更小,对提高内...原创 2019-05-18 13:53:12 · 3888 阅读 · 0 评论 -
操作系统学习笔记(十二):非连续内存分配——页式存储管理
页式存储管理中,物理内存被划分为大小相同的基本分配单位,我们称为页帧,页帧的大小必须是2的幂次方,这样进行地址转换的时候比较快,可以通过二进制移位实现。比如32位系统中,4Kbyte是常见的页帧大小。而逻辑内存也被划分为大小相同的基本分配单位,我们称为页面,页面与页帧大小必须相等。页帧与页面一个是对物理内存地址一个是对逻辑内存地址而言的。因此页式存储管理中要处理逻辑地址与物理地址的转换,也就变为对...原创 2019-05-17 12:15:26 · 2573 阅读 · 0 评论 -
操作系统学习笔记(十一):非连续内存分配——段式存储管理
段式存储管理中,将程序的逻辑地址空间内容分为不同的段进行管理,逻辑地址空间与物理地址空间之间的映射关系图可以如下所示:每个段内部是连续的,但是不同的段在物理内存上是不连续的。段的概念:段表示访问方式和存储数据等属性相同的一段地址空间; 一个段对应一个连续的内存块; 若干个段共同组成进程的逻辑地址空间。段访问:逻辑地址由二元组表示。其中 s 表示段号,addr 表示段内偏移...原创 2019-05-16 12:33:47 · 1495 阅读 · 0 评论 -
操作系统学习笔记(十):非连续内存分配——背景
连续内存分配给内存分配带来了很多不便,可能所有空闲片区大小都无法满足需求大小,这个分配就会失败。基于这种现状,就有了非连续内存分配的需求。非连续分配成功的几率更高,但也面对更多的问题,比如分配时是不是1个字节的空间也可以进行分配?显然1个字节为单位分配太短了。因此我们需要选择不同尺度的基本块进行分配管理。实际操作系统中出现了两种基本块,一种是段式,一种是页式。段式分的块比较大,页式分配的块比较小。...原创 2019-05-15 23:37:56 · 296 阅读 · 0 评论 -
操作系统学习笔记(九):连续内存分配——伙伴系统
伙伴系统是连续存储分配的一种办法。它比较好地折中了分配和回收过程中分配块的位置碎片和合并的问题。伙伴系统地概念如下图:整个可分配分区大小为2的幂次方,当需要的内存空间大于当前块的一半的时候就将整个分区分配给进程,如果小于当前分区的一半,就将当前分区对半分开,将其中一半继续与需要的内存大小进行比较,递归进行下去,直到满足所需内存大小大于分区一半。可以看到这种分配方式内部碎片最大为分区大小的一半减一。...原创 2019-05-15 23:02:34 · 8352 阅读 · 1 评论 -
操作系统学习笔记(八):连续内存分配——碎片整理
系统运行过程中,碎片越来越多,很可能无法获取需要的较大的内存空间。我们需要解决这个问题,这就是碎片整理的意义,可以通过碎片整理获得更大的连续内存空间,以便于满足进程的应用空间需求。碎片整理是通过调整进程占用的分区位置来减少或避免分区碎片的。碎片整理有很多种方式,比如碎片紧凑、分区对换。碎片紧凑:实现方式:通过移动分配给进程的内存分区,以合并外部碎片。 条件:所有的应用程序可以动态重定位。...原创 2019-05-15 21:56:35 · 1922 阅读 · 0 评论 -
操作系统学习笔记(七):连续内存分配——内存碎片、动态分配
在没有其他方式辅助的情况下,我们分配给一个进程的内存是连续的。在分配时候我们需要有动态分配与碎片处理。如何理解呢?就是每个进程需要一块内存,我们要选取合适的位置的内存分配给它。当有的进程先结束了内存还给操作系统,此时可能就会产生内存碎片,要对碎片进行处理。首先对一些概念进行解释。连续内存分配:给进程分配一块不小于指定大小的连续的物理内存区域。 内存碎片:不能被利用的空闲内存,内存碎片又分为外...原创 2019-05-15 13:00:23 · 3053 阅读 · 0 评论 -
操作系统学习笔记(六):地址空间和地址生成
从我们写的代码到最后在总线上出现的物理地址,有一个转换的过程,在学习具体的转换算法之前,我们需要学习地址生成的过程。生成过程中并不是所有地址都允许访问的,因此还需要对地址的合法性进行检查。地址空间定义:计算机地址空间有两种,物理地址空间和逻辑地址空间。物理地址空间就是硬件支持的真实地址空间,这是受硬件支持的,比如32位的系统,就是从0到4G-1的位置。逻辑地址空间就是在CPU中运行的进程看...原创 2019-05-15 00:18:46 · 3167 阅读 · 0 评论 -
操作系统学习笔记(五): 计算机体系结构与内存层次
计算机除了计算能力之外还有存储能力,存储能力即计算机拥有一系列的存储介质,我们可以在存储介质上存储我们的代码和数据。计算机体系结构中约定了哪些地方可以用来存储数据:CPU内的寄存器、内存和外存。不同的存储介质,容量、速度和价格都是不同的。为了建立一个合理的系统,我们将计算机系统中的存储介质组织成一个层次结构。操作系统针对层次结构下的存储单元进行管理。操作系统的存储管理就是用来管理这些存储介质的。最...原创 2019-05-14 23:08:49 · 1059 阅读 · 0 评论 -
操作系统学习笔记(四): 系统调用
本节围绕系统调用展开,主要讲解了系统调用的概念与实现、程序调用与系统调用的不同、系统调用的开销。概念:首先看一个标准C库的例子:当我们程序中使用了C库中的printf()函数,实际在底层是在内核态中调用了write()函数。图中右侧则是将程序代码与C库都算到应用程序中,内核提供了一个系统调用接口。从这个例子我们可以得到以下几点:1. 系统调用是操作系统服务的编程接口;2. 系统调用通常由高...原创 2019-05-14 11:54:18 · 1005 阅读 · 0 评论 -
操作系统学习笔记(三): 中断、异常与系统调用
这一节讲解中断、异常与系统调用,这三者也可以总称为中断处理机制。首先我们需要知道这三个机制的背景:1. 计算机运行过程中,内核是被完全信任的第三方;2. 只有内核可以执行特权指令;3. 内核需要方便地为应用程序提供服务。那么我们为什么需要这三个机制呢?也就是说这三个机制实现了什么功能呢?中断是为了处理外设IO的,比如当我有一个新的键盘和鼠标接入了计算机,或者我们在键盘上敲了键盘,此时即使计算机...原创 2019-05-12 16:33:14 · 1438 阅读 · 0 评论 -
操作系统学习笔记(二): 系统启动流程
上一节讲解系统调用的过程中粗略的讲了一下系统启动的流程,然而实际上系统地启动流程远没有那么简单,本节就稍微详细地讲解一下。但是实际上即使是这一节也无法十分详细讲解,只是让我们对系统启动的过程有一个整体的认识而已。首先是BIOS读取加载程序的过程:系统加电后,CPU初始化,然后BIOS初始化硬件,然后查询主引导记录读取主引导扇区代码,这是由于现代计算机内通常不止有一个分区,不同分区内可能有不同的...原创 2019-05-12 15:37:05 · 528 阅读 · 0 评论 -
操作系统学习笔记(一): BIOS
这一节主要讲解了BIOS(Basic Input/Output System),基本输入输出系统。首先我们需要知道,计算机加电之后,是从什么地方读取的第一条指令,从磁盘的什么地方读取的我的操作系统的内容,也就是计算机启动的过程是怎样的。计算机加电后,首先是CPU的初始化过程,将各寄存器初始化,此时系统处于实模式下。我们要知道计算机内存分为两种,RAM(Random Access Memor...原创 2019-05-10 20:15:26 · 2607 阅读 · 1 评论