标签:并行 多核 缓存 多级反馈队列调度 区分 本地 同步机制 uri 管理
这里注意,提交任务是在外存形成队列,而执行时多道指的是内存中可以有多道程序运行。
这个我们RM电控用的就是RTOS。
操作系统的基本特性是:并发、共享、虚拟、异步。
并发是指在内存中放多道作业,在很小的时间间隔内轮流执行多个作业,宏观上看起来在一段时间内执行了多道程序,微观上每个时间点只有一个程序在执行。
一个时间点有多个程序在执行。比如利用多核同时运算。
虚拟这个词说的比较玄乎,其实就说给东西重新起名字。比如硬盘上某个硬件区域我们给他起名字是C盘D盘之类的,就是虚拟。
你给一个东西起两个名字,比如一个信道起两个名字,看起来就是有两个信道,所以这就是虚拟信道。
异步指的是多个程序的步调不一致,也就是说,有的程序执行的快有的程序执行的慢,只有一个CPU,那么整体执行起来看上去是“走走停停”的样子,所以叫做异步。
操作系统的主要功能有:处理机管理、存储器管理、设备管理、文件管理、操作系统与用户之间的接口。
微内核实际上是一个压缩版本的操作系统,只具有一些基本的功能。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。
总之,就是可以提高安全性(这个很明显,把一般的操作放在操作系统外面,即使崩了也不会有大影响),操作系统也比较轻量。
进程是程序的一次执行。
进程的结构:程序块、数据块、PCB。
PCB:系统中存放进程的管理和控制信息的数据结构,是操作系统中最重要的记录性数据结构。是进程存在的唯一标志。
进程的三种状态转换:
程序是指令的有序集合。
具有静态性。
程序执行流的最小单元。
线程是进程的组成部分。
引入线程以后,线程是调度和分配的基本单位,但不是拥有资源的基本单位(除了在运行过程中必不可少的资源,本身基本不拥有系统资源),进程才是拥有资源的基本单位。
如未引入线程,则进程是调度和分配的基本单位。
不管怎样,进程都是拥有资源的基本单位。
一次仅允许一个进程访问的程序。
每个程序中,访问临界资源的那段程序,注意是程序。
这16个字要背下来。
信号量原语
//P(s)
while s<=0:
do no-op;
s=s-1;
//V(s)
s+=1;
对于处理互斥,建立一个信号量mutex,初值为1,在互斥操作前后执行PV操作。mutex为1表示允许1个进程执行,小于等于0则等待,因此可以满足互斥请求。
对于处理同步,建立同步信号量n,表示允许执行的信号个数。
具体的还是看例子比较好理解:https://www.cnblogs.com/aoru45/p/11773325.html
进程间通过共享某些数据结构或共享存储区进行通信。
在读写进程之间建立一个共享的文件,读的时候不能写,写的时候不能读。
不必借助共享区域数据结构,以格式化的消息为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令,在进程间进行消息传递。
核心态:(内核态、管态)cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。
用户态到核心态的转换是通过系统调用。
分为三个层次:高级调度(作业调度)、中级调度(在内存和外存之间调度)、低级调度(进程调度)。
从作业被提交个系统开始到作业运行完的时间。
平均周转时间就是周转时间求和除以作业数。
顾名思义,按照来的先后顺序分配和淘汰队列中的进程。
执行时间短的作业先执行。
优先级高的先执行。
相应比:周转时间/运行时间。
因此,按照相应比高的先执行。
上面说的简单,来个例子就很容易理解了。
设有三个作业同时到达,运行时间分别为3、4、5 优先级为2,1,3,在单处理系统中按单道运行,则各种SJF和PSA的平均周转时间是多少?
\[
SJF:\frac{3 + (3 +4) + (3+4+5)}{3} = \frac{22}{3}\PSA: \frac{4 + (4 + 3) + (4+3+5)}{3} = \frac{23}{3}\\]
设三个作业到达时间分别为0,1,2,实行时间分别是3,4,5,那么HRRN的平均周转时间是多少。
0时刻A先执行,3时刻执行完,则此时B、C的相应比分别为:
\[
P(B) = (3-1 + 4) / 4 = 1.5\P(C) = (3-2 + 5)/5 = 1.2
\]
所以先执行作业B。最后执行作业C。
平均周转时间为:
\[
\frac{(3 + 3+4-1 + 3+4+5-2)}{3} = 6.33
\]
转轮调度:即在分时系统中,给定一个时间片,每个进程获得1/n的时间片的处理机时间,比较好理解。
优先级调度、多队列调度、多级反馈队列调度、基于公平原则的调度、
实时调度。
概念(背):一组进程中,每个进程都无限等待被该组进程中另一进程占有的资源,因而永远无法得到该资源,这种现象称为死锁。
原因:资源竞争、进程推进顺序不当。
死锁的必要条件:互斥、不可抢占、请求和保持、环路等待。
预防死锁:破坏必要条件。
避免死锁:银行家算法。
检测死锁、解除死锁。
比较简单。以书上例题为例:
程序要在系统中运行,要经过下面步骤:
分为:
是将用户程序装入内存的分配方式。
把第一个长度适应的未分配分区分配给程序。每次都从上往下找。
与FF的区别就是NF从上一次分配的地方开始往下找,找一个轮回。
每次找一个最小的最适合的空间分配给程序。
每次找一个最大的最适合的空间分配给程序。
分页存储管理将进程的逻辑地址空间分成若干个页,并对各页加以编号,从0开始,如第0页,第1页等。
分页地址中的地址结构如下:
它包含两部分内容:第一部分为页号P,后一部分为偏移量d,即页内地址。对某特定机器,其地址结构是一定的。
p = 地址/页面大小的向下取整 d = 地址/页面大小的 余数。
在知道如何计算页号和偏移量后,要计算实际的物理地址,还需要知道页号在内存中的起始地址,如何知道每个页面在内存中存放的位置——操作系统要为每个进程建立一张页表。
保存当前执行进程页表的起始地址和页表的长度
借助页表、页表寄存器完成作业逻辑地址(虚地址)到内存物理地址的变换
问题:从虚地址转换为物理地址,然后再完成地址访问,共访问几次主存,效率是多少? 答:共访问两次主存,效率为50%
增设若干具有并行查询能力的特殊高速缓冲寄存器(联想寄存器\快表),保存当前执行进程的部分\全部页表表目,
具体流程为:查快表,找到则访问内存直接得物理地址,没找到则先访问内存查页表再访问内存查到物理地址
\[ 某简单分页系统中,有2^{24}字节的物理内存,\\256页的逻辑地址空间,且页的大小为2^{10}字节,\\问逻辑地址需要多少位? \]
逻辑地址格式是页号加上页内偏移,页号256 即8位,页大小10位,所以是18位。
已知某分页系统,主存容量为4K,页面大小为1K,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中,将十进制的逻辑地址1023、2500、3500、 4500转换为物理地址。
\[
1023/1024 = 0 查到主存的第2块\\1023 \; mod \; 1024 = 1023\\物理地址 = 2 \times 1024 + 1023 = 3071
\]
\[ 2500/1024 = 2查到主存的第6块\\2500\; mod \; 1024 = 452\\物理地址 = 6 \times 1024 + 452 = 6596 \]
\[ 3500/1024 = 3查到主存的第7块\\3500\; mod \; 1024 = 428\\物理地址 = 7 \times 1024 + 428 = 7296 \]
\[ 4500/1024 = 4查不到页号,缺页中断。 \]
标签:并行 多核 缓存 多级反馈队列调度 区分 本地 同步机制 uri 管理
原文地址:https://www.cnblogs.com/aoru45/p/11793047.html