转发地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d

转发地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d

转发文章——从HelloWorld学习操作系统,

转发地址:

本文就将系统性的串联起那么些知识点,方便复习和追忆。本文适合已经有操作系统基础的同室,一起回想知识,本文并不详细讲解各个算法,本文目的在于学识串联。

透过一个事例来串联所有的知识点:

写了一个C语言程序:

#include
main()
{
  puts(“Hello World!\n”);
}

目的是期待在屏幕中看看Hello World的字样。

那就是说在运行这一个C语言程序时,操作系统做了如何吧?

  1. 首先要启动程序执行,用户要报告操作系统执行顺序

什么告知:

  • 可以鼠标双击程序
  • 命令行输入指令
  • ……

2.
操作系统知道用户的请求之后,就会基于用户提供的公文名到磁盘上找到那些程序的有关新闻,找到新闻之后,会去反省那一个顺序是或不是一个可执行文件,倘若是可执行文件,操作系统会依照程序首部音信来确定代码和数量在可执行文件中的地方并盘算出相应的磁盘块地址。

文件系统是指操作系统中集合保管新闻资源的一种软件,管理文件的蕴藏、检索、更新,提供安全可倚重的共享和护卫手段,并且有利于用户拔取。

文件按性质和用途分类:普通文书,目录文件,特殊文件(设备文件),管道文件,套接字。

文件的存储介质:磁盘(包涵SSD),磁带,光盘,U盘……

物理块是消息囤积、传输、分配的独门单位。存储设备划分为大小相当于的物理块,统一号码。

五次访问磁盘的呼吁:

  • 寻道:磁头移动定位到指定磁道。
  • 旋转延迟:等待指定扇区从磁头下旋转经过。
  • 数码传输:数据在磁盘与内存之间的实在传输。

SSD没有寻道和旋转延迟的时日用度,所以速度快。

文本决定块:为管理文件而设置的数据结构,保存管理文件所需的有所关于新闻。

常用属性:文件名,文件号,文件大小,文件地方,创制时间,最终修改时间,最后访问时间,珍视,口令,创制者,当前拥有者,文件类型,共享计数,种种标志。

文件目录:统一保管各个文件的元数据,以支撑文件名到文件物理地址的更换。将有所文件的管理消息公司在一块儿,即构成文件目录。

目录文件:将文件目录以文件的款型存放在磁盘上。

目录项:构成文件目录的主导单元,目录项可以是FCB,目录是文本决定块的平稳聚集。

文本的大体结构:文件在存储介质上的寄放方式。

物理结构:

  1. 连续社团:文件的音信寄存在多少连连的物理块中。

    FCB中保留文件块的起先块号和尺寸。

澳门金沙国际 ,   
优点:协理随机存取和一一存取,所需的寻道时间和寻道次数最少,可以而且读入七个块,检索一个块很不难。

    缺点:文件不大概动态增进,不便利文件插入和删除,有外部碎片(紧缩技术)

2.
链接结构:一个文本的音讯寄存在多少不总是的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。

    FCB只须要保留先导块号

   
优点:提升了磁盘空间利用率,有利于文件的插入和删除,有利于文件动态扩展。

   
缺点:存取速度慢,不适于随机存取,可靠性难点(如指针出错),更加多的寻道次数和寻道时间,链接指针占有一定空间。

可以对链接结构举办变形:文件分配表(FAT),早期windows和U盘使用的布局。

FAT存放了所有的链接指针,每一种物理块对应FAT的一行。

澳门金沙国际 1

0意味没事物理块,-1表示文件最终一块。

文本的开首块号保存在文书的FCB中。

3.
索引结构:一个文本的消息寄存在多少不两次三番物理块中,系统为各类文件建立一个专用数据结构——索引表,并将这几个物理块的块号存放在索引表中。

索引表就是磁盘块地址数组,其中第i个条文指向文件的第i块。

FCB中用一个字段保存索引表的职责。

澳门金沙国际 2

目录结构优点:保持了链接结构的助益,化解了链接结构的弱项,既能顺序存取,又能随机存取,满意了文件动态拉长,插入删除的渴求,能丰盛利用磁盘。

缺陷:较多的寻道时间和寻道次数,索引表自身带来了系统开发。

索引表有大概很大,要求三个物理块保存,就有数以万计索引和概括索引。

多级索引:

澳门金沙国际 3

UNIX三级索引结构:

澳门金沙国际 4

做客一个文本:文件名->文件目录->FCB->磁盘

坚实文件系统性能:

磁盘调度:当有五个访盘请求等待时,拔取自然的政策,对那么些请求的劳动顺序调整安插。下降平均磁盘服务时间,公平,高效。

磁盘调度算法:

澳门金沙国际 5

澳门金沙国际 6

3.
为了执行那些helloworld程序,操作系统会成立一个新的历程,并将该程序的可执行文件格式映射到该进程协会,表示由该进程来进行那些程序。

进程是负有独自功用的先后关于某个数据集合上的三次运行活动,是系统开展资源分配和调度的单独单位。

PCB,进度控制块,操作系统用于管理控制进度的一个特意数据结构,进度与PCB是逐一对应的。

PCB中有:

进度描述消息:进度标识符(唯一),进度名,用户标识符,进度组关系

经过控制音讯:优先级,代码执行入口地址,程序的磁盘地址,运行计算新闻(执行时间,页面调度),进程间一块和通讯,进度的种类指针,进度的音信队列指针。

所负有的资源和利用景况:虚拟地址空间的场所,打开文件列表

CPU现场消息:寄存器值(通用寄存器,程序计数器PC,进度情形字PSW,栈指针),指向该进度页表的指针。

进程表:所有PCB的集合。

进度意况:

澳门金沙国际 7

操作系统为每一类经过(就绪、等待……)建立一个或八个系列,队列元素为PCB,伴随进度景况改变,其PCB从一个队列进入另一个队列。

澳门金沙国际 8

进度的创办:

  • 给新历程分配一个唯一标识以及PCB
  • 为经过分配地址空间
  • 起头化PCB(设置默许值,如意况为NEW……)
  • 安装相应的行列指针(如把新过程加到就绪队列链表中)

操作系统为每一种进程都分配了一个地址空间。

由于本性,开支等设想,引入了线程的概念。

线程的开发小,创制新线程开销的年华少,线程间切换费用时间少,线程之间相互通信无须调用内核(同一进程的线程共享内存和文件)

线程是经过中的一个运行实体,是CPU的调度单位。

4.
操作系统将控制权交给调度程序,如若调度程序选中了helloworld程序,由操作系统为该程序设置CPU上下文环境,并跳到程序开端处,准备实施该程序。那么下一个命令周期就是举办helloworld程序了。

CPU调度:按自然的调度算法从稳妥队列中甄选一个历程,把CPU的使用权交给被增选的历程。若是没有妥善进度,系统会配备一个悠闲进程。

CPU调度须要化解四个难题:调度算法、调度时机、调度进程。

调度算法:

占有CPU的方式:

抢占式和非抢占式

光阴片轮转

  • 先来先服务(FCFS)
  • 最短作业优先(SJF)
  • 最短剩余时间优先(SQashqaiTN)
  • 摩天响应比优先(HQX56奥迪Q3N)
  • 不可胜言反馈队列(Feedback)
  • 高高的优先级调度
  • 滚动调度(Round
    罗布in),为短职务改良平均响应时间,每一种进程分配一个时间片

澳门金沙国际 9

典型系统的调度算法:

澳门金沙国际 10

5.
当执行helloworld程序的第一条指令时,会生出缺页格外(唯有将代码和数据读入内存才能实施顺序,执行第一条指令时,还没有将代码数据读入内存,那么这几个时候,硬件机制会捕获出缺页分外,并且把控制权交给操作系统)

6.
操作系统管理了统计机连串中的内存,(若是是页式管理)操作系统会分配一页物理内存,依据前边计算出的主次的磁盘块地址,将helloworld程序从磁盘读入内存,然后继续执行helloworld程序。有的时候程序很大,一页内存不够,那么会反复发生缺页极度,然后从磁盘中读入程序到内存

大家曾经知道,逐个进程都有和好的历程地址空间,并且经过要装入内存才能运作。那么什么样将经过地址空间装入内存就是一个必须消除的难题。

通过上边的叙述,我们得以领略,进度中的进程地址空间的地方,并不是最后的物理地址。

就此必要地点重向来(地址转换,从进程地址转换成物理地址)来试验进程的加载。

我们把进程地址称为逻辑地址/相对地址/虚拟地址,而内存存储单元中的地址称为物理地址/绝对地址/实地址,很精通,唯有物理地址可以一贯寻址。

地点重定位分为静态重平素和动态重从来

静态重一向:当用户程序加载到内存时,三次性达成逻辑地址到大体地址的变换。可是需求那几个程序在内存中的地方无法更改。

动态重一直:在先后加载到内存中,不更改地址,依然是逻辑地址。在程序执行进程当中再开展地址转换,即逐条指令执行到位更换。由MMU(内存管理单元)来增速重一向。

前天早就可以将次第加载到内存了,那么该怎么样疾速地分配内存给某个进程呢?

内存分配算法:

  • 首次适配(第二个满足)
  • 下次适配(从上次找到的空闲区往下找)
  • 至上适配(查找整个空闲区表,找到满足要求的很小空闲区)
  • 最差适配(总是分配满意进度须要的最大空闲区)

当内存归还后,则面临着回收难题,将左右空闲空间合并。

一种经典的内存分配方案:伙伴连串

将内存按2的幂进行分割,组成若干的悠闲块链表,查找该链表找到能满足进度须要的特等匹配块。

澳门金沙国际 11

着力内存管理方案

澳门金沙国际 12

进度进入内存的连续区域:

单纯一而再区,内存利用率低

固定分区,浪费空间

可变分区,剩余部分导致大气外碎片,碎片化解方案,紧缩技术(移动程序,将兼具小的空闲区合并成较大空闲区)

进度进入内存不延续区域:

页式存储管理:

经过地址空间被分割为大小相等的一些,称为页恐怕页面。内存地址空间按同样大小分为大小相等的部分,称为页框。

内存分配政策:以页为单位展开分配,并按进度必要的页数来分配,逻辑上紧邻的页,物理上不自然相邻。

澳门金沙国际 13

 

澳门金沙国际 14

页表记录了从逻辑页号到页框号的投射关系。

每一种历程一个页表,存放在内存。页表的发端地址在某个寄存器中。

页式存储管理中的地址转换进程:CPU取到逻辑地址,自动划分为页号和页外地址,用页号查页表,得到页框号,再与页各市址拼接成物理地址。

段式存储管理:

用户进度地址按程序自己逻辑关系划分为多少个程序段,每一个程序段都有一个段名。

内存空间被动态划分为不等长区域。

内存分配政策:以段为单位进行分配,每段在内存中占据延续空间,但各段之间可以不相邻。

澳门金沙国际 15

与页式区其他是,段号和段各州址不或然活动划分,须求体现给出。

与页式相同,使用段表来记录关联关系。

澳门金沙国际 16

地址转换进程与页表也诚如:CPU取到逻辑地址后,用段号查段表,拿到该段在内存中的初阶地址,与段内偏移地址拼接总结出物理地址。

段页式存储管理:

用户进度按段划分,内存划分同页式存储管理

澳门金沙国际 17

段页式存储管理须要段表和页表

段表记录每一段的页表初叶地址和页表长度。

页表与页式存储管理相同

一个历程被分为若干段,必要一个段表,而每一段根据页式存储管理分配,又对应一张页表,所以一个进度对应一个段表和七个页表。

总结:

澳门金沙国际 18

那么当内存不足时该怎么保管吗?

内存“扩容”技术:内存紧缩(可变分区),覆盖技术,互换技术(将一些进度暂时移到外存),虚拟存储技术。

虚拟存储技术:当进度运行时,先将其有些装入内存,另一片段留在磁盘,当要执行的一声令下大概访问的数据不在内存中时,由操作系统自动落成将它们从磁盘调入内存的干活。

把内存和磁盘结合起来,拿到更大的“内存”,就是虚存。

虚拟存储技术和页式存储管理相结合,就时有暴发了虚拟页式存储管理。

虚拟页式存储管理基本考虑:

经过起初举行从前,不是装入全体页面,而是装入一个如故零个页面,之后据悉进程须求,动态装入其余页面,当内存已满,而又须要装入新的页面,则基于某种算法置换内存中的某个页面,以便装入新的页面。

鉴于页表数量太大,引入了层层页表。

依据古板的地点转换格局:虚拟地址->查页表->页框号->物理地址,那样各种进度都要一个页表。页表占据了广大上空。

缓解那几个难点:从情理地址出发,整个系统就建立一张页表(因为物理地址大小固定),页表项记录进程i的某虚拟地址与页框号的映射关系。

可是如故有一个题目存在,由于一连串页表的留存,每一次访问页表都要去访问内存,那么必要反复造访内存,由于CPU的一声令下处理速度与内存指令的访问速度差别大,CPU的快慢得不到充裕利用。

为了缓解这些题材,由于程序访问局地性原理,从而引入了快表(TLB),用来加快地点转换的进程。

快表由cache组成,访问速度快。

引入快表后的地点转换进程:

虚页号->查快表(并行比较)

一旦命中,则找到页表项

若果没有打中,用虚页号查页表获得页表项

当得到页表项后看到有效位,尽管可行位是1,表达该页已经在内存中,则运行

倘倘若0,则抛出缺页十分。

当缺页时,操作系统就要将页面调入内存,如若内存满了,必需求将有些页面暂时调出到外存中。

那么置换的政策有哪些呢?

  1. helloworld程序执行puts函数(系统调用),在显示屏上写一字符串。

8.
出于puts函数是系统调用,控制权又交给操作系统上。操作系统找到要将字符串送往的的突显设备,平时设备是由一个进度控制的,所以,操作系统将要写的字符串送给该进度。

CPU与I/O:

减弱或缓解速度差异->缓冲技术

使CPU不等待I/O->异步I/O

让CPU摆脱I/O操作->DMA,通道

9.
决定设施的长河告知设备的窗口系统它要展现字符串,窗口系统确定那是一个法定的操作,然后将字符串转换成像素,将像素写入设备的贮存印象区。

  1. 摄像硬件将像素转换成荧屏可以承受的一组决定/数据信号。

  2. 屏幕解释信号,激发液晶屏。

  3. 在显示屏上见到hello world。

 

从上边的历程中,大家能窥见,CPU上时而运行用户程序,时而运行操作系统程序。运行操作系统程序,大家称CPU处在内核态,运行用户程序,大家称CPU处在用户态。

而那三种CPU状态之间的更换:

从用户态到内核态,只好通过暂停/非凡/陷入进制(陷入指令是一条卓绝的命令,提须求用户程序的接口,用于调用操作系统的作用/服务,例如int,trap,syscall,sysenter/sysexit)

而内核态到用户态,设置程序状态字PSW.

停顿/极度机制,是操作系统的驱动力,咱们得以说,操作系统是暂停驱动的。

暂停/分外的定义:CPU对系统发生的某个事件作出的反射。

CPU暂停正在举办的次序,保留现场后自动转去执行相应事件的处理程序。处理完了后归来断点,继续执行刚才被打断的程序。

暂停和那么些的分裂在于,中断是由外部引发的,而老大则是该程序自身暴发的。

CPU几时去响应中断?CPU会在每一条指令执行最后,去扫描中断寄存器,查看是或不是有抛锚。若有抛锚,中断硬件将该中断触发器内容按规定编码送入PSW的应和位,称为中断码,通过查中断向量表引出中断处理程序。

除了,当然还有进度互斥同步难题。

进度互斥:由于各进度必要选拔共享资源(变量、文件等),而那一个资源须求排他性使用,各进度间竞争使用那些资源。这一事关称为进度互斥。

进程互斥软件消除方案:

Dekker算法:

P进程:

pturn = true;
while(qturn)
{
    if(turn == 2)
    {
       pturn = false;
面试CS基础之操作系统,从HelloWorld学习操作系统。       while(turn == 2);
       pturn = true;
    }
}

临界区
turn = 2;
pturn = false;

Q进程:

qturn = true;
while(pturn)
{
    if(turn == 1)
    {
       qturn = false;
       while(turn == 1);
       qturn = true;
    }
}

临界区
turn = 2;
qturn = false;

pturn和qturn表示对应的进度想进临界区,倘若都想进临界区,则透过turn来判定本身是还是不是要让出CPU。从而落成互斥。

Peterson算法:

制服了Dekker算法强制轮流的后天不足。

i表示经过号

进程i:
……
enter_region(i);
临界区
leave_region(i);
……

int turn;//轮到谁
int interested[N];//兴趣数组,开首都为false,表示某个进度想进临界区
void enter_region(int process)//即便那里八个进程的进度号是0和1
{
     int other;//表示另一个历程的进度号
     other = 1 – process;
     interested[process] = true;
     turn = process;
     while(turn == process && interested[other] == true);
}
void leave_region(int process)
{
   interseted[process] = false;
}

此处的turn变量要专注一下,turn表示轮到哪个人来进入临界区,若是七个经过都想进入临界区,可以发现trun变量会被后赋值的经过替换到先赋值的经过。

Peterson算法希望先想进临界区的经过先进去,那么在while循环中就发出了判断,若是turn是时下历程号(表示该进度是后想进入临界区的),则一贯在while循环中等待,当然还索要看清另一个经过是不是想进入临界区(interested[other]==true),即使另一个经过不想进入临界区,就没必要等待了。

Peterson算法Java实现:

public class Peterson implements Runnable {

private static boolean[] in = { false, false };
    private static volatile int turn = -1;

public static void main(String[] args) {
        new Thread(new Peterson(0), “Thread – 0”).start();
        new Thread(new Peterson(1), “Thread – 1”).start();
    }

private final int id;

public Peterson(int i) {
        id = i;
    }

private int other() {
        return id == 0 ? 1 : 0;
    }

@Override
    public void run() {
        in[id] = true;
        turn = other();
        while (in[other()] && turn == other()) {
            System.out.println(“[” + id + “] – Waiting…”);
        }
        System.out.println(“[” + id + “] – Working (“
                + ((!in[other()]) ? “other done” : “my turn”) +
“)”);
        in[id] = false;
    }}

进程的一块儿:指系统中七个进程中发出的轩然大波存在某种时序关系,需求互相合营,共同已毕一项任务。

化解措施:

  • 信号量
  • 管程(信号量编程易出错),Java中的synchronize
  • 进度间通讯IPC(由于信号量和管程只好传递少量音信,不只怕传递大量音讯,并且管程不选取与多处理器的景况),进度通讯的主导措施有1.新闻传递
    2.共享内存 3.管道 4.套接字 5.远程进程调用

本来还有死锁难点:

发生死锁的须求条件:

资源分配图:用有向图描述系统资源和进程的场馆。

如:

澳门金沙国际 19

假定资源分配图中尚无环路,则系统中一贯不死锁,若是图中留存环路,能容许存在死锁。

澳门金沙国际 20

比方各个资源类中只包罗一个资源实例,则环路是死锁存在的尽管需要条件。

死锁预防:

死锁幸免:银行家算法,安全情况自然没有死锁暴发。

银行家算法总的来说就是,给各种用户贷款的钱不会超过银行钱的总量,不过拥有用户贷款的钱的总额是足以当先银行钱的总量的。

死锁检测与解决:允许死锁发生,但是操作系统会不断监视死锁是还是不是真正发生。一旦死锁发生,就会使用专门的法门,以细小代价来解除死锁,復苏操作系统运行。

让大家再度总计一下HelloWorld程序的运行。

当我们运行HelloWorld程序时,操作系统会依照文件名去找文件目录,然后找到了FCB,通过FCB里的大体地址找到磁盘上相应的文本。

那么FCB是何许获取文件的大体地址的啊?那和文书的大体构造有关,文件的情理结构有连接协会、链表结构、索引结构,不一致结构中FCB保存的新闻差异。

取得物理地址然后,从磁盘上读取文件必要通过寻道,旋转延迟,数据传输三部分。那么如何快速地从磁盘上读取文件呢?就可以动用不一样的磁盘调度算法,譬如先来先服务,最短寻道时间先行,扫描算法,旋转调度算法等等。

收获文件后,操作系统会成立一个新的长河去实施这几个程序。进度与PCB是各样对应的,PCB中保留了经过的各种音信,系统为各类进度分配一个地方空间,那个地点空间是虚拟地址。

有了经过去运转这一个程序后,就等着CPU调度那个进度了。CPU调度算法有先来先服务,最短作业优先,最短剩余时间优先,最高响应比优先,轮换调度等等。

当CPU接纳调度了这一个程序,想要运行这么些程序的首先条指令时,会爆发缺页十分,因为代码数据还尚未读入内存,有的时候程序很大,一页内存不够,那么会反复暴发缺页至极,进度必须进入内存才能被周转,须求经过地点重一直将经过的虚拟地址转换成物理地址,不同的内存管理章程会有差其余变换情势,比如页式存储管理,段式存储管理,段页式存储管理,加了虚拟存储技术将来,还有虚拟页式存储管理,由于采取虚拟存储技术,在内存满时,必要将部分页面暂时调到外存,置换的算法有最佳页面置换算法,先进先出算法,目前未选择算法,近来起码使用算法等等。

今昔进度被加载到了内存,该怎样火速地分配内存给那几个进程呢?内存分配算法:首次匹配,下次分外,最佳匹配,最差匹配。若是那时内存满了,则会调用刚刚说的置换算法。

那会儿CPU已经打响运行了这些程序。之后必要出示的字符串将会付给显示设备的历程。最终是一文山会海硬件上的拍卖,成功让显示器突显HelloWorld。

 

来自
<;

 

转发地址:

本文就将系统性的串联起那一个知识…


正文就将系统性的串联起那多少个知识点,方便复习和纪念。本文适合已经有操作系统基础的校友,一起回想知识,本文并不详细讲解每一种算法,本文目的在于文化串联。

本文就将系统性的串联起那几个知识点,方便复习和回想。本文适合已经有操作系统基础的校友,一起回看知识,本文并不详细讲解每一种算法,本文目的在于学识串联。

前言

北大《操作系统原理》课堂笔记,原文头阵于个人博客,大纲之类:

  1. 操作系统概述
  2. 操作系统运行环境
  3. 进度线程模型
  4. 统计机调度
  5. 一起机制
  6. 存储模型
  7. 文件系统
  8. I/O系统
  9. 死锁

透过一个例子来串联所有的知识点:

通过一个事例来串联所有的知识点:

操作系统概述

  1. 推行顺序:通过调度选中程序最先履行,在实践进度中,不断陷于操作系统提供各类劳动匡助,再调度选中程序,直到已毕
  2. 作用:有效(丰硕利用CPU、内存、磁盘等资源)、合理(公平的资源管理策略)、易用(用户界面和编程接口)
  3. 意义:管理资源(硬件、软件)、向用户提供服务(创立、执行、IO、总结)、对硬件机器扩充(屏蔽硬件细节、提供虚拟机器界面)
  4. 特性:并发(处理多少个同时性活动)、共享(非同时互斥共享、同时共享有限系统资源)、虚拟(映射为多少逻辑实体)、随机(不可预感运行程序)
  5. 特出架构(用户态、内核态):Windows(硬件抽象、设备驱动、内核、图形窗口、执行体、内核态可调用接口、服务分发器、DLL)、Unix(硬件控制层、调度、进程间通讯、存储管理、内存管理、文件系统、设备驱动、系统调用接口)、Linux(进度、调度、虚拟内存、物理内存管理、各个装备驱动、互联网模块、陷入卓殊模块、中断处理模块、系统调用接口)
    、Android(Linux内核、系统库和Android运行时系统、应用程序框架、应用程序)
  6. 分拣:批处理(Spooling缓存I/O到磁盘)、分时(时间片、追求响应时间、交互式)、实时(严俊时间、高可相信)、个人统计机(使用方便)、网络(通讯、资源共享)、分布式(多机协同完毕一项职分)、嵌入式(特定装置中的软硬件种类)

写了一个C语言程序:

写了一个C语言程序:

操作系统运行环境

  1. CPU:运算器、控制器、通用寄存器、控制和景观寄存器(PC、IEscort、PSW)、高速缓存
  2. CPU状态:内核态(特权指令君越0)、用户态(用户奥德赛3)
  3. 暂停/格外机制:CPU暂停当前举办顺序,保留现场,硬件自动转去处理程序,处理完后归来断点,继续被打断的程序
  4. 事件:中断响应外部事件,异步处理,总是回到下一条指令,如I/O、时钟、硬件故障;十分源于内部正在执行的顺序,同步处理,分为陷入、故障、终止,如系统调用、页故障、断点、权限敬爱、程序
  5. 停顿响应(硬件):指令周期末扫描中断寄存器,CPU切换来内核态,保存现场(PSW+PC),通过暂停码查中断向量表(中断处理程序入口+处理机状态字),推送中断处理程序入口到寄存器
  6. 暂停处理程序(软件):保存相关寄存器信息,分析发生原因。执行处理效果,恢复生机现场
  7. 系统调用:用户在编程时能够调用的操作系统成效,如进程控制、通讯、文件使用、目录操作、设备管理、新闻维护
  8. 先后调用:应用程序可以经过库函数和API进入系统调用,也可径直掀起系统调用,系统调用再调用对应内核函数
  9. 系统调用设计:中断/格外机制(协理系统调用服务的完成),陷入指令(引发那一个,用户态切换来内核态),系统调用号和参数(差距种类调用的号码),系统调用表(服务程序的进口地址),参数传递(陷入指令自带、通用寄存器、内存中专用堆栈区)
  10. 系统调用进程:CPU执行到优良的陷落指令;中断硬件维护现场,通过门描述符(段拔取符+偏移量)查系统调用表;转入查到的系统调用总入口程序,爱戴现场,保存参数到基础堆栈,通过系统调用号查系统调用表;执行查到的系统调用例程;恢复生机现场,再次回到用户程序

#include

#include

进度线程模型

  1. 并发程序:一段时间内,单处理器上多个程序同时处于起先运行但未完工状态,且次序不是预先确定的
  2. 进程:程序的一遍实施,正在运行程序的悬空、将CPU虚拟为四个,系统资源分配单位,各种拥有独自地址空间,操作系统将CPU调度给进度
  3. 经过控制块PCB:进程描述(PID、用户标识、进度组关系)、进程控制(状态、优先级、入口地址、队列指针)、资源和行使情形(存储空间、文件)、CPU现场(进度不实施时保留寄存器值、指向页表的指针)
  4. 进程情形:运行(占用CPU)、就绪(CPU不清闲)、等待/阻塞(等待某事);创制(消息设置完但资源有限)、终止(计算音信、回收资源);挂起(分就绪挂起和鸿沟挂起,回收内存存磁盘,条件允许后可激活)
  5. 经过队列:每类进度情形有一个或五个种类,成分为PCB,进度处境改变就是换队
  6. 进度控制:利用落成某种意义的不容许中断的决定原语,转换进程景况
  7. Unix进度控制操作:fork(复制调用进度创制)、exec(新代码覆盖原地点空间创造)、wait(主动阻塞)、exit(打消,回收资源和PCB)
  8. 进程层次结构:进度由其它进程创立,Unix进度家族树以init为根,Windows中各进度的地方平等
  9. 过程地址空间:内核地址空间、用户地址空间(代码段、数据段、堆、共享库、栈)
  10. 进度印象:进度地址空间、硬件寄存器、PCB及各个数据结构、进入进度时所需的内核栈
  11. 内外文context切换:CPU硬件状态从一个进度换来另一个,运行的进程硬件状态保存在CPU寄存器上,不运行时保留在PCB中,之后可推送至CPU寄存器
  12. 引入线程:应用需要(如Web服务器)、裁减花费(创造和切换开支时间少,通讯无需内核)、升高品质(多处理器)
  13. 线程与经过:线程是过程中的运行实体,CPU的调度单位,扩张了多个实施体系
  14. 线程属性:ID、状态、上下文、栈指针;共享进度的地址空间和其它资源;程序以单线程进度始起,线程由线程创立和注销
  15. 线程的达成:Unix是用户级线程,内核不可以感知线程存在,切换较快,但同进度的线程不大概分到多CPU上,阻塞会阻塞整个经过;Windows是内核级线程,内核中蕴藏线程表,调度以线程为单位;Solaris为混合模型,线程创造在用户空间,调度在基本
  16. Pthread:POSIX四线程编程接口,线程协商哪个人上CPU;如yield函数主动让出CPU
  17. 进度脾气:并发(任何进度都可和其余同时促进)、动态(生命周期中切换状态)、独立(资源)、交互(进程间发生关系)、异步(进程独立不可预言的拉动)、进度印象(程序+数据+栈+PCB)
  18. 可重入程序:纯代码,执行不改动,调用它的历程提供数据区;大多数经过和线程唯有可重入程序才足以运作

main()
{
  puts(“Hello
World!\n”);
}

main()
{
  puts(“Hello
World!\n”);
}

统计机调度

  1. CPU调度:在适龄的调度时机,按调度算法,调度就绪队列中的进度进CPU
  2. 调度时机:内审查中断/分外/系统调用处理后,就绪队列改变吸引重新调度,如进度终止、创立、运行转入阻塞、运行转入妥善
  3. 进程切换:切换全局页目录加载新的地址空间,切换内核栈和硬件上下文;进程A切换来B,保存A上下文环境,更新A的PCB,A移至适宜队列,B设为运行态,从B的PCB苏醒上下文
  4. 调度算法考虑:优先级与事先数?多级就绪队列怎么着协会?是还是不是抢占?I/O密集或CPU密集友好?时间片长度?
  5. 今非昔比种类的调度算法:批处理处理正视吞吐量、周转时间、CPU利用率、平衡(先来先服务FCFS、最短作业优先SJF、最短剩余时间优先S瑞鹰TN、最高响应比优先H哈弗奥迪Q3N);交互式系统重视响应时间、平衡(轮转Round-罗布in、最高优先级HPF、多级反馈队列Feedback、类似SJF的最短进程优先SPN)
  6. 优先级反转:抢占式最高优先级调度时,高优先级受制于低优先级(如临界区等待),而低优先级被运行时刻较长的中先期级进度抢占,导致高优先级没办法上CPU
  7. 各个反馈队列:多少个就绪队列,顺次优先级递减,时间片递增,每一种队列之中按时间片轮转;新建进度进一级队列,用完时间片进下一流就绪队列;因堵塞进入等待队列的进度在守候已毕后,回到原级其余服服帖帖队列,但可设置时间片是或不是重新分配,参加队首或队尾
  8. 系统调度算法:Unix动态优先数,5.3BSD多级反馈队列,Linux抢占式调度,Windows基于优先级的抢占式多义务调度
  9. Windows线程调度:调度单位是线程,基于动态优先级的抢占式调度,结合时间配额的调整;引发调度的准绳除线程终止、成立、运行转入阻塞、运行转入就绪外,还有线程优先级改变和和气处理机集合改变
  10. 线程优先级升级:I/O达成、信号量或事件等待停止、前台进度的线程完结等待、窗口被唤起、饥饿超时
  11. 调度算法比较:
调度算法 是否抢占CPU 吞吐量 响应时间 开销 对进程的影响 饥饿问题
FCFS N 不强调 可能很长 对短进程和I/O不利
SJF N 对长进程不利
SRTN Y 对长进程不利
HRRN N 很好的平衡
Round-Robin Y 时间片小则低 公平
Feedback Y 不强调 对I/O型有利

目标是指望在显示屏中看看Hello
World的字样。

目的是愿意在显示器中来看Hello
World的字样。

共同机制

  1. 并发:进度的推行是刹车的,相对运行速度不可预测,共享资源带来制约性
  2. 竞争规则:多个进程读写共享数据时,结果取决于进程的纯正时序
  3. 进度互斥:几个进程的临界区代码对临界资源的利用需求排他性,各进度间竞争使用这个共享资源
  4. 临界区:临界区空则可进入,但临界区中至多一个历程,临界区外的经过无法围堵其余进度进临界区,无法让想进临界区的历程无限等待
  5. 软件解决互斥:临界区悠闲标志(free)、进区的用户(turn)、各自进区标志(pturn+qturn)、dekker算法(turn+pturn+qturn)、peterson(enter_region+leave_region/turn+interest[])、
  6. 硬件化解互斥:开关中断指令(特权指令、中断屏蔽限制CPU并发、不吻合多CPU)、测试并加锁指令(对总线加锁)、沟通指令(沟通寄存器与锁变量)
  7. 忙等待:进度在取得临界区访问权前,在CPU持续测试而不做其他事;多处理器中应用自旋锁测试,让其余CPU改锁状态,切换代价反而比持续测试大
  8. 进程同步:多进程中发出的事件存在时序关系,须要合营达成职责
  9. 劳动者/消费者难题:生产者写入缓冲区,消费者从缓冲区取多少,不大概而且成本和生育,缓冲区空不可以消费,缓冲区满不只怕生产
  10. 信号量:用于进度间传递音信的整数值,包括队列;操作包涵伊始化(非负数),原语操作P(减)V(增);二元信号量解决互斥,多值信号量消除协同
  11. PV消除互斥:划定临界区,初步化mutex为1,进临界区前执行P申请资源,出临界区后实施V唤醒等待
  12. PV化解劳动者/消费者:开头化mutex为1,empty为空位,full为0;用mutex对缓冲区举行PV消除互斥,用empty和full举办PV消除协同
  13. PV化解读者/写者难题:允许八个读者同时读,不允许同时读写;针对w信号,第二个读前P,最终一个读完V,写前后PV;针对读者连串rc,也急需在改动或判断前后用PV爱慕
  14. Linux读写锁:每种执行实体对临界区的造访或读或写,不会同时读写,此时可选取读者/写者模型;如路由表中的读写锁
  15. 管程:有协调名字的万分模块,由有关共享资源的数据结构和在其上的操作进度组成,进度可调用管程的进程以操作管程中的数据结构;编译器复杂管程的排斥,设置规范变量及等候提拔操作消除协同难题
  16. 管程内多进度:若P唤醒Q,则管程中并且设有活跃状态的P和Q八个进程;处理方法有Hoare(P等待Q)、Mesa(Q等待P),汉森并发pascal(让唤醒是管程中最后可举行操作)
  17. 管程应用:直接协会条件变量恰当的管程,用已有的联名机制直接构造;C++不接济管程,Java援救类似管程
  18. Hoare管程:管程入口设置入口等待队列,内部安装急迫等待队列放置唤醒进度,P唤醒Q则P等待Q;wait(c)优先唤醒火急队列队首,再将经过进入c链尾,signal(c)优先唤醒c链首跻身热切等待队列
  19. Mesa管程:P唤醒Q则Q等待P,防止额外进度切换开支;signal衍化到notify,进度调度执行前再度检查规范,逐个条件原语关联监视计时器超时即就绪,再衍化到broadcast使拥有该规范队列上等待的经过进入就绪队列;Mesa优于Hoare
  20. Pthread中的同步机制:互斥变量爱慕临界区Pthread_mutex_[init/destroy/lock/unlock/trylock];条件变量化解协同Pthread_cond_[init/destroy/wait/signal/broadcast]
  21. 进度间通讯:新闻传递、共享内存、管道、用于互连网分布式系统的套接字和长途进程调用
  22. 音信传递:send原语,陷入内核,操作系统复制到消息缓冲区,并挂接消息到接受进程的消息队列指针;receive原语,操作系统将新闻复制到接收进程的地方空间
  23. 共享内存:物理内存中创设一块可以共享的内存空间,将物理内存空间映射到三个进程的位置空间;利用读者/写者难点解决互斥
  24. 管道:利用缓冲传输介质内存或文件延续五个经过;按字符流读写,先进先出,化解互斥同步
  25. Linux内核同步机制:原子操作(不可分割)、屏障(一组线程都到达会师点后再一同牵动)、自旋锁、信号量、完结变量、互斥体等

这就是说在运转这些C语言程序时,操作系统做了什么吗?

那么在运转这么些C语言程序时,操作系统做了什么样啊?

积存模型

  1. 地点重平昔:将逻辑/相对/虚拟地址,映射到大体/相对/实地址;程序加载时用软件静态重一直,执行每条指令时用内存管理单元MMU动态重一直
  2. 物理内存管理:数据结构(位图、空闲+已分配区表、空闲块链表);分配算法(首次适配、下次适配、最佳适配、最差适配)
  3. 小伙伴连串:Linux底层内存分配算法,内存按2的整多次幂划分,组成空闲块链表,在链表中找寻长度超越等于申请空间且不超过其一半的空闲块,内存回收时递归合并空闲伙伴
  4. 主干内存管理方案:占据内存三番五次空间(单一而再续区、固定分区、可变分区),分布在内存中不总是区域(页式、段式、段页式)
  5. 单纯性一连区:单一程序独占内存,总是被加载到同样内存地址
  6. 一贯分区:将内存分割为多少一而再分区,大小可不比但必须稳定不变,各种分区装载一个进度
  7. 可变分区:按照进程要求,动态分割出分区分配给进度
  8. 页式:用户地址空间划分为大小相等的页,内存空间按页大小划分为三个页框,分配单位是页
  9. 段式:用户地址空间按自身逻辑划分为多少段,内存空间划分为多少个长度区其余区域(可变分区),分配单位是段
  10. 段页式:用户程序地址空间是段式,每段内含有多页,内存空间是页式,分配单位是页
  11. 减弱技术:在内存中活动程序,将拥有小的零散合并为较大的空闲区,无法消除页式管理造成的内碎片
  12. 蒙面技术:将不会同时举行的程序段共享同一块内存,必要程序员显式编程,将来很少用
  13. 交流技术:将先后内存中的堆栈(静态数据一向在磁盘),在很少使用或内存不够时,暂时移动到磁盘上的交换区(swap/pagefile),让外存中的程序占据其原有内存
  14. 空间拉长:进度的数据段和栈段会不断升高(堆向上,栈向下),可留下部分空间须求它们同向或反向升高
  15. 虚拟存储:进程运行时先将一些装入内存,另一局地暂留在磁盘,执行命令或访问数据时按需从磁盘调入内存;虚存打造在存储种类上,由操作系统调度各存储器的运用;虚存大小与机具位数和磁盘大小有关
  16. 存储珍贵:每一个进度有单独地址空间,访问合法地址范围,权限合法
  17. 虚构页式:虚拟存储技术整合页式存储管理;方式有请求调页和优先调页
  18. 页式映射:递归查找多级页表早先地址,与页内偏移拼接为大体地址;页表项中卓有成效位代表是否已存入内存
  19. 反转页表:以物理内存大小建立页表,将虚拟地址的页号部分哈希,指向反转页表的某个地点,借助链表消除冲突
  20. 内存管理单元MMU:查页表和页表项的效应位,将虚拟地址转换为大体地址
  21. 块表TLB:由cache组成,是按内容相互查找的衔接存储器,保存部分页表项;MMU先查快表,没命中再查页表
  22. 页错误:地址转换进程中硬件爆发卓殊,包罗缺页、违反权力、地址指向未定义
  23. 驻留集:给各样进程分配的页框数;可依据进度类型和内需的一定分配,或依照缺页率评估的动态分配
  24. 互换策略:置换范围为当前经过的驻留集叫局地置换,内存中颇具未锁定页面都为候选叫全局置换;局地、全局置换结合固定、动态分配策略,共发生三种方案,局地固定、全局稳定、全局动态
  25. 免除策略:从进程驻留集中裁撤页框;分页守护程序,有限援救系统中总有自然数量的空页框;页缓冲技术,不舍弃置换页而是出席修改页链表中,定期批量写回磁盘
  26. 页面置换算法:OPT(未来最远使用)、NRU(LRU的简易近似)、FIFO(先进先出)、第二次机会(第二回先放队尾)、时钟(在环上移动指针)、LRU(非凡开销大)、老化(左置右移)、工作集(保持活跃页面的聚合)
  27. 影响缺页次数:置换(磁盘调度页面比运行时刻多发生震荡),页面大小(最优值为2倍的次第层面乘页表项再开根),程序编制方法(多维数组),驻留集(平衡点)
  28. Belady现象:FIFO算法,驻留集增大,缺页率只怕反倒有增无减
  29. 内存映射文件:用系统调用将文件映射到虚拟地址空间,访问文件就如访问大数组
  30. 写时复制:父进度创设子进程后共享一块标记为写时复制的虚拟空间,当子进度执行本身代码数据时,操作系统为其分配新的上空

1.
率先要启动程序执行,用户要告诉操作系统执行顺序

1.
首先要开动程序执行,用户要告诉操作系统执行顺序

文件系统

  1. 文件:标识为文件名,对用户而言有全体的逻辑含义,对操作系统而言是新闻项的体系
  2. 文件系统:管理磁盘空间,完成按名存取(名字空间到磁盘空间的转换),共享及保安,向用户和I/O提供接口
  3. 文本分类:普通文书(包括用户新闻的ASCII或二进制文件)、目录文件(管理文件系统的系统文件)、特殊文件(字符/块设备)、管道文件、套接字
  4. 逻辑结构:流式文件(字符)、记录式文件(记录)
  5. 蔟:音讯囤积、分配、传输的独门物理块单元
  6. 磁盘结构:物理地址由磁头/盘面号、磁道/柱面号、扇区号组合;扇区包含10B标题、512B数据、12~16B的ECC纠错音讯
  7. 磁盘汉语件相关数据结构:位图(设置0/1)、空闲块表(起头块号和空闲长度)、空闲块链表(各种节点含下一个指针)、成组链接法(从专用块出发,每组首个空闲块记录下组的空闲块号和块数)
  8. 文件决定块FCB:包罗管理文件所需的文件属性或元数据,包涵名字、时间、地址、标志等
  9. 文件目录:统一管理每一种文件的元数据,完结名字到地点转换;文件目录以目录文件的格局储存在磁盘;目录项是FCB
  10. 大体构造:顺序结构、链接结构、索引结构(存放索引表的索引块地址位于FBC中)
  11. 索引表的团队:索引表很大,要求三个物理快存储时,可使用链接格局链接多少个块、上级索引表各种表项放置下级索引表地址的层层索引、或双方结合的汇总形式
  12. 文本卷:磁盘逻辑分区,由一个或两个蔟组成,包罗2的整数十次幂个扇区;格式化就是在文书卷上初步化元数据,建立文件系统
  13. 分区内容:率领区(指点操作系统所需消息,第一扇区)、卷新闻(总蔟数、空闲蔟数和指针、空闲FCP数量和指针等)、目录文件(根目录及其余目录文件)、用户文件
  14. Unix文件系统布局:教导区、一流数据块(文件系统结构音讯)、空闲区管理(空闲表或有关协会)、i节点区、根目录区
  15. Windows中FAT系统布局:引导区(文件系统数据记录)、文件分配表1(蔟的分红处境、标注下一簇)、文件分配表2(1的镜像)、根目录、其余目录和文件
  16. 内存粤语件有关数据结构:系统打开文件表,整个种类一张,包罗FCB(i节点)音信、引用计数、修改标记;用户打开文件表,保存在逐个进程的PCB中,包罗文件描述符、打开格局、读写指针、系统打开文件表索引
  17. 目录项分解:把FCB分为2有些,符号目录项(文件名、文件号)和骨干目录项(除文件名外所有字段,描述文件有关音信);Unix中FCB=目录项+i节点,各种文件由目录项、i节点、若干磁盘块组成
  18. Unix文件查找/a/b/c:一流数据块中获取根目录文件地方,根目录文件中收获a的i节点地址,a的i节点中拿走a目录文件地方,a目录文件中取得b的i节点地址,b的i节点中得到b目录文件地方,b目录文件中得到c的i节点地址,c的i节点中得到文件物理地址
  19. FAT文件系统:按FAT表项字节数分为FAT12、FAT16、FAT32;FAT16根目录大小固定,不匡助Unicode;目录项都为32B,包括文件属性和初叶蔟号
  20. 文本分配表FAT:可看作整数数组,每一个整数代表磁盘分区的一个蔟号,记录状态和下一组蔟号
  21. 解决长文件名:使用不定点长度的目录项,添加长度和截至标志;名字统一在堆存放,目录项中带有指向堆内的指针;FAT32的各样长目录项可保存13字符,长目录项前务必有一个常见的短目录项
  22. 文件操作:创设(建FCB,分配存储空间);打开(找目录项,更新共享计数,获取文件讲述符);指针定位(fd查用户打开文件表找表项,设置读写指针);读文件(由文件讲述符找FCB,转换为物理块,申请缓冲区,进行I/O);重命名(修改FCB中的名字)
  23. 一致性:磁盘块写回内存前出现故障,元数据一致性被毁坏;Unix中用多个表记录使用中的块和空闲块,相比修复一致性
  24. 写入策略:同时考虑速度和一致性;通写、延迟写、可还原写(日志,如NTFS、ext3)
  25. 访问控制:访问控制表(每一个文件能被什么用户操作),能力表(每一个用户能操作哪些文件);用户(owner、group、other),操作(r、w、x、-)
  26. 升高品质:目录项分解、当前目录、磁盘碎片整理、块高速缓存(一式三份存在于磁盘、内存、缓存)、提前读取、合理分配磁盘空间(FCB与蔟同组)、磁盘调度、音讯的优化分布(磁道排列形式)、记录的成组与解释(若干逻辑记录组成一块)、RAID等
  27. 磁盘调度算法:FCFS、最短寻道时间优先、SCAN(电梯)、C-SCAN(总是从0号向内)、N-step-SCAN(每一回服务n长子队列)、FSCAN(八个体系,新请求入另一个队列)、旋转调度(旋转延迟)
  28. RAID:独立磁盘冗余矩阵,文件卷跨盘,用数码分条(如RAID0)并行I/O进步品质、用镜像(如RAID1)和校验(如RAID4)提供容错

怎么告知:

什么告知:

I/O系统

  1. I/O管理:建立设备和内存间的数据通道,从应用程序或文件系统拿到请求,交由装备硬件响应,进度由CPU控制
  2. 设施分类:块设备(以块寻址)、字符设备(速率低);独享设备(单进度使用,可静态或动态分配)、共享设备(多进程排队分时共享)、虚设备(共享设备模拟的占据设备,如Spooling技术)
  3. 管住对象:依据用户请求,控制装置落成与内存间的数据互换;建立便民、统一的独立于设备的接口;进步CPU与设施、设备与设施的并行工作能力;爱护数量的安全性、完整性、保密性
  4. 硬件组成:机械部分是设备本身,物理装置;电子部分是装备控制器,完毕端口编址、信号处理、缓冲
  5. I/O地址:独立编址,端口与内存地址空间完全独立,分配给I/O地址空间很少,操作不灵活;内存印象编址,将I/O端口看作存储单元,与内存空间统一编址,不或然对控制寄存器高速缓存
  6. 控制措施:可编程(轮询,CPU忙等待)、中断驱动(操作甘休后用中断主动通报驱动)、DMA(直接存储器访问,不经过CPU)
  7. I/O衍变:CPU控制->轮询->中断->DMA->单独的微机->拥有局地存储器(自个儿已是总结机)
  8. 软件层次:用户进度I/O(用户层执行输入输出系统调用,准备假脱机)、逻辑I/O(驱动程序的合并接口,错误报告,缓冲,分配和释放设备)、设备驱动程序(设置寄存器,检查执行景况)、中断处理程序(完结后指示设备驱动)
  9. 装备独立性:用户编写程序时利用逻辑设备名,由系统完毕逻辑设备到大体设备的映射;操作系统设计I/O软件时,除直接与设备打交道的最底层软件外不借助于硬件;设备分配灵活,易于落到实处I/O重定向
  10. 缓冲技术:消除到达与相差速度不包容的题材,进步CPU与I/O设备的并行性;按缓冲区地方有硬缓冲、软缓冲,按缓冲池个数有单缓冲、双缓冲、缓冲池
  11. 缓冲区:由缓冲控制块和缓冲数据区组成,相关数据结构有空暇缓冲区队列av链和装置缓冲队列b链;初阶时在av链,开端I/O请求时在I/O请求队列和b链,完结I/O后在av链和b链
  12. 设施管理数据结构:描述设备的表格、建立同类资源的队列、面向I/O进程的动态数据结构、建立I/O的体系
  13. 驱动程序:各种设备驱动程序管理一类设施,从上层接受并释放命令,监督执行时可让进程等待也足以不等待;与操作系统、用于初步化的系统指点、设备都有接口
  14. I/O进度:系统级过程,优先级高;对于I/O请求,用户通过send发送给I/O进度,阻塞本身直到I/O完结并被提示,操作系统通过wakeup唤醒I/O进度,达成时用户须要的职务;对于I/O中断,操作系统判断为健康中断则交由I/O进度,非常则交给错误处理程序
  15. 增长质量:缓冲(收缩CPU和I/O的进程差别)、异步I/O(等待I/O期间CPU可进行其余操作)、DMA(CPU摆脱I/O)
  • 可以鼠标双击程序
  • 命令行输入指令
  • ……
  • 可以鼠标双击程序
  • 命令行输入指令
  • ……

死锁

  1. 死锁:各种进程无限等待被该组进度中另一经过占有的资源;与之相比较,活锁为先加锁再轮询不封堵不牵动,饥饿是由于资源分配政策如优先级导致得不到资源
  2. 死锁条件:互斥使用(资源垄断),占有且等待(部分分配),不可抢占(不可剥夺),循环等待(进度等待环路)
  3. 资源分配图:进度是圆,资源类是方,资源实例是方框中黑点;申请边(进度,资源类)表示经过请求某类资源,分配边(资源实例,进度)表示资源分配给某经过
  4. 死锁定理:在资源分配图中,无环路必无死锁,有环路只怕有死锁,有环且资源类只蕴涵一个实例必有死锁
  5. 资源分配图简化:找唯有分红边的资源,去掉边分配给急需的进度,自身变成孤点;重复上述手续,若最终所有都以孤点则无死锁,否则有死锁
  6. 化解死锁:鸵鸟算法(不考虑死锁)、死锁预防(静态分配)、死锁幸免(动态评估)、死锁检测和平化解除
  7. 死锁预防:破坏死锁须要条件;独占转为共享资源,三遍性申请和分红、主动释放部分分配,操作系统辅助抢占,资源逐步分配法(资源按热度编号,进度按资源号增序请求)
  8. 死锁幸免:对进度发生的各种能满足的资源申请开展动态检查,依据分配后系统是不是为不安全状态(死锁)决定是或不是分配
  9. 天水序列:进程系列中肆意进程,它还索要的资源不超过近日系统剩余资源与它前边的富有进度占有资源的和;此时系统为安全意况,一定无死锁,若不设有任何安全体系则为不安全状态,一定导致死锁
  10. 银行家算法:五类数组available, max[i], allocation[i], need[i],
    request[i];当进程i提出request[i]时,若不超出available则将allocation[i]加request[i]、available和need[i]减request[i],此时判定新情景是还是不是安全,安全则分配否则等待
  11. 死锁检测:允许死锁发生,在资源不足、利用率降低时或周期性检测种类开展判断是还是不是真正有死锁暴发;死锁后去掉死锁并以最小的代价复苏系统运作,可由此打消死锁进度组、回退再开行、按某种原则逐一撤废进程或剥夺资源
  12. 文学家就餐:同步互斥难点,七个翻译家常常行为是考虑,两两间放一只筷子,饥饿时要从左右取三只筷子才可用餐,都先拿左边筷蛇时出现死锁;消除措施包涵最多允许七个教育家、利用管程三遍性拿三只筷子、设置史学家的二种状态结合检测和PV操作、逐个思想家按筷子增序拿、由银行家算法将最终的筷子分配给已拿到一只的人

2.
操作系统知道用户的哀求之后,就会依据用户提供的文书名到磁盘上找到这几个程序的连带新闻,找到消息之后,会去反省那几个顺序是或不是一个可执行文件,若是是可执行文件,操作系统会依据程序首部消息来确定代码和数目在可执行文件中的地点并计算出相应的磁盘块地址。

2.
操作系统知道用户的伏乞之后,就会基于用户提供的文件名到磁盘上找到这一个顺序的连锁消息,找到新闻之后,会去检查那一个程序是或不是一个可执行文件,要是是可执行文件,操作系统会基于程序首部音讯来规定代码和数码在可执行文件中的地点并盘算出相应的磁盘块地址。

文件系统是指操作系统中联合管理新闻资源的一种软件,管理文件的储存、检索、更新,提供安全可相信的共享和掩护手段,并且有利于用户使用。

文件系统是指操作系统中联合保管新闻资源的一种软件,管理文件的储存、检索、更新,提供安全可依赖的共享和掩护手段,并且有利于用户使用。

文本按性质和用途分类:普通文书,目录文件,特殊文件(设备文件),管道文件,套接字。

文本按性质和用途分类:普通文书,目录文件,特殊文件(设备文件),管道文件,套接字。

文件的存储介质:磁盘(包蕴SSD),磁带,光盘,U盘……

文本的存储介质:磁盘(包罗SSD),磁带,光盘,U盘……

物理块是音信囤积、传输、分配的独自单位。存储设备划分为大小约等于的物理块,统一号码。

物理块是音讯囤积、传输、分配的独门单位。存储设备划分为大小相等的物理块,统一号码。

两次访问磁盘的哀告:

一回访问磁盘的伸手:

  • 寻道:磁头移动定位到指定磁道。
  • 旋转延迟:等待指定扇区从磁头下旋转经过。
  • 数量传输:数据在磁盘与内存之间的实在传输。
  • 寻道:磁头移动定位到指定磁道。
  • 旋转延迟:等待指定扇区从磁头下旋转经过。
  • 数量传输:数据在磁盘与内存之间的实际上传输。

SSD没有寻道和旋转延迟的时日消耗,所以速度快。

SSD没有寻道和旋转延迟的时光用度,所以速度快。

文本决定块:为管理文件而设置的数据结构,保存管理文件所需的具备关于消息。

文件决定块:为管理文件而设置的数据结构,保存管理文件所需的装有关于新闻。

常用属性:文件名,文件号,文件大小,文件地方,成立时间,最后修改时间,最终访问时间,爱惜,口令,创制者,当前拥有者,文件类型,共享计数,各个标志。

常用属性:文件名,文件号,文件大小,文件地点,创立时间,最后修改时间,最终访问时间,爱惜,口令,创制者,当前拥有者,文件类型,共享计数,各样标志。

文件目录:统一管理每一个文件的元数据,以支撑文件名到文件物理地址的更换。将兼具文件的军事管制消息公司在协同,即构成文件目录。

文件目录:统一管理各种文件的元数据,以帮忙文件名到文件物理地址的转移。将具备文件的治本消息公司在一块,即构成文件目录。

目录文件:将文件目录以文件的格局存放在磁盘上。

目录文件:将文件目录以文件的款型存放在磁盘上。

目录项:构成文件目录的核心单元,目录项可以是FCB,目录是文件决定块的平稳聚集。

目录项:构成文件目录的骨干单元,目录项可以是FCB,目录是文本决定块的有序聚集。

文本的大体结构:文件在存储介质上的寄放形式。

文件的大体构造:文件在存储介质上的存放格局。

大体构造:

物理结构:

1.
一连协会:文件的音讯寄存在多少总是的物理块中。

1.
接二连三协会:文件的音讯寄存在若干接连的物理块中。

   
FCB中保留文件块的先导块号和长度。

   
FCB中保留文件块的开始块号和长短。

   
优点:辅助随机存取和顺序存取,所需的寻道时间和寻道次数最少,可以而且读入五个块,检索一个块很简单。

   
优点:援救随机存取和种种存取,所需的寻道时间和寻道次数最少,可以同时读入多少个块,检索一个块很简单。

   
缺点:文件无法动态增加,不便民文件插入和删除,有表面碎片(紧缩技术)

   
缺点:文件不大概动态拉长,不便民文件插入和删除,有外部碎片(紧缩技术)

2.
链接结构:一个文书的新闻寄存在多少不总是的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。

2.
链接结构:一个文书的新闻寄存在若干不一而再的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。

    FCB只必要保留开端块号

    FCB只必要保留起初块号

   
优点:升高了磁盘空间利用率,有利于文件的插入和删除,有利于文件动态扩展。

   
优点:进步了磁盘空间利用率,有利于文件的插入和删除,有利于文件动态扩大。

   
缺点:存取速度慢,不适于随机存取,可相信性难点(如指针出错),更加多的寻道次数和寻道时间,链接指针占有一定空间。

   
缺点:存取速度慢,不适应随机存取,可信性难题(如指针出错),更加多的寻道次数和寻道时间,链接指针占有一定空间。

可以对链接结构举行变形:文件分配表(FAT),早期windows和U盘使用的结构。

能够对链接结构举行变形:文件分配表(FAT),早期windows和U盘使用的结构。

FAT存放了颇具的链接指针,各种物理块对应FAT的一条龙。

FAT存放了具有的链接指针,各个物理块对应FAT的一条龙。

澳门金沙国际 21

澳门金沙国际 22

0表示没事物理块,-1象征文件最终一块。

0意味着没事物理块,-1意味着文件最终一块。

文件的先河块号保存在文书的FCB中。

文本的开端块号保存在文书的FCB中。

3.
索引结构:一个文件的音信寄存在多少不总是物理块中,系统为种种文件建立一个专用数据结构——索引表,并将那么些物理块的块号存放在索引表中。

3.
索引结构:一个文书的新闻寄存在多少不总是物理块中,系统为各样文件建立一个专用数据结构——索引表,并将那一个物理块的块号存放在索引表中。

索引表就是磁盘块地址数组,其中第i个条款指向文件的第i块。

索引表就是磁盘块地址数组,其中第i个条款指向文件的第i块。

FCB中用一个字段保存索引表的职位。

FCB中用一个字段保存索引表的岗位。

澳门金沙国际 23

澳门金沙国际 24

目录结构优点:保持了链接结构的优点,化解了链接结构的症结,既能顺序存取,又能随机存取,满意了文本动态增进,插入删除的需求,能丰盛利用磁盘。

目录结构优点:保持了链接结构的独到之处,化解了链接结构的缺点,既能顺序存取,又能随机存取,满足了文本动态增加,插入删除的须求,能丰裕利用磁盘。

症结:较多的寻道时间和寻道次数,索引表本身带来了系统开发。

症结:较多的寻道时间和寻道次数,索引表本身带来了系统开发。

索引表有可能很大,需求多个物理块保存,就有一种类索引和概括索引。

索引表有或者很大,必要两个物理块保存,就有数以万计索引和概括索引。

多级索引:

多级索引:

澳门金沙国际 25

澳门金沙国际 26

UNIX三级索引结构:

UNIX三级索引结构:

澳门金沙国际 27

澳门金沙国际 28

访问一个文件:文件名->文件目录->FCB->磁盘

访问一个文件:文件名->文件目录->FCB->磁盘

坚实文件系统质量:

拉长文件系统质量:

磁盘调度:当有七个访盘请求等待时,选择一定的方针,对这么些请求的劳务顺序调整安顿。下落平均磁盘服务时间,公平,高效。

磁盘调度:当有两个访盘请求等待时,选拔一定的策略,对那个请求的劳动顺序调整安排。下降平均磁盘服务时间,公平,高效。

磁盘调度算法:

磁盘调度算法:

  1. 先来先服务(FCFS),按访问请求到达的先后顺序服务。简单,公平,不过功效不高,相临一回呼吁大概会导致最内到最外柱面寻道,使磁头反复移动,增加了劳务时间,对机械不利。
  2. 最短寻道时间先行,优先挑选距当前磁头方今的拜访请求举办服务,首要考虑寻道优先。革新了磁盘平均服务时间,不过造成某些访问请求长时间等待得不到劳动。
  3. 扫描算法(SCAN),当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个倾向移动,在活动进程中对境遇的拜访请求举办服务,然后判断该方向上是或不是还有访问请求,若是有则持续
  1. 先来先服务(FCFS),按访问请求到达的先后顺序服务。简单,公平,不过功能不高,相临三次呼吁只怕会招致最内到最外柱面寻道,使磁头反复移动,增添了服务时间,对机械不利。
  2. 最短寻道时间先行,优先挑选距当前磁头近日的拜访请求举办服务,首要考虑寻道优先。改正了磁盘平均服务时间,不过造成某些访问请求长时间等待得不到劳动。
  3. 举目四望算法(SCAN),当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个主旋律移动,在运动进程中对碰到的拜会请求进行服务,然后判断该方向上是不是还有访问请求,如若有则一而再

澳门金沙国际 29

澳门金沙国际 30

  1. 单向扫描调度算法(C-SCAN),总是从0号柱面开端向里扫描,移动到达最后一个柱面后,立时带来读写磁头飞快回到到0号柱面。减少了新请求的最大延迟。
  2. N-step-SCAN策略,把磁盘请求队列分成长度为N的子队列,每五次用SCAN处理一个子队列,战胜“磁头臂的粘性”。
  3. FSCAN,使用多个子队列,扫描开首时,所有请求都在一个行列中,而另一个队列为空。扫描进度中,所有新到的呼吁都保留在另一个种类中,对新请求的劳动延迟各处理完所有老请求之后。
  4. 旋转调度算法,根据延迟时间来控制举办顺序的调度。二种景况:1.
    多少等候访问者请求访问同一磁头上的不比扇区,2. 几何守候访问者请求访问分化磁头上的不等编号的扇区,3. 多少等候访问者请求访问分歧磁头上独具同样的扇区。
  1. 单向扫描调度算法(C-SCAN),总是从0号柱面最先向里扫描,移动到达最后一个柱面后,立时带来读写磁头飞快回到到0号柱面。收缩了新请求的最大延迟。
  2. N-step-SCAN策略,把磁盘请求队列分成长度为N的子队列,每两遍用SCAN处理一个子队列,击败“磁头臂的粘性”。
  3. FSCAN,使用八个子队列,扫描开端时,所有请求都在一个队列中,而另一个系列为空。扫描进度中,所有新到的呼吁都保存在另一个行列中,对新请求的服务延迟到拍卖完所有老请求之后。
  4. 旋转调度算法,按照延迟时间来支配举办顺序的调度。三种情状:1.
    多少等候访问者请求访问同一磁头上的不比扇区,2. 多少等候访问者请求访问差距磁头上的不等编号的扇区,3. 几何守候访问者请求访问差别磁头上所有同等的扇区。

澳门金沙国际 31

澳门金沙国际 32

3.
为了举办那一个helloworld程序,操作系统会制造一个新的进度,并将该程序的可执行文件格式映射到该进度协会,表示由该进度来执行那么些顺序。

3.
为了推行那些helloworld程序,操作系统会创建一个新的经过,并将该程序的可执行文件格式映射到该进度协会,表示由该进度来实施这几个程序。

进程是有所独自功用的程序关于某个数据集合上的几回运行活动,是系统开展资源分配和调度的独自单位。

进度是所有独自功效的程序关于某个数据集合上的五回运行活动,是系统开展资源分配和调度的单独单位。

PCB,进度控制块,操作系统用于管理控制进度的一个特意数据结构,进度与PCB是逐一对应的。

PCB,进度控制块,操作系统用于管理控制进度的一个专程数据结构,进度与PCB是逐一对应的。

PCB中有:

PCB中有:

进度描述信息:进度标识符(唯一),进度名,用户标识符,进度组关系

进度描述音讯:进度标识符(唯一),进度名,用户标识符,进度组关系

经过控制音讯:优先级,代码执行入口地址,程序的磁盘地址,运行总括新闻(执行时间,页面调度),进度间协同和通讯,进度的体系指针,进度的消息队列指针。

进度控制音讯:优先级,代码执行入口地址,程序的磁盘地址,运行总括讯息(执行时间,页面调度),进度间一块和通信,进度的行列指针,进度的信息队列指针。

所怀有的资源和运用情形:虚拟地址空间的现象,打开文件列表

所所有的资源和使用意况:虚拟地址空间的情景,打开文件列表

CPU现场音信:寄存器值(通用寄存器,程序计数器PC,进度意况字PSW,栈指针),指向该进度页表的指针。

CPU现场音信:寄存器值(通用寄存器,程序计数器PC,进度景况字PSW,栈指针),指向该进程页表的指针。

进程表:所有PCB的集合。

进程表:所有PCB的集合。

进度情形:

经过情形:

澳门金沙国际 33

澳门金沙国际 34

操作系统为每一类经过(就绪、等待……)建立一个或两个系列,队列成分为PCB,伴随进度意况改变,其PCB从一个队列进入另一个队列。

操作系统为每一类经过(就绪、等待……)建立一个或两个系列,队列成分为PCB,伴随进度景况改变,其PCB从一个体系进入另一个种类。

澳门金沙国际 35

澳门金沙国际 36

进度的创办:

经过的创制:

  • 给新进度分配一个唯一标识以及PCB
  • 为经过分配地址空间
  • 初阶化PCB(设置暗中同意值,如气象为NEW……)
  • 设置相应的种类指针(如把新进程加到就绪队列链表中)
  • 给新历程分配一个唯一标识以及PCB
  • 为经过分配地址空间
  • 起初化PCB(设置暗许值,如情形为NEW……)
  • 安装相应的体系指针(如把新进度加到就绪队列链表中)

操作系统为逐个进程都分配了一个地点空间。

操作系统为种种进度都分配了一个地点空间。

出于个性,费用等设想,引入了线程的概念。

鉴于质量,开支等考虑,引入了线程的定义。

线程的用度小,创造新线程用度的时日少,线程间切换费用时间少,线程之间交互通讯无须调用内核(同一进度的线程共享内存和文书)

线程的费用小,创制新线程开销的年月少,线程间切换费用时间少,线程之间相互通讯无须调用内核(同一进度的线程共享内存和文书)

线程是经过中的一个运转实体,是CPU的调度单位。

线程是进度中的一个运作实体,是CPU的调度单位。

4.
操作系统将控制权交给调度程序,如若调度程序选中了helloworld程序,由操作系统为该程序设置CPU上下文环境,并跳到程序开端处,准备执行该程序。那么下一个限令周期就是履行helloworld程序了。

4.
操作系统将控制权交给调度程序,假设调度程序选中了helloworld程序,由操作系统为该程序设置CPU上下文环境,并跳到程序开首处,准备举行该程序。那么下一个指令周期就是实施helloworld程序了。

CPU调度:按自然的调度算法从稳妥队列中甄选一个历程,把CPU的使用权交给被选取的历程。倘诺没有妥善进度,系统会计划一个空闲进度。

CPU调度:按一定的调度算法从稳妥队列中接纳一个历程,把CPU的使用权交给被增选的进程。如若没有妥善进度,系统会安插一个悠闲进度。

CPU调度必要缓解多个难点:调度算法、调度时机、调度进度。

CPU调度须求缓解八个难题:调度算法、调度时机、调度进度。

调度算法:

调度算法:

占有CPU的方式:

占有CPU的方式:

抢占式和非抢占式

抢占式和非抢占式

光阴片轮转

时光片轮转

  • 先来先服务(FCFS)
  • 最短作业优先(SJF)
  • 最短剩余时间优先(S宝马7系TN)
  • 高高的响应比优先(H中华VPAJERON)
  • 名目繁多反馈队列(Feedback)
  • 最高优先级调度
  • 滚动调度(Round
    罗布in),为短职分革新平均响应时间,每一种进程分配一个时间片
  • 先来先服务(FCFS)
  • 最短作业优先(SJF)
  • 最短剩余时间优先(STiguanTN)
  • 参天响应比优先(HOdysseyLX570N)
  • 铺天盖地反馈队列(Feedback)
  • 摩天优先级调度
  • 滚动调度(Round
    罗布in),为短职分改进平均响应时间,每一种进度分配一个时间片

澳门金沙国际 37

澳门金沙国际 38

出色系统的调度算法:

独立系统的调度算法:

澳门金沙国际 39

澳门金沙国际 40

5.
当执行helloworld程序的率先条指令时,会生出缺页非常(只有将代码和数据读入内存才能履行顺序,执行第一条指令时,还尚无将代码数据读入内存,那么那一个时候,硬件机制会捕获出缺页至极,并且把控制权交给操作系统)

5.
当执行helloworld程序的率先条指令时,会发出缺页十分(唯有将代码和多少读入内存才能实施顺序,执行第一条指令时,还一向不将代码数据读入内存,那么那个时候,硬件机制会捕获出缺页至极,并且把控制权交给操作系统)

6.
操作系统管理了微机体系中的内存,(假使是页式管理)操作系统会分配一页物理内存,依据前面总括出的次第的磁盘块地址,将helloworld程序从磁盘读入内存,然后继续执行helloworld程序。有的时候程序很大,一页内存不够,那么会一再生出缺页极度,然后从磁盘中读入程序到内存

6.
操作系统管理了电脑连串中的内存,(假使是页式管理)操作系统会分配一页物理内存,依照前边总括出的次序的磁盘块地址,将helloworld程序从磁盘读入内存,然后继续执行helloworld程序。有的时候程序很大,一页内存不够,那么会反复发出缺页至极,然后从磁盘中读入程序到内存

咱俩早就了解,每一个进程都有谈得来的历程地址空间,并且经过要装入内存才能运作。那么哪些将经过地址空间装入内存就是一个务必化解的难题。

咱俩早就清楚,每种进程都有协调的进度地址空间,并且经过要装入内存才能运作。那么如何将经过地址空间装入内存就是一个不可以不消除的题材。

经过上边的讲述,大家可以知晓,进度中的过程地址空间的地方,并不是终极的情理地址。

透过地点的描述,大家得以清楚,进度中的进度地址空间的地址,并不是终极的大体地址。

据此须求地点重一直(地址转换,从进程地址转换成物理地址)来试验进程的加载。

所以需求地点重一贯(地址转换,从进程地址转换成物理地址)来实验进度的加载。

大家把经过地址称为逻辑地址/相对地址/虚拟地址,而内存存储单元中的地址称为物理地址/相对地址/实地址,很明确,唯有物理地址可以直接寻址。

咱俩把经过地址称为逻辑地址/相对地址/虚拟地址,而内存存储单元中的地址称为物理地址/相对地址/实地址,很显著,唯有物理地址可以直接寻址。

地址重定位分为静态重一直和动态重一贯

地址重定位分为静态重向来和动态重向来

静态重向来:当用户程序加载到内存时,两回性完成逻辑地址到大体地址的更换。可是要求这一个顺序在内存中的地点不可以更改。

静态重一向:当用户程序加载到内存时,一遍性完结逻辑地址到大体地址的转换。然则要求那几个顺序在内存中的地点不只怕更改。

动态重一贯:在先后加载到内存中,不改变地址,依然是逻辑地址。在程序执行进度当中再开展地址转换,即逐条指令执行到位更换。由MMU(内存管理单元)来加快重一贯。

动态重平昔:在先后加载到内存中,不改变地址,如故是逻辑地址。在程序执行进程当中再开展地址转换,即逐条指令执行到位更换。由MMU(内存管理单元)来增速重一向。

今昔曾经足以将先后加载到内存了,那么该怎样火速地分配内存给某个进度呢?

于今曾经得以将顺序加载到内存了,那么该怎么高效地分配内存给某个进度呢?

内存分配算法:

内存分配算法:

  • 首次适配(第二个满意)
  • 下次适配(从上次找到的空闲区往下找)
  • 最佳适配(查找整个空闲区表,找到满意须求的纤维空闲区)
  • 最差适配(总是分配满意进程须求的最大空闲区)
  • 第一次适配(第三个满意)
  • 下次适配(从上次找到的空闲区往下找)
  • 极品适配(查找整个空闲区表,找到满意要求的细微空闲区)
  • 最差适配(总是分配满意进度须求的最大空闲区)

当内存归还后,则面临着回收问题,将左右空闲空间合并。

当内存归还后,则面临着回收难点,将左右空闲空间合并。

一种经典的内存分配方案:伙伴体系

一种经典的内存分配方案:伙伴连串

将内存按2的幂举行分割,组成若干的悠闲块链表,查找该链表找到能满意进度必要的一流匹配块。

将内存按2的幂举行私分,组成若干的闲暇块链表,查找该链表找到能满足进度须求的极品匹配块。

澳门金沙国际 41

澳门金沙国际 42

主干内存管理方案

骨干内存管理方案

澳门金沙国际 43

澳门金沙国际 44

经过进入内存的总是区域:

进度进入内存的连接区域:

单纯一连区,内存利用率低

纯净延续区,内存利用率低

定点分区,浪费空间

定位分区,浪费空间

可变分区,剩余部分导致大气外碎片,碎片化解方案,紧缩技术(移动程序,将有着小的空闲区合并成较大空闲区)

可变分区,剩余部分导致大批量外碎片,碎片消除方案,紧缩技术(移动程序,将具有小的空闲区合并成较大空闲区)

进度进入内存不一而再区域:

经过进入内存不再而三区域:

页式存储管理:

页式存储管理:

进度地址空间被分开为大小相等的一对,称为页恐怕页面。内存地址空间按同样大小分为大小相等的部分,称为页框。

进度地址空间被划分为大小相等的片段,称为页大概页面。内存地址空间按同样大小分为大小相等的一对,称为页框。

内存分配政策:以页为单位展开分红,并按进度须求的页数来分配,逻辑上附近的页,物理上不自然相邻。

内存分配政策:以页为单位展开分红,并按进度必要的页数来分配,逻辑上附近的页,物理上不必然相邻。

澳门金沙国际 45

澳门金沙国际 46

 

 

澳门金沙国际 47

澳门金沙国际 48

页表记录了从逻辑页号到页框号的照射关系。

页表记录了从逻辑页号到页框号的映照关系。

逐个进度一个页表,存放在内存。页表的起初地址在某个寄存器中。

每个进程一个页表,存放在内存。页表的苗子地址在某个寄存器中。

页式存储管理中的地址转换进程:CPU取到逻辑地址,自动划分为页号和页省里址,用页号查页表,得到页框号,再与页各州址拼接成物理地址。

页式存储管理中的地址转换进程:CPU取到逻辑地址,自动划分为页号和页内地址,用页号查页表,获得页框号,再与页各省址拼接成物理地址。

段式存储管理:

段式存储管理:

用户进度地址按程序自个儿逻辑关系划分为多少个程序段,每一种程序段都有一个段名。

用户进度地址按程序本人逻辑关系划分为多少个程序段,每一个程序段都有一个段名。

内存空间被动态划分为不等长区域。

内存空间被动态划分为不等长区域。

内存分配政策:以段为单位开展分配,每段在内存中据为己有三番五次空间,但各段之间能够不相邻。

内存分配政策:以段为单位进行分红,每段在内存中占据一而再空间,但各段之间可以不相邻。

澳门金沙国际 49

澳门金沙国际 50

与页式差其余是,段号和段各省址不可以自行划分,必要出示给出。

与页式不一样的是,段号和段内地址不可以活动划分,须要显示给出。

与页式相同,使用段表来记录关联关系。

与页式相同,使用段表来记录关联关系。

澳门金沙国际 51

澳门金沙国际 52

地址转换进度与页表也诚如:CPU取到逻辑地址后,用段号查段表,得到该段在内存中的早先地址,与段内偏移地址拼接统计出物理地址。

地址转换进程与页表也诚如:CPU取到逻辑地址后,用段号查段表,获得该段在内存中的开端地址,与段内偏移地址拼接总计出物理地址。

段页式存储管理:

段页式存储管理:

用户进度按段划分,内存划分同页式存储管理

用户进度按段划分,内存划分同页式存储管理

澳门金沙国际 53

澳门金沙国际 54

段页式存储管理需求段表和页表

段页式存储管理需求段表和页表

段表记录每一段的页表初步地址和页表长度。

段表记录每一段的页表起首地址和页表长度。

页表与页式存储管理相同

页表与页式存储管理相同

一个进程被分成若干段,须要一个段表,而每一段依照页式存储管理分配,又对应一张页表,所以一个历程对应一个段表和四个页表。

一个经过被分为若干段,须求一个段表,而每一段根据页式存储管理分配,又对应一张页表,所以一个进度对应一个段表和多少个页表。

总结:

总结:

澳门金沙国际 55

澳门金沙国际 56

那就是说当内存不足时该怎么保管吗?

那就是说当内存不足时该怎么保管吗?

内存“扩容”技术:内存紧缩(可变分区),覆盖技术,交流技术(将或多或少进程暂时移到外存),虚拟存储技术。

内存“扩容”技术:内存紧缩(可变分区),覆盖技术,交流技术(将一些进度暂时移到外存),虚拟存储技术。

虚拟存储技术:当进度运行时,先将其部分装入内存,另一片段留在磁盘,当要执行的下令只怕访问的数量不在内存中时,由操作系统自动达成将它们从磁盘调入内存的干活。

虚拟存储技术:当进程运行时,先将其部分装入内存,另一有的留在磁盘,当要实践的下令大概访问的数目不在内存中时,由操作系统自动完结将它们从磁盘调入内存的做事。

把内存和磁盘结合起来,得到更大的“内存”,就是虚存。

把内存和磁盘结合起来,得到更大的“内存”,就是虚存。

虚拟存储技术和页式存储管理相结合,就时有暴发了虚拟页式存储管理。

虚拟存储技术和页式存储管理相结合,就发出了虚拟页式存储管理。

虚构页式存储管理基本思想:

编造页式存储管理基本思维:

进程发轫履行此前,不是装入全体页面,而是装入一个要么零个页面,之后据悉进程必要,动态装入其余页面,当内存已满,而又须求装入新的页面,则依据某种算法置换内存中的某个页面,以便装入新的页面。

进度始起施行此前,不是装入全体页面,而是装入一个要么零个页面,之后据悉进度需求,动态装入其余页面,当内存已满,而又须求装入新的页面,则基于某种算法置换内存中的某部页面,以便装入新的页面。

鉴于页表数量太大,引入了三种页表。

是因为页表数量太大,引入了一序列页表。

依据古板的地方转换格局:虚拟地址->查页表->页框号->物理地址,那样各样进程都要一个页表。页表占据了重重上空。

坚守古板的地方转换格局:虚拟地址->查页表->页框号->物理地址,那样各类进程都要一个页表。页表占据了成百上千上空。

化解这些题材:从物理地址出发,整个系统就创建一张页表(因为物理地址大小固定),页表项纪录进度i的某虚拟地址与页框号的照射关系。

涸泽而渔这几个题材:从情理地址出发,整个系统就成立一张页表(因为物理地址大小固定),页表项记录进度i的某虚拟地址与页框号的照射关系。

只是仍旧有一个难题存在,由于一连串页表的留存,每回访问页表都要去拜谒内存,那么必要反复拜访内存,由于CPU的授命处理速度与内存指令的访问速度差别大,CPU的进程得不到充足利用。

不过依然有一个标题存在,由于一种类页表的存在,每一次访问页表都要去拜谒内存,那么必要反复做客内存,由于CPU的一声令下处理速度与内存指令的访问速度差距大,CPU的快慢得不到充裕利用。

为了缓解这么些难题,由于程序访问局地性原理,从而引入了快表(TLB),用来加快地点转换的快慢。

为精通决那一个难题,由于程序访问局地性原理,从而引入了快表(TLB),用来加快地方转换的快慢。

快表由cache组成,访问速度快。

快表由cache组成,访问速度快。

引入快表后的地址转换进程:

引入快表后的地方转换进程:

虚页号->查快表(并行比较)

虚页号->查快表(并行相比较)

若是命中,则找到页表项

假如命中,则找到页表项

如若没有打中,用虚页号查页表得到页表项

若是没有命中,用虚页号查页表拿到页表项

当得到页表项后看到有效位,倘诺可行位是1,表达该页已经在内存中,则运行

当拿到页表项后看到有效位,如若可行位是1,表明该页已经在内存中,则运行

只假设0,则抛出缺页相当。

如如果0,则抛出缺页格外。

当缺页时,操作系统就要将页面调入内存,要是内存满了,必须求将一些页面暂时调出到外存中。

当缺页时,操作系统就要将页面调入内存,如果内存满了,必必要将部分页面暂时调出到外存中。

那么置换的国策有怎么样吧?

那么置换的策略有啥呢?

  1. 超级页面置换算法(OPT)(置换之后依旧最远的将来才会用到的页面)
  1. 最佳页面置换算法(OPT)(置换之后依旧最远的前日才会用到的页面)

  1. 先进先出算法(FIFO)
  2. 第二次机遇算法(SC翼虎)依照FIFO拔取某一页面,检查其访问位,假设访问位为0,则置换,假诺为1,表达如今被访问过,则不置换,并将访问位设为0
  3. 钟表算法(CLOCK)
  4. 近期未采用算法(NRU),选择最近一段时间未使用的一页。
  5. 近期至少使用算法(LRU),选择最终三回访问时间相差当前时刻最长的一页并互换,质量最相仿OPT
  6. 最不常常应用算法(NFU),选取访问次数最少的交流。
  1. 先进先出算法(FIFO)
  2. 第二次机会算法(SC福睿斯)按照FIFO拔取某一页面,检查其访问位,如若访问位为0,则置换,若是为1,表达近来被访问过,则不置换,并将造访位设为0
  3. 钟表算法(CLOCK)
  4. 前不久未使用算法(NRU),选取近日一段时间未利用的一页。
  5. 近些年最少使用算法(LRU),接纳最后五遍访问时间相差当前岁月最长的一页并沟通,品质最相近OPT
  6. 最不常常利用算法(NFU),拔取访问次数最少的互换。

7.
helloworld程序执行puts函数(系统调用),在屏幕上写一字符串。

7.
helloworld程序执行puts函数(系统调用),在屏幕上写一字符串。

8.
由于puts函数是系统调用,控制权又交给操作系统上。操作系统找到要将字符串送往的的来得设备,平时设备是由一个历程控制的,所以,操作系统将要写的字符串送给该进度。

8.
出于puts函数是系统调用,控制权又提交操作系统上。操作系统找到要将字符串送往的的显得设备,平日设备是由一个经过控制的,所以,操作系统将要写的字符串送给该进程。

CPU与I/O:

CPU与I/O:

缩减或缓解速度差别->缓冲技术

削减或化解速度差距->缓冲技术

使CPU不等待I/O->异步I/O

使CPU不等待I/O->异步I/O

让CPU摆脱I/O操作->DMA,通道

让CPU摆脱I/O操作->DMA,通道

9.
说了算设备的进度告知设备的窗口系统它要显得字符串,窗口系统确定那是一个合法的操作,然后将字符串转换成像素,将像素写入设备的仓储影象区。

9.
操纵配备的经过告知设备的窗口系统它要浮现字符串,窗口系统确定那是一个法定的操作,然后将字符串转换成像素,将像素写入设备的仓储映像区。

10.
视频硬件将像素转换成显示屏可以接受的一组决定/数据信号。

10.
视频硬件将像素转换成屏幕可以承受的一组决定/数据信号。

11.
显示屏解释信号,激发液晶屏。

11.
屏幕解释信号,激发液晶屏。

12.
在屏幕上收看hello world。

12.
在屏幕上来看hello world。

 

 

从地点的历程中,我们能窥见,CPU上时而运行用户程序,时而运行操作系统程序。运行操作系统程序,我们称CPU处在内核态,运行用户程序,我们称CPU处在用户态。

从地方的长河中,我们能觉察,CPU上时而运行用户程序,时而运行操作系统程序。运行操作系统程序,我们称CPU处在内核态,运行用户程序,大家称CPU处在用户态。

而这三种CPU状态之间的转移:

而那二种CPU状态之间的变换:

从用户态到内核态,只好通过暂停/卓殊/陷入进制(陷入指令是一条非常的一声令下,提必要用户程序的接口,用于调用操作系统的效应/服务,例如int,trap,syscall,sysenter/sysexit)

从用户态到内核态,只可以通过暂停/极度/陷入进制(陷入指令是一条分外的下令,提须要用户程序的接口,用于调用操作系统的功效/服务,例如int,trap,syscall,sysenter/sysexit)

而内核态到用户态,设置程序状态字PSW.

而内核态到用户态,设置程序状态字PSW.

暂停/相当机制,是操作系统的驱动力,大家可以说,操作系统是刹车驱动的。

暂停/分外机制,是操作系统的驱动力,大家得以说,操作系统是搁浅驱动的。

停顿/十分的概念:CPU对系统发生的某部事件作出的反响。

停顿/相当的定义:CPU对系统发生的某个事件作出的反馈。

CPU暂停正在履行的程序,保留现场后自行转去执行相应事件的处理程序。处理完结后赶回断点,继续执行刚才被打断的先后。

CPU暂停正在推行的程序,保留现场后自行转去执行相应事件的处理程序。处理落成后回去断点,继续执行刚才被打断的先后。

停顿和卓殊的分歧在于,中断是由外部引发的,而不行则是该程序自身暴发的。

暂停和那些的差别在于,中断是由外部引发的,而极度则是该程序本身爆发的。

CPU几时去响应中断?CPU会在每一条指令执行最后,去扫描中断寄存器,查看是还是不是有抛锚。若有抛锚,中断硬件将该中断触发器内容按规定编码送入PSW的应和位,称为中断码,通过查中断向量表引出中断处理程序。

CPU几时去响应中断?CPU会在每一条指令执行最终,去扫描中断寄存器,查看是不是有暂停。若有暂停,中断硬件将该中断触发器内容按规定编码送入PSW的呼应位,称为中断码,通过查中断向量表引出中断处理程序。

除却,当然还有进度互斥同步难点。

除开,当然还有进程互斥同步难题。

进度互斥:由于各进度必要采用共享资源(变量、文件等),而那一个资源要求排他性使用,各进度间竞争使用这个资源。这一关联称为进度互斥。

经过互斥:由于各进程要求利用共享资源(变量、文件等),而这几个资源需求排他性使用,各进度间竞争使用这个资源。这一关乎称为进度互斥。

进度互斥软件化解方案:

进度互斥软件消除方案:

Dekker算法:

Dekker算法:

P进程:

P进程:

pturn =
true;
while(qturn)
{
    if(turn == 2)
    {
       pturn = false;
       while(turn == 2);
       pturn = true;
    }
}

pturn =
true;
while(qturn)
{
    if(turn == 2)
    {
       pturn = false;
       while(turn == 2);
       pturn = true;
    }
}

临界区
turn = 2;
pturn = false;

临界区
turn = 2;
pturn = false;

Q进程:

Q进程:

qturn =
true;
while(pturn)
{
    if(turn == 1)
    {
       qturn = false;
       while(turn == 1);
       qturn = true;
    }
}

qturn =
true;
while(pturn)
{
    if(turn == 1)
    {
       qturn = false;
       while(turn == 1);
       qturn = true;
    }
}

临界区
turn = 2;
qturn = false;

临界区
turn = 2;
qturn = false;

pturn和qturn表示对应的进程想进临界区,即便都想进临界区,则透过turn来判定本身是或不是要让出CPU。从而完成互斥。

pturn和qturn表示对应的进程想进临界区,如若都想进临界区,则通过turn来判定自个儿是还是不是要让出CPU。从而已毕互斥。

Peterson算法:

Peterson算法:

克服了Dekker算法强制轮流的症结。

克制了Dekker算法强制轮流的败笔。

i表示经过号

i表示经过号

进程i:
……
enter_region(i);
临界区
leave_region(i);
……

进程i:
……
enter_region(i);
临界区
leave_region(i);
……

int turn;//轮到谁
int
interested[N];//兴趣数组,初阶都为false,表示某个进度想进临界区
void
enter_region(int process)//要是那里三个进度的进度号是0和1
{
     int other;//表示另一个经过的进程号
     other = 1 – process;
     interested[process] = true;
     turn = process;
     while(turn == process &&
interested[other] == true);
}
void
leave_region(int process)
{
   interseted[process] = false;
}

int turn;//轮到谁
int
interested[N];//兴趣数组,先河都为false,表示某个进程想进临界区
void
enter_region(int process)//固然那里多少个进程的进度号是0和1
{
     int other;//表示另一个经过的进度号
     other = 1 – process;
     interested[process] = true;
     turn = process;
     while(turn == process &&
interested[other] == true);
}
void
leave_region(int process)
{
   interseted[process] = false;
}

那边的turn变量要小心一下,turn表示轮到哪个人来进入临界区,若是七个进度都想进入临界区,可以窥见trun变量会被后赋值的进度替换来先赋值的经过。

这边的turn变量要留意一下,turn表示轮到何人来进入临界区,借使七个进度都想进入临界区,可以窥见trun变量会被后赋值的历程替换来先赋值的长河。

Peterson算法希望先想进临界区的长河先进去,那么在while循环中就发生了判断,假如turn是时下经过号(表示该进度是后想进去临界区的),则直接在while循环中等待,当然还索要判定另一个进程是不是想进去临界区(interested[other]==true),假诺另一个进程不想进去临界区,就没须求等待了。

Peterson算法希望先想进临界区的经过先进去,那么在while循环中就发出了判断,若是turn是当下历程号(表示该过程是后想进入临界区的),则直接在while循环中等待,当然还亟需看清另一个经过是不是想进入临界区(interested[other]==true),要是另一个进度不想进入临界区,就没要求等待了。

Peterson算法Java实现:

Peterson算法Java实现:

public class
Peterson
implements
Runnable {

public class
Peterson
implements
Runnable {

private static
boolean[]
in = { false, false };
    private
static volatile int turn = -1;

private static
boolean[]
in = { false, false };
    private
static volatile int turn = -1;

public static
void
main(String[] args) {
        new Thread(new Peterson(0), “Thread – 0”).start();
        new Thread(new Peterson(1), “Thread – 1”).start();
    }

public static
void
main(String[] args) {
        new Thread(new Peterson(0), “Thread – 0”).start();
        new Thread(new Peterson(1), “Thread – 1”).start();
    }

private final
int
id;

private final
int
id;

public Peterson(int i) {
        id = i;
    }

public Peterson(int i) {
        id = i;
    }

private
int other()
{
        return id == 0 ? 1 : 0;
    }

private
int other()
{
        return id == 0 ? 1 : 0;
    }

@Override
    public
void run()
{
        in[id] = true;
        turn = other();
        while (in[other()] && turn ==
other()) {
            System.out.println(“[” + id + “] –
Waiting…”);
        }
        System.out.println(“[” + id + “] – Working
(“
                + ((!in[other()]) ? “other
done” : “my
turn”) +
“)”);
        in[id] = false;
    }}

@Override
    public
void run()
{
        in[id] = true;
        turn = other();
        while (in[other()] && turn ==
other()) {
            System.out.println(“[” + id + “] –
Waiting…”);
        }
        System.out.println(“[” + id + “] – Working
(“
                + ((!in[other()]) ? “other
done” : “my
turn”) +
“)”);
        in[id] = false;
    }}

进度的一路:指系统中三个进度中发出的轩然大波存在某种时序关系,要求互相合营,共同完结一项义务。

进度的联手:指系统中多少个经过中生出的风浪存在某种时序关系,须求相互同盟,共同落成一项义务。

消除措施:

消除方法:

  • 信号量
  • 管程(信号量编程易出错),Java中的synchronize
  • 经过间通讯IPC(由于信号量和管程只好传递少量音信,无法传递大批量新闻,并且管程不应用与多处理器的气象),进程通讯的骨干方法有1.消息传递
    2.共享内存 3.管道 4.套接字 5.远程进程调用
  • 信号量
  • 管程(信号量编程易出错),Java中的synchronize
  • 进程间通讯IPC(由于信号量和管程只可以传递少量音信,无法传递大批量新闻,并且管程不采用与多处理器的情况),进度通讯的基本措施有1.音信传递
    2.共享内存 3.管道 4.套接字 5.远程进程调用

自然还有死锁问题:

理所当然还有死锁难点:

暴发死锁的须求条件:

发出死锁的要求条件:

  1. 互斥使用(资源垄断):一个资源每便只好给一个进度使用。
  2. 侵夺且等待:进度在提请新的资源的同时保持对原本资源的占据。
  3. 不足抢占:资源申请者无法强行的从资源占有者手中夺取资源,资源只好由占有者自愿释放。
  4. 巡回等待:存在一个进度等待队列,形成一个进度等待环路。
  1. 互斥使用(资源垄断):一个资源每一趟只好给一个进度使用。
  2. 并吞且等待:进程在报名新的资源的还要保险对原来资源的占用。
  3. 不行抢占:资源申请者不大概强行的从资源占有者手中夺得资源,资源只能够由占有者自愿释放。
  4. 循环等待:存在一个经过等待队列,形成一个历程等待环路。

资源分配图:用有向图描述系统资源和进度的状态。

资源分配图:用有向图描述系统资源和进程的地方。

如:

如:

澳门金沙国际 57

澳门金沙国际 58

如若资源分配图中一贯不环路,则系统中向来不死锁,如若图中设有环路,能容许存在死锁。

假若资源分配图中从未环路,则系统中并未死锁,假若图中存在环路,能容许存在死锁。

澳门金沙国际 59

澳门金沙国际 60

假如每一种资源类中只含有一个资源实例,则环路是死锁存在的丰硕须要条件。

一旦各种资源类中只含有一个资源实例,则环路是死锁存在的充裕须求条件。

死锁预防:

死锁预防:

  1. 毁掉“互斥使用/资源垄断”条件:资源转换技术,把垄断资源成为共享资源,SPOOLING技术的引入。
  2. 毁掉“占有且等待”条件:1.须求三遍性申请所有资源,2.无法不自由资源才能报名
  3. 毁掉“不可抢占”条件:通过先行级不等,可以抢占。
  4. 毁掉“循环等待”条件:资源逐步分配法,进度在申请资源时必须严酷按资源编号的多如牛毛次序进行,否则操作系统不予分配。
  1. 破坏“互斥使用/资源垄断”条件:资源转移技术,把垄断资源成为共享资源,SPOOLING技术的引入。
  2. 毁掉“占有且等待”条件:1.必须三遍性申请所有资源,2.必须自由资源才能报名
  3. 毁掉“不可抢占”条件:通过先行级不等,可以抢占。
  4. 毁掉“循环等待”条件:资源逐步分配法,进度在申请资源时必须严格按资源编号的星罗棋布次序举办,否则操作系统不予分配。

死锁防止:银行家算法,安全景况自然没有死锁暴发。

死锁幸免:银行家算法,安全情状自然没有死锁爆发。

银行家算法总的来说就是,给每一种用户贷款的钱不会超越银行钱的总量,然则所有用户贷款的钱的总额是足以超越银行钱的总量的。

银行家算法总的来说就是,给各样用户贷款的钱不会超过银行钱的总量,可是所有用户贷款的钱的总和是可以超过银行钱的总量的。

死锁检测与消除:允许死锁暴发,不过操作系统会不停监视死锁是还是不是真的爆发。一旦死锁暴发,就会接纳专门的措施,以细小代价来解除死锁,复苏操作系统运行。

死锁检测与化解:允许死锁发生,不过操作系统会频频监视死锁是不是确实暴发。一旦死锁爆发,就会选拔专门的点子,以细小代价来解除死锁,苏醒操作系统运行。

让我们重新计算一下HelloWorld程序的运转。

让大家再度计算一下HelloWorld程序的周转。

当我们运行HelloWorld程序时,操作系统会基于文件名去找文件目录,然后找到了FCB,通过FCB里的情理地址找到磁盘上相应的文件。

当大家运行HelloWorld程序时,操作系统会基于文件名去找文件目录,然后找到了FCB,通过FCB里的情理地址找到磁盘上相应的文本。

那就是说FCB是什么拿到文件的大体地址的吧?那和文书的情理构造有关,文件的物理结构有一而再社团、链表结构、索引结构,分化结构中FCB保存的音信不相同。

那就是说FCB是何等获取文件的物理地址的吧?那和文书的大体构造有关,文件的大体构造有连接协会、链表结构、索引结构,不相同结构中FCB保存的音讯差距。

取得物理地址然后,从磁盘上读取文件要求经过寻道,旋转延迟,数据传输三有的。那么怎么着高效地从磁盘上读取文件呢?就足以行使区其余磁盘调度算法,譬如先来先服务,最短寻道时间优先,扫描算法,旋转调度算法等等。

获取物理地址然后,从磁盘上读取文件必要经过寻道,旋转延迟,数据传输三有的。那么什么样飞快地从磁盘上读取文件呢?就可以使用不一样的磁盘调度算法,譬如先来先服务,最短寻道时间先行,扫描算法,旋转调度算法等等。

拿到文件后,操作系统会创制一个新的进度去履行这一个程序。进度与PCB是逐一对应的,PCB中保留了经过的各项消息,系统为种种进程分配一个地方空间,那么些地址空间是虚拟地址。

收获文件后,操作系统会创立一个新的进程去履行那个程序。进度与PCB是各类对应的,PCB中保留了经过的各样音信,系统为各种进度分配一个地方空间,这几个地方空间是虚拟地址。

有了经过去运作那么些程序后,就等着CPU调度这么些历程了。CPU调度算法有先来先服务,最短作业优先,最短剩余时间优先,最高响应比优先,轮换调度等等。

有了经过去运作这一个顺序后,就等着CPU调度那几个进程了。CPU调度算法有先来先服务,最短作业优先,最短剩余时间优先,最高响应比优先,轮换调度等等。

当CPU接纳调度了那几个顺序,想要运行这么些程序的第一条指令时,会发出缺页很是,因为代码数据还从未读入内存,有的时候程序很大,一页内存不够,那么会反复发生缺页卓殊,进度必须进入内存才能被运行,须要经过地点重平昔将经过的虚拟地址转换成物理地址,差其余内存管理章程会有例外的更换形式,比如页式存储管理,段式存储管理,段页式存储管理,加了虚拟存储技术未来,还有虚拟页式存储管理,由于采纳虚拟存储技术,在内存满时,需求将一些页面暂时调到外存,置换的算法有一流页面置换算法,先进先出算法,近年来未利用算法,目前起码使用算法等等。

当CPU拔取调度了那个顺序,想要运行这么些程序的首先条指令时,会生出缺页非凡,因为代码数据还未曾读入内存,有的时候程序很大,一页内存不够,那么会一再生出缺页格外,进度必须进入内存才能被运行,须要通过地点重向来将经过的虚拟地址转换成物理地址,区其他内存管理方法会有区其他转换情势,比如页式存储管理,段式存储管理,段页式存储管理,加了虚拟存储技术将来,还有虚拟页式存储管理,由于使用虚拟存储技术,在内存满时,需求将有些页面暂时调到外存,置换的算法有最佳页面置换算法,先进先出算法,如今未接纳算法,近期至少使用算法等等。

今昔进度被加载到了内存,该怎么迅速地分配内存给那些进度呢?内存分配算法:首次匹配,下次协作,最佳匹配,最差匹配。如若那时候内存满了,则会调用刚刚说的互换算法。

今昔经过被加载到了内存,该怎么样火速地分配内存给那么些进度呢?内存分配算法:第一次匹配,下次万分,最佳匹配,最差匹配。若是那时候内存满了,则会调用刚刚说的互换算法。

那儿CPU已经打响运行了这些顺序。之后须要体现的字符串将会提交突显设备的进程。最终是一多重硬件上的拍卖,成功让屏幕突显HelloWorld。

那时CPU已经成功运行了那一个顺序。之后须求出示的字符串将会提交突显设备的经过。最终是一体系硬件上的处理,成功让显示器突显HelloWorld。

 

 

来自 <https://my.oschina.net/hosee/blog/673628?p={{currentPage+1}}>

来自 <https://my.oschina.net/hosee/blog/673628?p={{currentPage+1}}>

 

 

相关文章