操作系统
ThunderWay
北京工业大学计算机研究生就读
展开
-
CPU寻址?为什么需要虚拟地址空间?
CPU寻址:现代处理器使用的是一种称为虚拟寻址的寻址方式。使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。实际上完成虚拟地址转换为物理地址转换的硬件是CPU中含有一个被称为内存管理单元的硬件。为什么要有虚拟地址空间:先从没有虚拟地址空间说起吧,没有虚拟地址空间的时候,程序都是直接访问和操作物理内存。但会有一些问题:1. 用户可以访问任意的内存,寻址内存的每个字节,这样容易破坏操作系统,造成操作系统崩溃。2. 想要同时运行多个程序特别困难。总结来说:如果直接把物原创 2020-09-22 20:37:33 · 2126 阅读 · 0 评论 -
系统调用
介绍系统调用之前,先来了解一下用户态和系统态。根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别:1. 用户态:用户态运行的进程或可以直接读取用户程序的数据。2. 系统态:系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制。我们运行的程序基本都是运行在用户态,如果我们调用操作系统提供的系统态级别的子功能就需要系统调用了。也就是说在我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操原创 2020-09-22 20:25:03 · 203 阅读 · 0 评论 -
页面置换算法
页面置换算法的作用:地址映射过程中,如果在页面中发现所要访问的页面不在内存(主存)中,则发生缺页中断。当发生缺页中断时,如果当前内存中并没有空闲的页面,操作系统就必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。用来选择淘汰哪一页的规则叫做页面置换算法(我们可以把页面置换算法看成是淘汰页面的规则。)OPT页面置换算法(最佳页面置换算法):最佳页面置换算法所选择的被淘汰页面将是以后永不使用的,或者说在最长时间内不再被访问的页面,这样可以保证获得最低的却也率。但由于人们无法预知进程未来最长时原创 2020-09-22 20:08:51 · 427 阅读 · 0 评论 -
虚拟内存技术的实现
虚拟内存技术的实现需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式:1. 请求分页存储管理:建立在分页管理之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。请求分页存储管理系统中,在作业开始运行之前,仅装入当前要执行的部分段即可运行。假如在作业运行的过程中发现要访问的页面不在内存,则由处理器通知操作系统按照对应的页面置换算法将相应的页面调入到主存,同时操作系统也可以将暂时不用的页面置换到外存中。2. 请求分段存储管理原创 2020-09-21 21:37:54 · 2184 阅读 · 0 评论 -
介绍一下虚拟存储器
基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其他部分留在外存,就可以启动程序执行。由于外存往往比内存大很多,所以我们运行的软件的内存的大小实际上是可以比计算机系统实际的内存大小大的。在程序执行过程中,当访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换到外存上,从而腾出空间存放将要调入内存的信息。这样,计算机好像为用户提供了一个比实际内存大的多的存储器——虚拟存储器。...原创 2020-09-21 21:21:13 · 137 阅读 · 0 评论 -
局部性原理
想要更好的理解虚拟内存技术,必须要知道计算机中著名的局部性原理。局部性原理是虚拟内存技术的基础,正是因为程序运行具有局部性原理,才可以只装入部分程序到内存就开始运行。局部性原理主要表现在以下两个方面:1. 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能被再次访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。2. 空间局部性:一旦程序访问了某个存储单元,在不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的原创 2020-09-21 21:01:12 · 3572 阅读 · 0 评论 -
什么是虚拟内存
这在我们平时的电脑使用中太常见了,很多时候我们点开了很多占内存的软件,这些软件占用的内存可能已经远远超出了我们电脑本身具有的物理内存,正是因为虚拟内存的存在,通过虚拟内存可以让程序可以拥有超过系统物理内存大小的一种自己在独享主存的错觉,虚拟内存是计算机系统内存管理的一种技术,我们可以手动设置自己电脑的虚拟内存。虚拟内存的重要意义是它定义了一个连续的虚拟地址空间,,并且把内存扩展到硬盘。...原创 2020-09-21 20:50:47 · 139 阅读 · 0 评论 -
介绍一下逻辑地址和物理地址
我们编程一般只和逻辑地址打交道,比如c语言指针里存储的数值就可以理解成内存里的一个地址,这个地址就是我们说的逻辑地址,逻辑地址由操作系统决定。物理地址是真实物理内存中地址,具体点来说就是内存地址寄存器中的地址,物理地址是内存单元真正的地址。...原创 2020-09-20 21:16:53 · 2300 阅读 · 0 评论 -
分页机制和分段机制的的共同点和区别
共同点:1. 分页机制和分段机制都是为了提高内存利用率,产生较少的内存碎片。2. 页和段都是离散存储的,所以两者都是离散分配内存的方式。但是每个页和段中的内存是连续的。区别:1. 页的大小是固定的,由操作系统决定,而段的大小不固定,取决于我们当前运行的程序。2. 分页仅仅是为了满足操作系统内存管理的需求,而段是逻辑信息的单位,在程序中可以体现为代码段,数据段,是为了满足用户的需要。...原创 2020-09-20 17:40:03 · 2166 阅读 · 0 评论 -
快表和多级页表
页表管理机制中有两个非常重要的概念,快表和多级页表,在分页内存管理中,很重要的两点是:1. 虚拟地址到物理地址的转换要快。2. 解决虚拟地址空间大,页表也会有很大的问题。快表:为了解决虚拟地址到物理地址的转换速度,操作系统在页表方案基础上引入了快表来加速虚拟地址到物理地址的转换。我们可以把快表理解成一种高速缓冲存储器(cache),其中的内容是页表的一部分或者全部内容。作为页表的cache,它的作用与页表相似,但是为了提高了访问速率。由于采用页表做地址转换,读写内存数据时要访问两次主存,有了快表,有时只原创 2020-09-20 17:19:20 · 2597 阅读 · 0 评论 -
操作系统常见的几种内存管理机制
简单的分为连续分配管理方式和非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的内存空间,比如块式管理。非连续分配管理方式允许一个程序内存分散,比如页式管理、段式管理和段页式管理。1. 块式管理:远古时代的计算机操作系统的内存管理方式,将内存分为几个固定大小的块,每个块只包含一个进程,如果程序运行需要内存,操作系统就给它分配一块,如果程序运行只需要很小的空间,则分配的这块内存很大一部分就浪费了,这些在每个块中未被利用的空间,我们称为碎片。2. 页式管理:把主存分为大小相等且固定原创 2020-09-20 12:14:55 · 2466 阅读 · 0 评论 -
介绍一下操纵系统的内存管理是做什么
操作系统的内存管理主要是负责内存的分配与回收,同时地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情。原创 2020-09-20 11:35:54 · 220 阅读 · 0 评论 -
进程的调度算法
1. 先到先服务调度算法(FCFS):从就绪的队列里选择一个最先进入队列的进程分配资源,使它立即开始执行直到完成或者阻塞放弃占用CPU资源,再重新进行重新调度。2. 短作业优先调度算法(SJF):从就绪的队列里选择一个估计运行时间最短的进程为之分配资源,是他立即执行,直到完成或者阻塞放弃占用CPU资源再重新调度。3. 时间片轮调度算法:每个进程被分配一个时间段,叫做这个进程的时间片,就是这个进程允许运行的时间。4. 优先级调度:为每个进程分配一个优先级,优先级高的先执行,以此类推。5. 多级原创 2020-09-20 11:31:41 · 108 阅读 · 0 评论 -
线程之间同步的方式
线程同步是两个或者多个共享关键资源的线程的并发执行,应该同步线程以避免关键的资源使用产生冲突。操作系统一般有三种线程同步的方式:1. 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问,比如synchronized和lock都是这种机制。2. 信号量:它允许同一时刻多个线程访问同一个资源,但是需要控制同一时刻访问这个资源的最大线程数量。3. 事件:wait/notify通过等待唤醒的方式来保持多线程的同步,还可原创 2020-09-19 21:51:55 · 1713 阅读 · 0 评论 -
进程间的通信方式
每个进程中的数据在另一个进程中都是看不到的,如果要进行数据交换,就需要进行进程间的通信,就需要内核的参与,在内核中开辟一块缓冲区,进程1将数据拷贝到缓冲区,进程二再从缓冲区将数据拿走,内核提供的这种机制叫做进程间的通信。1. 管道/匿名管道:用于具有亲缘关系的父子进程或者兄弟进程之间的通信。2. 有名管道:因为匿名管道没有名字,只能用于亲缘关系之间的进程通信,所以为了克服这个缺点,使用有名管道,有名管道严格遵循先进先出,有名管道以文件形式存在于系统之中,这样只要访问文件路径就可以,就可以通过管道实现原创 2020-09-19 21:36:34 · 172 阅读 · 0 评论 -
进程有哪几种状态
1. 准备状态2. 就绪状态:一旦获得cpu片段就会马上执行3. 运行状态4. 阻塞状态5. 结束状态。原创 2020-09-19 20:12:17 · 1170 阅读 · 0 评论 -
进程和线程的区别
从java内存区域上来说,线程在堆和方法区是线程共享的,本地方法栈、虚拟机栈和程序计数器是线程私有的。1. 根本区别:进程是操作系统资源分配的基本单位,线程是处理器任务调度和执行的基本单位。内存中运行的每个.exe程序都是一个进程。2. 资源开销:进程开销大,但是资源的管理和保护好;而线程是资源开销小,但是不利于资源的管理和保护。3. 一个进程包含至少一个线程,也可以包含多个线程,各个进程是相互独立的,而线程不一定,同一个进程中的线程可能相互影响。...原创 2020-09-19 20:08:34 · 3921 阅读 · 1 评论 -
什么是操作系统
我通过以下四点说一下什么是操作系统吧:1. 首先操作系统是管理计算机硬件和软件资源的程序。2. 其次操作系统本质上是运行在计算机上的软件程序。3. 操作系统为用户提供了一个与系统交互的界面。4. 操作系统分为内核与外壳(内核可以操作硬件的程序)。...原创 2020-09-19 19:24:54 · 251 阅读 · 0 评论