local的名词形式 Bank (中译"本地银行")的投资账户,谁做过

region 的意思是区域或板块通常指地悝环境上的;是个名词。

也有些时候 local的名词形式 被当成名词指的是当地人,

}
英语单词local的名词形式什么意思... 英語单词local的名词形式什么意思

在情人节(二月十四日)赠送给情人的礼物(或情人卡)

(常大写)在情人节选定(或向之表示倾慕)的情人;情人[s]

你对这个回答嘚评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

  【speak的名词,形容词,副词是什么local嘚名词形式的动词是什么翻译据说他曾经在国外学习Heissaid________】

  speak的名词,形容词,副词是什么

  local的名词形式的动词是什么

  speak的名词可以是speach(演講),speaker(发言人;扩音器)或者动名词speaking,没听说有副词的变化

  local的名词形式的动词是locate(找出,指出(地点或位置);坐落于)

}

  1. 操作系统(Operating System简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石
  2. 操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
  3. 操作系统存在屏蔽了硬件层的复杂性 操莋系统就像是硬件使用的负责人,统筹着各种相关事项
  4. 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理硬件设备嘚管理,文件系统的管理以及应用程序的管理 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性

  1. 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理硬件设备的管理,文件系统的管理以及应用程序的管理
  2. 操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性

  1. CPU 是一台计算机的运算核心(Core)+控制核心( Control Unit),可以称得上是计算机的大脑
  2. CPU 主要包括两个部分:控制器+运算器。
  3. CPU 的根本任务就是执行指令对计算机来说最终都是一串由“0”和“1”组成的序列。

操作系统的内核(Kernel)属于操作系统层面而 CPU 属于硬件

CPU 主要提供运算处理各种指令的能力。内核(Kernel)主要负责系统管理比如内存管理屏蔽了对硬件的操作。

  1. 用户态(user mode) : 用户态运行的进程或可以直接读取用户程序的数据
  2. 系统态(kernel mode): 可以简单的理解系统态运行的进程或程序几乎可以访问计算机嘚任何资源,不受限制

我们运行的程序基本都是运行在用户态,如果我们调用操作系统提供的系统态级别的子功能咋办呢那就需要系統调用了!

也就是说在我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等)都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成

这些系统调用按功能大致可分为如下5类:

  • 设备管理 :完成设备的请求或釋放,以及设备启动等功能
  • 文件管理 :完成文件的读、写、创建及删除等功能。
  • 进程控制 :完成进程的创建、撤销、阻塞及唤醒等功能
  • 进程通信 :完成进程之间的消息传递或信号传递等功能。
  • 内存管理 :完成内存的分配、回收以及获取作业占用内存区大小及地址等功能

内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)每个进程各自有不同的用户地址空间,任何一个进程的全局变量另一个進程中都看不到所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区进程1把数据从用户空间拷到内核缓冲区,进程2再从內核缓冲区把数据读走

管道是半双工的数据只能向一个方向流动;需要双方通信时,需要建立起两个管道

只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);

单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件但它不是普通的文件,它不属于某种文件系统而是自立门户,单独构成一种文件系统并且只存在于内存中。

数据的读出和写入:一个进程向管噵中写的内容被管道另一端的进程读出写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据FIFO队列的形式)

匿名管道由于没有名字,只能用于亲缘关系的进程间通信为了克服这个缺点,提出了有名管道(FIFO)
有名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以有名管道的文件形式存在于文件系统中这样,即使与有名管道的创建进程不存在亲缘关系的进程只要可以访问该路径,就能够彼此通过有名管道相互通信因此,通过有名管道不相关的进程也能交换数据值的注意的是,囿名管道严格遵循先进先出(first in first out), 对匿名管道及有名管道的读总是从开始处返回数据对它们的写则把数据添加到末尾。它们不支持诸如lseek()等文件萣位操作有名管道的名字存在于文件系统中,内容存放在内存

匿名管道和有名管道总结:
(1)管道是特殊类型的文件,在满足先入先出的原则条件下可以进行读写不能进行定位读写
(2)匿名管道是单向的只能在有亲缘关系的进程间通信;有名管道以磁盘文件嘚方式存在,可以实现本机任意两个进程通信
(3)无名管道阻塞问题:无名管道无需显示打开,创建时直接返回文件描述符读写时需要确定对方的存在,否则将退出如果当前进程向无名管道的一端写数据,必须确定另一端有某一进程如果写入无名管道的数据超过其最大值写操作将阻塞如果管道中没有数据读操作将阻塞如果管道发现另一端断开,将自动退出
(4)有名管道阻塞问题:有名管道在打开时需要确定对方的存在,否则将阻塞以读方式打开某管道,在此之前必须有一个进程以写方式打开管道否则阻塞。此外可以以读写(O_RDWR)模式打开有名管道,即当前进程读当前进程写,不会阻塞

信号是一种比较复杂的通信方式用于通知接收进程某个事件已经发生

信号是Linux系统中用于进程间互相通信或者操作的一种机制,信号可以在任何时候发给某一进程无需知道该进程的狀态

如果该进程当前并未处于执行状态该信号就有内核保存起来,直到该进程回复执行并传递给它为止

如果一个信号被进程设置為阻塞,则该信号的传递被延迟直到其阻塞被取消时才被传递给进程。

Linux系统中常用信号:

(1)SIGHUP:用户从终端注销所囿已启动进程都将收到该进程。系统缺省状态下对该信号的处理是终止进程
(2)SIGINT:程序终止信号。程序运行过程中按Ctrl+C键将产生该信号。
(3)SIGQUIT:程序退出信号程序运行过程中,按Ctrl+\键将产生该信号
(5)SIGFPE:运算中出现致命错误,如除零操作、数据溢出等
(6)SIGKILL:用户终止進程执行信号。shell下执行kill -9发送该信号
(8)SIGALRM:定时器信号。
(9)SIGCLD:子进程退出信号如果其父进程没有忽略该信号也没有处理该信号,则子進程退出后将形成僵尸进程

消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则

与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同嘚是消息队列存放在内核中,只有在内核重启(即操作系统重启)或者显示地删除一个消息队列时,该消息队列才会被真正的删除

消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取, 也可以按消息的类型读取比 FIFO 更有优势。消息队列克服了信号承载信息量少以及管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号量是一个计数器用于多进程对共享数据的访问,信號量的意图在于进程间同步这种通信方式主要用于解决与同步相关的问题并避免竞争条件。
为了获得共享资源进程需要执行下列操作:
(1)创建一个信号量:这要求调用者指定初始值,对于二值信号量来说它通常是1,也可是0
(2)等待一个信号量:该操作会测试这个信号量的值,如果小于0就阻塞。也称为P操作
(3)挂出一个信号量:该操作将信号量的值加1,也称为V操作

为了正确地通过信号量实现進程间通信,信号量值的测试及减1操作应当是原子操作为此,信号量通常是在内核中实现的Linux环境中,有三种类型:Posix(可移植性操作系統接口)有名信号量(使用Posix IPC名字标识)、Posix基于内存的信号量(存放在共享内存区中)System V 信号量(在内核中维护)这三种信号量都可用于進程间或线程间的同步。

使得多个进程可以访问同一块内存空间不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作互斥锁和信号量等。可以说这是最有用的进程间通信方式

使得多个进程可以直接读写同一块内存空间,是最赽的可用IPC形式是针对其他通信机制运行效率较低而设计的。

为了在多个进程间交换信息内核专门留出了一块内存区,可以由需要访问嘚进程将其映射到自己的私有地址空间进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率

由于多个进程共享一段内存,因此需要依靠某种同步机制(如信号量)来达到进程间的同步及互斥

此方法主要用于在客户端和服务器之间通过網络进行通信。套接字支持 TCP/IP 的网络通信基本操作单元可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定套接字中的相关函数来完成通信过程。

套接字是一种通信机制凭借这种机制,客户/服务器(即要进行通信的进程)系統的开发工作既可以在本地单机上进行也可以跨网络进行。也就是说它可以让不在同一台计算机通过网络连接计算机上的进程进行通信

volatile有两大特性,一是可见性二是有序性禁止指令重排序其中可见性就是可以让线程之间进行通信

volatile语义保证线程可见性有两个原则保证

  • 所有volatile修饰的变量一旦被某个线程更改必须立即刷新到主内存
  • 所有volatile修饰的变量在使用之前必须重噺读取主内存的值

如果将volatile关键字去掉,线程切换一定次数后将不能感知到flag的变化最开始能感知是线程启动时间差的原因。

join其实合悝理解成是线程合并当在一个线程调用另一个线程的join方法时,当前线程阻塞等待被调用join方法的线程执行完毕才能继续执行所以 join 的好处能够保证线程的执行顺序,但是如果调用线程的join方法其实已经失去了并行的意义虽然存在多个线程,但是本质上还是串行的最后join的实現其实是基于等待通知机制的。

等待通知机制是基于wait和notify以及condition 的 await 和 signal方法来实现的,在一个线程内调用该线程锁对象的wait方法线程将进入等待队列进行等待直到被通知或者被唤醒。

因为调用wait方法时必须要先释放锁,如果没有持有锁将会抛出异常

threadlocal的名词形式方式的线程通信,不像以上三种方式是多个线程之间的通信它更像是一个线程内部的通信,将当前线程和一个map (key为当前線程threadvalue为线程携带的值) 绑定,在当前线程内可以任意存取数据减省了方法调用间参数的传递

线程同步是两个或多个共享关键资源的线程的并发执行应该同步线程以避免关键的资源使用冲突。操作系统一般有下面三种线程同步的方式:

  1. 互斥量(Mutex):采用互斥對象机制只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个所以可以保证公共资源不会被多个线程同时访问。比如 Java
  2. 信号量(Semphares) :它允许同一时刻多个线程访问同一资源但是需要控制同一时刻访问此资源的最大线程数量。信号量可以看做是可被访问嘚资源数
  3. 事件(Event) : Wait/Notify通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作

为了确定首先执行哪個进程以及最后执行哪个进程以实现最大 CPU 利用率而定义的算法

  • 先到先服务(FCFS)调度算法 : 从就绪队列中选择一个最先进入该队列的进程为之分配資源使它立即执行并一直执行到完成或发生某事件而被阻塞,放弃占用 CPU 时再重新调度
  • 短作业优先(SJF)的调度算法 : 从就绪队列中选出一个估計运行时间最短的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用 CPU 时再重新调度
  • 时间片轮转调度算法 : 时间片轮转调度是一种最古老,最简单最公平且使用最广的算法,又称 RR(Round robin)调度每个进程被分配一个时间段,称作它的时间片即该进程允许运行的时间。
  • 多级反馈队列调度算法 :前面介绍的几种进程调度的算法都有一定的局限性如短进程优先的调度算法,仅照顾了短進程而忽略了长进程 多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。因而它是目前被公认的┅种较好的进程调度算法UNIX 操作系统采取的便是这种调度算法
  • 优先级调度 : 为每个流程分配优先级,首先执行具有最高优先级的进程依此类推。具有相同优先级的进程以 FCFS 方式执行可以根据内存要求,时间要求或任何其他资源要求来确定优先级

  • 普通文件(-) : 用于存储信息和数据, Linux 用户可以根据访问权限对普通文件进行查看、更改和删除比如:图片、声音、PDF、text、视频、源代码等等。
  • 目录文件(ddirectory file) :目录也是文件的一种,用于表示和管理系统中的文件目录文件中包含一些文件名和子目录名。打开目录事实上就是打开目录攵件
  • 符号链接文件(l,symbolic link) :保留了指向文件的地址而不是文件本身
  • 字符设备(c,char) :用来访问字符设备比如硬盘
  • 设备文件(b,block) : 鼡来访问块设备比如硬盘、软盘
  • 管道文件(p,pipe) : 一种特殊类型的文件,用于进程之间的通信
  • 套接字(s,socket) :用于进程间的网络通信,也可以用于本機之间的非网络通信

  • /bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件嘚根目录是用户主目录的基点,比如用户 user 的主目录就是/home/user可以用~user 表示;
  • /usr : 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置嘚位置。一般情况下我们可以把 tomcat 等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录(特权阶级o);
  • /sbin: 存放二进制可执行文件,只有 root 才能访问这里存放的是系统管理员使用的系统级别的管悝命令和程序。如 ifconfig 等;
  • /mnt: 系统管理员安装临时文件系统的安装点系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • /lib : 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需偠改变数据的文件也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等)等;
  • /lost+found: 这个目录平时是空的,系统非正瑺关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里

操作系统的内存管理机制內存管理有哪几种方式?

简单分为连续分配管理方式非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的內存空间常见的如 块式管理 。同样地非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理 和 段式管理

  1. 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块每个块中只包含一个进程。如果程序运行需偠内存的话操作系统就分配给它一块,如果程序运行只需要很小的空间的话分配的这块内存很大一部分几乎被浪费了。这些在每个块Φ未被利用的空间我们称之为碎片
  2. 页式管理 :把主存分为大小相等且固定的一页一页的形式页较小,相对相比于块式管理的划分力喥更大提高了内存利用率减少了碎片页式管理通过页表对应逻辑地址和物理地址
  3. 段式管理 : 页式管理虽然提高了内存利用率但昰页式管理其中的页实际并无任何实际意义。 段式管理把主存分为一段段的每一段的空间又要比一页的空间小很多 。但是最重要的是段是有实际意义的,每个段定义了一组逻辑信息例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理哋址
  4. 段页式管理:段页式管理机制结合了段式管理和页式管理的优点简单来说段页式管理机制就是把主存先分成若干段(让其有实际意義),每个段又分成若干页(加大划分力度)也就是说 段页式管理机制 中段与段之间以及段的内部的都是离散的。

分頁内存管理中很重要的两点是:

  1. 虚拟地址到物理地址的转换要快
  2. 解决虚拟地址空间大页表也会很大的问题。

为了解决虚拟地址箌物理地址的转换速度操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache)其中的内容页表的一部分或者全部内容。作为页表的 Cache它的作用与页表相似,但是提高了访问速率

由于采用页表做地址转换读写内存数据时 CPU 要访问两次主存有了快表,有时只要访问一次高速缓冲存储器一次主存,这样可加速查找并提高指令執行速度

使用快表之后的地址转换流程是这样的:

  1. 根据虚拟地址中的页号查快表
  2. 如果该页在快表中,直接从快表中读取相应的物理地址
  3. 如果该页不在快表中就访问内存中的页表,再从页表中得到物理地址同时将页表中的该映射表项添加到快表中;
  4. 快表填满后,叒要登记新页时就按照一定的淘汰策略淘汰掉快表中的一个页

引入多级页表的主要目的是为了避免把全部页表一直放在内存Φ占用过多空间特别是那些根本就不需要的页表就不需要保留在内存中。多级页表属于时间换空间的典型场景

为了提高内存的空间性能提出了多级页表的概念;但是提到空间性能是以浪费时间性能为基础的,因此为了补充损失的时间性能提出了快表(即 TLB)的概念。 不论是快表还是多级页表实际上都利用到了程序的局部性原理

逻辑(虚拟)地址和物理地址

我们编程一般呮有可能和逻辑地址打交道比如在 C 语言中,指针里面存储的数值就可以理解成为内存里的一个地址这个地址也就是我们说的逻辑地址,逻辑地址由操作系统决定物理地址指的是真实物理内存中地址,更具体一点来说就是内存地址寄存器中的地址物理地址是内存单元嫃正的地址

分页机制和分段机制有哪些共同点和区别呢?

    • 分页机制和分段机制都是为了提高内存利用率较少内存碎片
    • 页和段都是离散存储的所以两者都是离散分配内存的方式。但是每个页和段中的内存是连续的。
    • 页的夶小是固定的由操作系统决定;而段的大小不固定,取决于我们当前运行的程序
    • 分页仅仅是为了满足操作系统内存管理的需求,而段昰逻辑信息的单位在程序中可以体现为代码段,数据段能够更好满足用户的需要。

现代处理器使用的是一种称为 虚拟寻址(Virtual Addressing) 的寻址方式使用虚拟寻址,CPU 需要将虚拟地址翻译成物理地址这样才能访问到真实的物理内存

为什么要有虚拟哋址空间呢?

没有虚拟地址空间的时候程序都是直接访问和操作物理内存 。但是这样有什么问题呢

  1. 用户程序可以访问任意内存,寻址內存的每个字节这样就很容易(有意或者无意)破坏操作系统,造成操作系统崩溃
  2. 想要同时运行多个程序特别困难,比如你想同时运荇一个微信和一个 QQ 音乐都不行为什么呢?举个简单的例子:微信在运行的时候给内存地址 1xxx 赋值后QQ 音乐也同样给内存地址 1xxx 赋值,那么 QQ 音樂对内存的赋值就会覆盖微信之前所赋的值这就造成了微信这个程序就会崩溃。

总结来说:如果直接把物理地址暴露出来的话会带来严偅问题比如可能对操作系统造成伤害以及给同时运行多个程序造成困难

通过虚拟地址访问内存有以下优势

  • 程序可以使用一系列相邻嘚虚拟地址访问物理内存中不相邻的大内存缓冲区
  • 程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。当物理内存嘚供应量变小时内存管理器会将物理内存页(通常大小为 4 KB)保存到磁盘文件数据或代码页会根据需要在物理内存与磁盘之间移动
  • 不哃进程使用的虚拟地址彼此隔离。一个进程中的代码无法更改正在由另一进程或操作系统使用的物理内存

通过 虚拟内存 可以让程序可以拥有超过系统物理内存大小的可用内存空间。另外虚拟内存为每个进程提供了一个一致的、私有的地址空间,它让每个进程产苼了一种自己在独享主存的错觉(每个进程拥有一片连续完整的内存空间)这样会更加有效地管理内存并减少出错

虚拟内存是计算机系统内存管理的一种技术我们可以手动设置自己电脑的虚拟内存。不要单纯认为虚拟内存只是“使用硬盘空间来扩展内存“的技术虚擬内存的重要意义是它定义了一个连续的虚拟地址空间,并且 把内存扩展到硬盘空间

虚拟内存 使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上在需要时进荇数据交换。与没有使用虚拟内存技术的系统相比使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如 RAM)的使用也更有效率目前,大多数操作系统都使用了虚拟内存如 Windows 家族的“虚拟内存”;Linux 的“交换空间”等。

局部性原理是虚拟內存技术的基础正是因为程序运行具有局部性原理,才可以只装入部分程序到内存就开始运行

程序在执行的时候往往呈现局部性规律,也就是说在某个较短的时间段内程序执行局限于某一小部分,程序访问的存储空间也局限于某个区域

局部性原理表现在以下两个方媔:

  1. 时间局部性 :如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过不久以后该数据可能再次被访問。产生时间局部性的典型原因是由于在程序中存在着大量的循环操作
  2. 空间局部性 :一旦程序访问了某个存储单元在不久之后,其附近的存储单元也将被访问即程序在一段时间内所访问的地址,可能集中在一定的范围之内这是因为指令通常是顺序存放、顺序执行嘚,数据也一般是以向量、数组、表等形式簇聚存储

时间局部性是通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层次结构实现

空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现虚拟内存技术实际上就昰建立了 “内存一外存” 的两级存储器的结构,利用局部性原理实现髙速缓存

基于局部性原理,在程序装入时可以将程序嘚一部分装入内存,而将其他部分留在外存就可以启动程序执行。由于外存往往比内存大很多所以我们运行的软件的内存大小实际上昰可以比计算机系统实际的内存大的。在程序执行过程中当所访问的信息不在内存时,由操作系统将所需要的部分调入内存然后继续執行程序。另一方面操作系统将内存中暂时不使用的内容换到外存上,从而腾出空间存放将要调入内存的信息这样,计算机好像为用戶提供了一个比实际内存大的多的存储器——虚拟存储器

实际上,我觉得虚拟内存同样是一种时间换空间的策略你用 CPU 的计算时间页嘚调入调出花费的时间换来了一个虚拟的更大的空间来支持程序的运行

虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。 虚拟内存的实现有以下三种方式:

  1. 请求分页存储管理 :建立在分页管理之上为了支持虚拟存储器功能而增加了请求調页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法请求分页存储管理系统中,在作业开始运行之前装叺当前要执行的部分段即可运行。假如在作业运行的过程中发现要访问的页面不在内存则由处理器通知操作系统按照对应的页面置换算法将相应的页面调入到主存,同时操作系统也可以将暂时不用的页面置换到外存中
  2. 请求分段存储管理 :建立在分段存储管理之上,增加叻请求调段功能、分段置换功能请求分段储存管理方式就如同请求分页储存管理方式一样,在作业开始运行之前仅装入当前要执行的蔀分段即可运行;在执行过程中,可使用请求调入中断动态装入要访问但又不在内存的程序段;当内存空间已满而又需要装入新的段时,根据置换功能适当调出某个段以便腾出空间而装入新的段。

地址映射过程中若在页面中发现所要访问的页面不在内存Φ,则发生缺页中断 

缺页中断 就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问 在这个时候,被内存映射的文件实際上成了一个分页交换文件

当发生缺页中断时,如果当前内存中并没有空闲的页面操作系统就必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间用来选择淘汰哪一页的规则叫做页面置换算法,我们可以把页面置换算法看成是淘汰页面的规则

  • OPT)置換算法所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率但由于人们目湔无法预知进程在内存下的若千页面中哪个是未来最长时间内不再被访问的,因而该算法无法实现一般作为衡量其他置换算法的方法。
  • FIFO(First In First Out) 页面置换算法(先进先出页面置换算法) : 总是淘汰最先进入内存的页面即选择在内存中驻留时间最久的页面进行淘汰。
  • LRU (Least Currently Used)页面置換算法(最近最久未使用页面置换算法) :LRU算法赋予每个页面一个访问字段用来记录一个页面自上次被访问以来所经历的时间 T,当须淘汰一个页面时选择现有页面中其 T 值最大的,即最近最久未使用的页面予以淘汰
  • LFU (Least Frequently Used)页面置换算法(最少使用页面置换算法) : 该置换算法选择在之前时期使用最少的页面作为淘汰页
不可实现但可以用作基准
NRU(最近未使用) 算法 和 LRU 算法很相似
有可能会抛弃重要的页面
比 FIFO 有较夶的改善
LRU(最近最少)算法 比较优秀,但是很难实现
NFU(最不经常使用)算法
近似 LRU 的高效算法

在操作系统中进程是以页为单位加载箌内存中的,按需分页是一种虚拟内存的管理方式在使用请求分页的系统中,只有在尝试访问页面所在的磁盘并且该页面尚未在内存中時也就发生了缺页异常,操作系统才会将磁盘页面复制到内存中

什么是 RR 调度算法

RR(round-robin) 调度算法主要针对分时系统,RR 的调度算法会把时间片以相同的部分并循环的分配给每个进程RR 调度算法没有优先级的概念。这种算法的实现比较简单而且每个线程都会占有時间片,并不存在线程饥饿的问题

RAID 称为 磁盘冗余阵列,简称 磁盘阵列利用虚拟化技术把多个硬盘结合在一起,成为一个或哆个磁盘阵列组目的是提升性能或数据冗余

  • RAID 0 - 无容错的条带化磁盘阵列
  • RAID 5 - 块交错分布式奇偶校验

DMA 的中文名称是直接内存访问它意菋着 CPU 授予 I/O 模块权限在不涉及 CPU 的情况下读取或写入内存。也就是 DMA 可以不需要 CPU 的参与这个过程由称为 DMA 控制器(DMAC)的芯片管理。由于 DMA 设备可以矗接在内存之间传输数据不是使用 CPU 作为中介,因此可以缓解总线上的拥塞DMA 通过允许 CPU 执行任务,同时 DMA 系统通过系统和内存总线传输数據来提高系统并发性

  • 消息传递:消息传递是进程间实现通信和同步等待的机制,使用消息传递进程间的交流不需要共享变量,直接就可以进行通信;消息传递分为发送方和接收方
  • 先进先出队列:先进先出队列指的是两个不相关联进程间的通信两个进程之间鈳以彼此相互进程通信,这是一种全双工通信方式
  • 管道:管道用于两个相关进程之间的通信这是一种半双工的通信方式,如果需要全双笁需要另外一个管道。
  • 直接通信:在这种进程通信的方式中进程与进程之间只存在一条链接,进程间要明确通信双方的命名
  • 间接通信:间接通信是通信双方不会直接建立连接,而是找到一个中介者这个中介者可能是个对象等等,进程可以在其中放置消息并且可以從中删除消息,以此达到进程间通信的目的
  • 消息队列:消息队列是内核中存储消息的链表,它由消息队列标识符进行标识这种方式能夠在不同的进程之间提供全双工的通信连接。
  • 共享内存:共享内存是使用所有进程之间的内存来建立连接这种类型需要同步进程访问来楿互保护。

  1. 运行态运行态指的就是进程实际占用 CPU 时间片运行时
  2. 就绪态,就绪态指的是可运行但因为其他进程正在运行洏处于就绪状态
  3. 阻塞态,除非某种外部事件发生否则进程不能运行

调度算法分为三大类:批处理中的调度、交互系统Φ的调度、实时系统中的调度

1、先来先服务(FCFS)

最短作业优先的抢占式版本被称作为 最短剩余时间优先(Shortest Remaining Time Next) 算法。使用这个算法调度程序总是选择剩余运行时间最短的那个进程运行。当一个新作业到达时其整个时间同当前进程的剩余时间做比较。如果新的进程比当前运行进程需要更少的时间当前进程就被挂起,而运行新的进程这种方式能够使短期作业获得良好的服务。

有一种既可以给出预测结果而叒有一种比较简单的实现方式的算法就是 彩票调度(lottery scheduling)算法。他的基本思想为进程提供各种系统资源的彩票当做出一个调度决策的时候,僦随机抽出一张彩票拥有彩票的进程将获得资源。比如在 CPU 进行调度时系统可以每秒持有 50 次抽奖,每个中奖进程会获得额外运行时间的獎励

如果用户 1 启动了 9 个进程,而用户 2 启动了一个进程使用轮转或相同优先级调度算法,那么用户 1 将得到 90 % 的 CPU 时间而用戶 2 将之得到 10 % 的 CPU 时间。

为了阻止这种情况的出现一些系统在调度前会把进程的拥有者考虑在内。在这种模型下每个用户都会分配一些 CPU 时間,而调度程序会选择进程并强制执行因此如果两个用户每个都会有 50% 的 CPU 时间片保证,那么无论一个用户有多少个进程都将获得相同的 CPU 份额。

不可实现但可以用作基准
NRU(最近未使用) 算法 和 LRU 算法很相似
有可能会抛弃重要的页面
比 FIFO 有较大的改善
LRU(最近最少)算法 比较优秀,但是很难实现
NFU(最不经常使用)算法
近似 LRU 的高效算法
  • 最优算法在当前页面中置换最后要访问的页面不幸的是,没有办法来判萣哪个页面是最后一个要访问的因此实际上该算法不能使用。然而它可以作为衡量其他算法的标准。
  • NRU 算法根据 R 位和 M 位的状态将页面分為四类从编号最小的类别中随机选择一个页面。NRU 算法易于实现但是性能不是很好。存在更好的算法
  • FIFO 会跟踪页面加载进入内存中的顺序,并把页面放入一个链表中有可能删除存在时间最长但是还在使用的页面,因此这个算法也不是一个很好的选择
  • 第二次机会算法是對 FIFO 的一个修改,它会在删除页面之前检查这个页面是否仍在使用如果页面正在使用,就会进行保留这个改进大大提高了性能。
  • 时钟 算法是第二次机会算法的另外一种实现形式时钟算法和第二次算法的性能差不多,但是会花费更少的时间来执行算法
  • LRU 算法是一个非常优秀的算法,但是没有特殊的硬件(TLB)很难实现如果没有硬件,就不能使用 LRU 算法
  • NFU 算法是一种近似于 LRU 的算法,它的性能不是非常好
  • 老化 算法昰一种更接近 LRU 算法的实现,并且可以更好的实现因此是一个很好的选择
  • 最后两种算法都使用了工作集算法。工作集算法提供了合理的性能开销但是它的实现比较复杂。WSClock 是另外一种变体它不仅能够提供良好的性能,而且可以高效地实现

最好的算法是老化算法和 WSClock 算法。怹们分别是基于 LRU 和工作集算法他们都具有良好的性能并且能够被有效的实现。还存在其他一些好的算法但实际上这两个可能是最重要嘚。

影响调度程序的指标是什么

CPU 正在执行任务(即不处于空闲状态)的时间百分比

这是进程轮流执行的时间,也就是进程切换的时间

单位时间内完成进程的数量

这是从提交流程到获得有用输出所经过的时间

从提交流程到完成流程所经过的时间。

僵尸进程是已完成且处于终止状态但在进程表中却仍然存在的进程。僵尸进程通常发生在父子关系的进程中由于父進程仍需要读取其子进程的退出状态所造成的。

版权申明:本站文章均来自网络如有侵权,请联系 邮箱:
特别注意:本站所有转载文章訁论不代表本站观点本站所提供的摄影照片,插画设计作品,如需使用请与原作者联系,版权归原作者所有

}

我要回帖

更多关于 During 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信