操作系统复习(updating)

1、进程和线程的区别是什么?

1)调度:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

2)拥有资源:不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源,但是线程可以访问其隶属的进程的系统资源。

3)并发性:在引入线程的操作系统中,不仅进程可以并发执行,线程也可以并发执行

4)系统开销:由于创建和撤销进程的时候,系统都要为之分配或回收资源,因此操作系统所付出的开销要远大于撤销或创建线程的开销

5)地址空间和其他资源:进程的而地址空间之间互相独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见

6)通信方向:进程间通信需要进程同步和互斥手段的辅助,而线程之间可以直接读/写进程数据段(如全局变量)来通信。

2、什么是分段和分页内存管理?它们之间的区别和优缺点是什么?

3、物理内存和虚拟内存的区别是什么?

物理内存:当打开程序的时候,系统会将这些程序加载到内存上。

虚拟内存:虚拟的不是物理内存,而是代表物理内存形式存储的功能,物理内存的运行程序的功能是无法用虚拟内存来完成的。

物理内存和虚拟内存的关系:当运行程序过多的时候,物理内存不够用的时候,系统会将一部分硬盘空间当内存使用,这部分空间就是虚拟内存。

每个线程会获得4GB的空间(32位系统)

4、什么是协程?

5、进程间通信的方式有哪些?

  1. 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
  2. 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
  3. 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  4. 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
  5. 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  6. 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
  7. 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

6、死锁产生的原因?如何解决死锁?有哪些死锁算法?

死锁的概念:所谓死锁,是指多个进程因竞争自愿而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

在操作系统中,死锁出现是指:若干进程因竞争资源而无限等待其他进程释放已占有的资源

6.1、死锁产生的原因:

  • 系统资源的竞争:注意,只有不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。
  • 进程推进顺序非法:进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁
  • 死锁产生的必要条件:
    • 互斥条件
    • 不剥夺条件
    • 请求并保持条件
    • 循环等待条件

6.2、 如何解决死锁?

为使系统不发生死锁,必须设法破坏产生死锁的4个必要条件之一,或允许死锁产生,但是当死锁发生时能检测出死锁,并有能力实现恢复。

  • 破坏互斥条件
  • 破坏不剥夺条件
  • 破坏请求并保持条件:采用预先静态分配法
  • 破坏循环等待条件:顺序资源分配法,给系统中的资源编号,规定每个进程必须按照编号递增的顺序请求资源,同类资源一次申请完。

1)资源剥夺法:挂起某些死锁线程,并抢占它的资源,将这些资源分配给其他的死锁进程。但因防止被挂起的进程长时间得不到资源而处于资源匮乏的状态。

2)撤销进程法:强制撤销部分甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程优先级和撤销进程代价的高低进行。

3)进程回退法:让一个或多个进程回退到足以回避死锁的地步,进程回退时资源释放资源而非被剥夺。

6.3、银行家算法、系统有序分配算法、死锁检测算法、资源分配图化简法。

银行家算法是著名的死锁避免算法:

进程运行之前先声明对各种资源的最大需求量,当进程在执行中继续申请资源的时候,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程声明的最大需求量。若超过则拒绝分配资源,若未超过则再次测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按照当前的申请量分配资源,否则也要推迟分配。

7、用户态和核心态(区别、切换方式)

8、操作系统分配的进程空间是怎样的?线程能共享哪些?

操作系统复习(updating)的更多相关文章

  1. 我的操作系统复习——I/O控制和系统调用

    上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...

  2. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  3. 操作系统:进程管理和IO控制

    一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...

  4. 如何拿到美团offer的

    美团,我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会.10月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我 ...

  5. 字节跳动Android面试凉凉,挥泪整理面筋,你不看看吗?

    想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...

  6. 模板复习【updating】

    马上就要noi了……可能滚粗已经稳了……但是还是要复习模板啊 LCT: bzoj2049 1A 7min # include <stdio.h> # include <string. ...

  7. 转载文章——从HelloWorld学习操作系统

    转载地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d 本文就将系统性的串联起那些知识点,方便复习和回顾.本 ...

  8. 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)

    前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...

  9. MySQL数据库出现The server quit without updating PID file.

    一.服务器环境 操作系统:CentOS-6.4 服务器环境:集成环境LNMP1.0 二.步骤重现 1.安装LNMP1.0,具体操作方法见这里,安装成功: 2.因个人需求,现将MySQL数据库存放在/d ...

  10. 操作系统也谈"算法"

    前言: 近来在准备校招的笔试面试,复习到操作系统时感觉概念性的东西比较多,不过对于以下的几类算法还是有必要做个小小总结. [作业调度算法] 先来先服务(FCFS, First Come First S ...

随机推荐

  1. 【Spark】Day01-入门、模块组成、4种运行模式详解及配置、案例实操(spark分析过程)

    一.概述 1.概念 基于内存的大数据分析计算引擎 2.特点 快速.通用.可融合性 3.Spark内置模块[腾讯8000台spark集群] Spark运行在集群管理器(Cluster Manager)上 ...

  2. (已转)Linux基础第七章 线程

    前言 之前讨论了进程,了解一个进程能做一件事情,如果想同时处理多件事情,那么需要多个进程,但是进程间很不方便的一点是,进程间的数据交换似乎没有那么方便.Linux提供线程功能,能在一个进程中,处理多任 ...

  3. 【转载】EXCEL VBA 自定义排序的三种方法

    何谓自定义排序,就是按指定的顺序对数据源进行排序呗.   共分享了三种方法: 第1种方法是系统自带的OrderCustom,优点是代码简洁,缺点是自定义序列有字符长度限制(255个). 第2种方法是字 ...

  4. 【转载】SQL SERVER 中单字节和双字节互转自定义函数(全角半角转换)

    一.首先创建一个自定义函数,代码如下: alter function f_convert( @str nvarchar(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角 ...

  5. MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

    Swagger是什么? Swagger是一个规范且完整API文档管理框架,可以用于生成.描述和调用可视化的RESTful风格的 Web 服务.Swagger 的目标是对 REST API 定义一个标准 ...

  6. 前菜--Numpy

    import numpy as np NumPy : numberial python NumPy的核心:数据结构 ndarray 1.1 数组方法 np.array 创建数组 基本语法:np.arr ...

  7. python之路49 模板层标签 自定义过滤器 模板继承、模型层准备、ORM部分操作

    模板层之标签 {% if 条件1(可以自己写也可以是用传递过来的数据) %} <p>周三了 周三了</p> {% elif 条件2(可以自己写也可以用传递过来的数据) %} & ...

  8. python之路22 hashlib、subprocess、logging模块

    hashlib加密模块 hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 信息摘要算法(Message Digest Algorithm)实现了一个公共的. ...

  9. P7960 [NOIP2021] 报数

    简要题意 小Z在玩报数游戏,这个游戏有一个规则,就是对于一个正整数 \(x\),如果满足 \(7 \mid x\) 或 \(x\) 的十进制写法中含有 \(7\) 或是十进制写法含有 \(7\) 的倍 ...

  10. ChatGPT/InstructGPT详解

    作者:京东零售 刘岩 前言 GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义,GPT的目的就是通过Transfo ...