操作系统复习(updating)
操作系统复习(updating)
1、进程和线程的区别是什么?
1)调度:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
2)拥有资源:不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源,但是线程可以访问其隶属的进程的系统资源。
3)并发性:在引入线程的操作系统中,不仅进程可以并发执行,线程也可以并发执行
4)系统开销:由于创建和撤销进程的时候,系统都要为之分配或回收资源,因此操作系统所付出的开销要远大于撤销或创建线程的开销
5)地址空间和其他资源:进程的而地址空间之间互相独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见
6)通信方向:进程间通信需要进程同步和互斥手段的辅助,而线程之间可以直接读/写进程数据段(如全局变量)来通信。
2、什么是分段和分页内存管理?它们之间的区别和优缺点是什么?
3、物理内存和虚拟内存的区别是什么?
物理内存:当打开程序的时候,系统会将这些程序加载到内存上。
虚拟内存:虚拟的不是物理内存,而是代表物理内存形式存储的功能,物理内存的运行程序的功能是无法用虚拟内存来完成的。
物理内存和虚拟内存的关系:当运行程序过多的时候,物理内存不够用的时候,系统会将一部分硬盘空间当内存使用,这部分空间就是虚拟内存。
每个线程会获得4GB的空间(32位系统)
4、什么是协程?
5、进程间通信的方式有哪些?
- 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
- 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
- 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
- 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
- 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
- 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
- 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
6、死锁产生的原因?如何解决死锁?有哪些死锁算法?
死锁的概念:所谓死锁,是指多个进程因竞争自愿而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
在操作系统中,死锁出现是指:若干进程因竞争资源而无限等待其他进程释放已占有的资源
6.1、死锁产生的原因:
- 系统资源的竞争:注意,只有不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。
- 进程推进顺序非法:进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁
- 死锁产生的必要条件:
- 互斥条件
- 不剥夺条件
- 请求并保持条件
- 循环等待条件
6.2、 如何解决死锁?
为使系统不发生死锁,必须设法破坏产生死锁的4个必要条件之一,或允许死锁产生,但是当死锁发生时能检测出死锁,并有能力实现恢复。
- 破坏互斥条件
- 破坏不剥夺条件
- 破坏请求并保持条件:采用预先静态分配法
- 破坏循环等待条件:顺序资源分配法,给系统中的资源编号,规定每个进程必须按照编号递增的顺序请求资源,同类资源一次申请完。
1)资源剥夺法:挂起某些死锁线程,并抢占它的资源,将这些资源分配给其他的死锁进程。但因防止被挂起的进程长时间得不到资源而处于资源匮乏的状态。
2)撤销进程法:强制撤销部分甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程优先级和撤销进程代价的高低进行。
3)进程回退法:让一个或多个进程回退到足以回避死锁的地步,进程回退时资源释放资源而非被剥夺。
6.3、银行家算法、系统有序分配算法、死锁检测算法、资源分配图化简法。
银行家算法是著名的死锁避免算法:
进程运行之前先声明对各种资源的最大需求量,当进程在执行中继续申请资源的时候,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程声明的最大需求量。若超过则拒绝分配资源,若未超过则再次测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按照当前的申请量分配资源,否则也要推迟分配。
7、用户态和核心态(区别、切换方式)
8、操作系统分配的进程空间是怎样的?线程能共享哪些?
操作系统复习(updating)的更多相关文章
- 我的操作系统复习——I/O控制和系统调用
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...
- 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?
1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...
- 操作系统:进程管理和IO控制
一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...
- 如何拿到美团offer的
美团,我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会.10月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我 ...
- 字节跳动Android面试凉凉,挥泪整理面筋,你不看看吗?
想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...
- 模板复习【updating】
马上就要noi了……可能滚粗已经稳了……但是还是要复习模板啊 LCT: bzoj2049 1A 7min # include <stdio.h> # include <string. ...
- 转载文章——从HelloWorld学习操作系统
转载地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d 本文就将系统性的串联起那些知识点,方便复习和回顾.本 ...
- 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...
- MySQL数据库出现The server quit without updating PID file.
一.服务器环境 操作系统:CentOS-6.4 服务器环境:集成环境LNMP1.0 二.步骤重现 1.安装LNMP1.0,具体操作方法见这里,安装成功: 2.因个人需求,现将MySQL数据库存放在/d ...
- 操作系统也谈"算法"
前言: 近来在准备校招的笔试面试,复习到操作系统时感觉概念性的东西比较多,不过对于以下的几类算法还是有必要做个小小总结. [作业调度算法] 先来先服务(FCFS, First Come First S ...
随机推荐
- 深入浅出Seata的AT模式
目录 一.业务背景 二.Seata架构 1.核心组件 2.AT模式 三.案例分析 1.流程分析 2.写隔离 3.读隔离 四.对比XA模式 五.参考源码 单个掉队,导致集体被动摆烂: 一.业务背景 在分 ...
- JavaEE Day13 Tomcat和Servlet
之前是web基础,现在是web核心 今日内容: web相关概念的回顾 开源的web服务器软件:Tomcat Servlet:整个web技术的核心[Servlet入门] 一.web相关概念的回顾 1.软 ...
- C++四舍五入并且保留7为小数
问题描述给定圆的半径r,求圆的面积.输入格式输入包含一个整数r,表示圆的半径.输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积.说明:在本题中,输入是一个整数,但是输出是一个实数 ...
- feDisplacementMap滤镜实现水波纹效果,计算动态值。
参考资料 https://www.zhangxinxu.com/wordpress/2017/12/understand-svg-fedisplacementmap-filter/ 该文章已经讲的特别 ...
- Karmada多云多集群生产实践专场圆满落幕
摘要:CNCF Karmada社区Cloud Native Days China 2022南京站成功举办. 本文分享自华为云社区<Karmada多云多集群生产实践专场圆满落幕|Cloud Nat ...
- Vuex极速入门
01.什么是Vuex? 1.1.为什么需要状态管理? 在复杂的系统中,我们会把系统按照业务逻辑拆分为多个层次.多个模块,采用组件式的开发方式.而此时不同模块.父子模块之间的通信就成了一个问题. 为了解 ...
- 2021 & 2022年终回顾:山河无恙,烟火寻常
前言 又到了一年一度年终回顾的时候了,回想起去年年底圣诞节的时候由于忙着参加黑客松大赛,一下子就进入了新的一年,失去了年终回顾的动力,所以今年提前两个月开始进行回顾,这样的话今年最后一天就可以顺利发文 ...
- Jq /Js 拖动选择文件
必须先引入 Jquery 依赖 1.文件结构 2. HTML <!DOCTYPE html> <html> <head> <meta charset=&quo ...
- [C++]全面理解C++中的引用
一.引用的本质是什么 说到引用,一般C++的教材中都是这么定义的: 1,引用就是一个对象的别名. 2,引用不是值不占内存空间. 3,引用必须在定义时赋值,将变量与引用绑定. 那你有没有想过,上面的定义 ...
- 03-Sed基础语法及例子
1 Sed语法及举例 在实际使用sed过程中经常使用字符串的替换.删除.查找等操作.Linux中的编辑器Vi.GVIM.emacs等都可以进行上述操作,但是大量进行操作的时候,效率很低. 地址参数 { ...