1、进程和线程以及它们的区别

(1)进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现操作系统并发。

(2)线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部并发。

(3)一个程序至少有一个进程,一个进程至少有一个线程,线程依赖进程的存在。

(4)进程执行过程中拥有独立的内存单元,而多个线程共享进程的内存。

2、进程间的通信的几种方式

(1)管道(pipe)及命名管道(named pipe):管道可用于具有亲缘关系的父子进程间通信,命名管道除了具有管道所具有功能外,还允许无亲缘关系进程的通信。

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

(3)消息队列:是消息的链接表,克服上两种通信方式中信号量有限的缺点,具有写权限的进程可以按照一定规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。

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

(5)信号量:主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段。

(6)套接字:这是一致性更为一般进程间通信机制,它可用网络中不同机器之间进程间通信,应用非常广泛。

3、线程同步的方式

(1)互斥量Synchronized/lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

(2)信号量Semaphore:它允许同一时刻多个线程访问同一资源,但需要控制同一时刻访问此资源的最大线程数。

(3)事件(信号),Wait/Notify:通过通知操作的方式来保存多线程同步,还可以方便的实现多线程优先级比较操作。

4、什么是死锁?死锁产生的条件?

4.1死锁的概念:

在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗讲,就是两个或者多个进程无限期的阻塞、相互等待的一种状态。

4.2死锁产生的四个必要条件

(1)互斥:至少有一个资源必须属于非共享模式,即一次只能被一个进程使用;若其他申请使用该资源,那么申请进程必须等到该资源被释放为止;

(2)占用并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有;

(3)非抢占;进程不能被抢占,即资源只能被进程在完成任务后资源释放。

(4)循环等待:若干进程之间形成一种头尾相接的环形等待资源关系。

4.3死锁处理的基本策略和常用方法

解决死锁的基本方法主要有:预防死锁,避免死锁,检测死锁,解除死锁等思想。

(1)死锁预防

死锁预防基本思想:只要确保死锁发生的四个必要条件至少有一个不成立,就能预防死锁。

①打破互斥条件:允许进程同时访问某些资源。但是,有些资源是不能被多个进程所共享的,这是由资源本身属性所决定的,因此,这种办法通常并无实用价值。

②打破占用并等待条件:可以实行资源预先分配策略(进程在运行前一次性向系统申请它所需要的全部资源,若所需全部资源得不到满足,则不分配任何资源,此进程暂不运行;只有当系统能满足当前进程所需的全部资源时,才一次性将所申请资源全部分配给该线程)或者只允许进程在没有占用资源时才可以申请资源(一个进程可申请一些资源并使用它们,但是在当前进程申请更多资源之前,它必须全部释放当前所占有的资源)。但是这种策略也存在一些缺点:在很多情况下,无法预知一个进程执行前所需的全部资源,因为进程是动态执行的,不可预知的;同时,会降低资源利用率,导致降低了进程的并发性。

③打破非枪占条件:允许进程强行从占有者哪里夺取某些资源,也就是说,但一个进程占有了一部分资源,在其申请新的资源且得不到满足时,它必须释放所有占有的资源以便让其它线程使用。这种预防死锁的方式实现起来困难会降低系统性能。

④打破循环等待条件:实行资源有序分配策略。对所有资源排序编号,所有进程对资源的请求必须严格按资源序号递增的顺序提出,即只有占用了小号资源才能申请大号资源,这样就不回产生环路,预防死锁的发生。

(2)死锁避免

死锁避免的基本思想是动态检测资源分配状态,以确保循环等待条件不成立,从而确保系统处于安全状态。所谓安全状态是指:如果系统能按某个顺序为每个进程分配资源(不超过其最大值),那么系统状态是安全的,换句话说就是,如果存在一个安全序列,那么系统处于安全状态。资源分配图算法和银行家算法是两种经典的死锁避免的算法,其可以确保系统始终处于安全状态。其中,资源分配图算法应用场景为每种资源类型只有一个实例(申请边,分配边,需求边,不形成环才允许分配),而银行家算法应用于每种资源类型可以有多个实例的场景。

(3)死锁解除

死锁解除的两种常用方法为进程终止和资源抢占。所谓进程终止是指简单地终止一个或多个进程以打破循环等待,分终止所有死锁进程、一次只终止一个进程直到取消死锁循环为止。所谓资源抢占就是指从一个或多个死锁进程哪里抢占一个或多个资源,此时需考虑三问题

①选择一个牺牲品。

②回滚到安全状态

③饥饿(在代价因素中加上回滚次数,回归的越多则越不可能作为牺牲品,避免一个进程总是被回滚)。

5、进程有哪几种状态?

(1)就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源;

(2)运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数;

(3)阻塞状态:进程等待某种条件,在条件满足之前无法执行;

6、线程有几种状态?

在 Java虚拟机 中,线程从最初的创建到最终的消亡,要经历若干个状态:创建(new)、就绪(runnable/start)、运行(running)、阻塞(blocked)、等待(waiting)、时间等待(time waiting) 和 消亡(dead/terminated)。

7、分页和分段有什么区别(内存管理)?

段式存储管理是一种符合用户视角的内存分配管理方案。在段式存储管理中,将程序的地址空间划分为若干段(segment),如代码段,数据段,堆栈段;这样每个进程有一个二维地址空间,相互独立,互不干扰。段式管理的优点是:没有内碎片(因为段大小可变,改变段大小来消除内碎片)。但段换入换出时,会产生外碎片(比如4k的段换5k的段,会产生1k的外碎片)。

页式存储管理方案是一种用户视角内存与物理内存相分离的内存分配管理方案。在页式存储管理中,将程序的逻辑地址划分为固定大小的页(page),而物理内存划分为同样大小的帧,程序加载时,可以将任意一页放入内存中任意一个帧,这些帧不必连续,从而实现了离散分离。页式存储管理的优点是:没有外碎片(因为页的大小固定),但会产生内碎片(一个页可能填充不满)。

两者不同:

(1)目的不同:分页是由于系统管理的需要而不是用户的需要,它是信息的物理单位;分段的目的是为了能更好地满足用户的需要,它是信息的逻辑单位,它含有一组其意义相对完整的信息;

(2)大小不同:页的大小固定且由系统决定,而段的长度却不固定,由其所完成的功能决定

(3)地址空间不同:段向用户提供二维地址空间;页向用户提供的是一维地址空间;

(4)信息共享:段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制;

(5)内存碎片:页式存储管理的优点是没有外碎片(因为页的大小固定),但会产生内碎片(一个页可能填充不满);而段式管理的优点是没有内碎片(因为段大小可变,改变段大小来消除内碎片)。但段换入换出时,会产生外碎片(比如4k的段换5k的段,会产生1k的外碎片)。

8、操作系统中进程调度策略有哪几种?

(1)FCFS(先来先服务,队列实现,非抢占的):先请求CPU的进程先分配到CPU。

(2)SJF(最短作业优先调度算法):平均等待时间最短,但难以知道下一个CPU区间长度。

(3)优先级调度算法:优先级越高越先分配到CPU,相同优先级先到先服务,存在的主要问题是:低优先级进程无穷等待CPU,会导致无穷阻塞或饥饿;解决方案:老化。

(4)时间片轮转调度算法(可抢占的):队列中没有进程被分配超过一个时间片的CPU时间,除非它是唯一可运行的进程。如果进程的CPU区间超过了一个时间片,那么该进程就被抢占并放回就绪队列。

(5)多级队列调度算法:将就绪队列分成多个独立的队列,每个队列都有自己的调度算法,队列之间采用固定优先级抢占调度。其中,一个进程根据自身属性被永久地分配到一个队列中。

(6)多级反馈队列调度算法:与多级队列调度算法相比,其允许进程在队列之间移动:若进程使用过多CPU时间,那么它会被转移到更低的优先级队列;在较低优先级队列等待时间过长的进程会被转移到更高优先级队列,以防止饥饿发生。

9、说一说进程同步有哪几种机制?

原子操作、信号量机制、自旋锁管程、会合、分布式系统

10、什么是虚拟内存?

10.1内存发展历程

没有内存抽象(单进程,除去操作系统所用的内存之外,全部给用户程序使用) —>有内存抽象(多进程,进程独立的地址空间,交换技术(内存大小不可能容纳下所有并发执行的进程)—> 连续内存分配(固定大小分区(多道程序的程度受限),可变分区(首次适应,最佳适应,最差适应),碎片)—> 不连续内存分配(分段,分页,段页式,虚拟内存)

10.2虚拟内存

虚拟内存允许执行进程不必完全在内存中。虚拟内存的基本思想是:每个进程拥有独立的地址空间,这个空间被分为大小相等的多个块,称为页(Page),每个页都是一段连续的地址。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻进行必要的映射;当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令。这样,对于进程而言,逻辑上似乎有很大的内存空间,实际上其中一部分对应物理内存上的一块(称为帧,通常页和帧大小相等),还有一些没加载在内存中的对应在硬盘上,如图所示。

由图可以看出,虚拟内存实际上可以比物理内存大。当访问虚拟内存时,会访问MMU(内存管理单元)去匹配对应的物理地址(比如图5的0,1,2)。如果虚拟内存的页并不存在于物理内存中(如图5的3,4),会产生缺页中断,从磁盘中取得缺的页放入内存,如果内存已满,还会根据某种算法将磁盘中的页换出。

10.3页面置换算法

(1)FIFO先进先出算法:在操作系统中经常被用到,比如作业调度(主要实现简单,很容易想到);

(2)LRU(Least recently use)最近最少使用算法:根据使用时间到现在的长短来判断;

(3)LFU(Least frequently use)最少使用次数算法:根据使用次数来判断;

(4)OPT(Optimal replacement)最优置换算法:理论的最优,理论;就是要保证置换出去的是不再被使用的页,或者是在实际内存中最晚使用的算法。

10.4虚拟内存应用及优点

虚拟内存很适合在多道程序设计系统中使用,许多程序的片段同时保存在内存中。当一个程序等待它的一部分读入内存时,可以把CPU交给另一个进程使用。

好处:

(1)在内存中可以保留多个进程,系统并发度提高。

(2)解除了用户与内存之间的紧密约束,进程可以比内存的全部空间还大

11、颠簸

颠簸本质上是指频繁的页调度行为,具体来讲,进程发生缺页中断,这时,必须置换某一页。然而,其他所有的页都在使用,它置换一个页,但又立刻再次需要这个页。因此,会不断产生缺页中断,导致整个系统的效率急剧下降,这种现象称为颠簸(抖动)。

解决策略包括:

(1)如果是因为页面替换策略失误,可以修改替换算法来解决这个问题;

(2)如果是因为运行的程序太多,造成程序无法同时将所有频繁访问的页面调入内存,则要降低多道程序的数量;

(3)否则,还剩下两个办法:终止该进程或增加物理内存容量。

12、局部性原理

(1)时间上的局部性:最近被访问的页在不久的将来还会被访问;

(2)空间上的局部性:内存中被访问的页周围的页也很可能被访问。

参考博客:https://blog.csdn.net/justloveyou_/article/details/78304294

计算机操作系统知识梳理相关推荐

  1. 计算机操作系统知识框架要点复习,不包含习题!如有错误可以留言。

    一.第一章 1.操作系统 操作系统是计算机系统中的一个系统软件. 它是这样一些程序模块的集合:它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供 ...

  2. 2021的最新操作系统知识梳理,建议收藏!

    推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...

  3. 双基测试题计算机理论基础知识梳理,与时俱进的认识“双基”

    数学"双基"指的是数学的基本知识和基本技能.近年来,随着计算机技术和现代信息技术迅猛发展以及数学技术的广泛应用,"双基"概念赋予了新的内涵.因此在新课程理念下, ...

  4. 计算机网络部分知识梳理

    目录 网络概述 (一)网络发展的五个阶段 (二)TCP/IP模型和OSI模型 (三)协议三要素 (四)网络的组成 (五)网络的分类 (六)网络的拓扑结构 物理层 (一)物理层的概念和工作 (二)多路复 ...

  5. 计算机基础理论知识梳理篇(二):目态(用户态)、管态(内核态)

    目态与管态 多数计算机系统将CPU执行状态分为目态(用户态)与管态(内核态),CPU的状态属于程序状态字PSW的一位,CPU交替执行操作系统程序和用户程序. 1. CPU设计中的目态.管态 目态指非特 ...

  6. 操作系统期末复习知识梳理

    操作系统知识梳理 ​                                              copyright © 2020 by 宇智波Akali 文章目录 第一章 引论 第二章 ...

  7. 计算机文化基础知识梳理,计算机文化基础知识梳理.doc

    计算机文化基础知识梳理 一.单选题: 1.中央处理器(CPU)主要是由(C )组成的. A.内存储器和控制器 B.内存储器和运算器 C.控制器和运算器 D.控制器.存储器和运算器 2.计算机软件一般可 ...

  8. IT:银行类金融科技岗笔试习题集合—各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理)

    IT:银行类金融科技岗笔试习题集合-各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理) 导读:因为博主后台留言太 ...

  9. 中级统计师基础知识中计算机,【2014年中级统计师《统计基础理论及相关知识》预习:计算机操作系统】- 环球网校...

    [摘要]2014年中级统计师<统计基础理论及相关知识>预习:计算机操作系统 2014年统计师考试备考已经开始,为了帮助参加2014年中级统计师考试考生提高备考效果,环球网校为大家整理了中级 ...

最新文章

  1. 超级计算数据中心设计要求(征求意见稿)
  2. 日志处理两大生态Splunk和ELK深度对比
  3. dart系列之:你的地盘你做主,使用Extension对类进行扩展
  4. (三)Maven仓库介绍与本地仓库配置
  5. lcd屏幕抖动_电视屏幕面板大科普!买电视之前必看!
  6. linux/window 下 solr5.1 tomcat7.x 环境搭建即简单功能测试
  7. PHP自学3——在html的table标签中显示用户提交表单
  8. python整数反转_敲代码学Python:力扣简单算法之整数反转
  9. java信号灯_java 信号灯 Semaphore
  10. qq语音按住ctrl就静音怎么解决_excel图形处理技巧:怎么制作出地摊经济的街景...
  11. 第四章 蒙特卡洛方法-强化学习理论学习与代码实现(强化学习导论第二版)
  12. linux shell 基础试题,linux基础shell考试试卷
  13. OpenWrt官方入门手册
  14. 达梦数据库update关联更新改造
  15. Unity3d打包程序报错NotSupportedException: Encoding 437 data could not be found.
  16. 3DsMax——竹篮制作
  17. cadence一些快捷键
  18. 坎坎坷坷,跌跌撞撞,我的2019年度总结
  19. 查看表空间使用率(包括临时表空间)
  20. 设计模式——行为型——备忘录模式

热门文章

  1. div盒子注册失去焦点onblur事件
  2. 搭建属于你自己的RAMOS系统 – WIN7+VHD+GURB map方式
  3. Nginx+Vue.js+Tornado前后端分离架构环境实践(1)
  4. 汽车智能化基本概念:CPU、GPU、NPU、DPU、MCU、ECU……
  5. php婚恋相亲交友/聊天通讯/红娘认证/婚介所择爱平台源码搭建教程
  6. Jquery删除节点元素
  7. JIT和AOT编译详解
  8. WE CAN人在行动之——黄晓蓉逛上海 第四集
  9. 私域流量最爆风口——微信直播怎么玩?
  10. 汶川512地震未公开的照片