一、程序的内存结构

references:

newcoder



运行时,程序分为:text段、data段、BSS段(2个合称数据段)、堆、栈。

text段:代码段,静态分配内存,只读。

data段:初始化的非零全局变量、静态变量。

BSS段:未初始化或者零值的全局变量、静态变量。

堆:由低地址往高地址生长,系统用链表存储,地址不连续。由程序员申请分配和释放。

栈:由高地址往低地址生长,连续的内存区域。编译器自动释放。

二、死锁

references:面试常见题

1、概念

两个或以上进程,因为抢夺资源而出现了相互等待的现象,若无外力,他们都无法继续推进下去。

2、死锁条件

  1. 互斥条件:一个资源只能被一个进程使用;其他进程想使用得等待。
  2. 请求和保持条件:一个进程因请求资源而阻塞,不会释放已有资源。
  3. 不可抢夺条件:进程以获得的资源,在进程结束前不能抢夺。
  4. 循环等待条件:若干进程之间形成了头尾相接的等待资源的关系。

3、预防策略

  1. 实行资源静态分配(破坏请求和保持):进程要运行必须一次性申请到所有资源。缺点:进程的资源难以预知,资源利用率低。
  2. 允许进程抢夺某些资源(破坏不可抢夺):当进程占有一部分资源并且申请不到新的资源的时候,必须释放已有资源。缺点:降低系统性能。
  3. 实行资源有序分配(破坏循环等待):对资源排序编号,进程对资源的请求必须按照资源序号递增顺序提出,也就是说只有申请到了编号小的资源才能继续申请编号大的资源。

4、避免策略

银行家算法:允许进程动态的申请资源,但在系统分配资源之前,应先计算此次分配的安全性,若分配导致不安全,则不分配。

想要分配,需要满足以下条件:

  1. 申请资源\(\le\)系统拥有的资源
  2. 申请资源\(\le\)进程需要的资源
  3. 满足安全性。

安全性算法:

剩下的系统资源能够满足让所有的未完成的进程都能完成,则安全。

4. Finish[ i ] = false; //进程未完成

5. Need <= Work

6. 进程执行完毕

7. Work = Work + Allocation

8. Finish [ i ] = true

9. 返回继续执行 1 ,寻找其他的进程分配资源

10. 若所有的 Finish 为 true 则安全

5、鸵鸟策略

无视死锁的发生。

原因:死锁发生的概率很低,解决死锁的代价很大。

操作系统 part2的更多相关文章

  1. 秋招C++面试相关总结索引

    C++相关 C++ part1 C++ part2 C++ part3 C++ part4 C++ part5 C++ part6 C++ part6.5 C++ part7 C++ part8 C+ ...

  2. Linux内核分析——操作系统是如何工作的

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...

  3. [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计

    本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...

  4. 自动化测试 Appium之Python运行环境搭建 Part2

    Appium之Python运行环境搭建 Part2 by:授客 QQ:1033553122 实践环境 参见 Appium之Python运行环境搭建 Part1 环境部署 1.安装Android SDK ...

  5. MySQL数据库之part2

    一.索引原理与慢查询优化 一.介绍 1.为何需要有索引 一般的应用系统,读写比例是10:1左右,而且插入操作和一般的更新操作很少出现性能问题.在生产环境中,我们遇到最多的.也是最容易出问题的还是一些负 ...

  6. 12-Factor与云原生Part2

    12-Factor与云原生Part2 12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用声明式格式来搭建自动化,从而使新的开发者花费最少的学习成本加入这个项目 和底层操作系统保持简洁 ...

  7. 操作系统篇-调用门与特权级(CPL、DPL和RPL)

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...

  8. 操作系统篇-分段机制与GDT|LDT

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...

  9. 操作系统篇-hello world(免系统运行程序)

     || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...

随机推荐

  1. CMU数据库(15-445)Lab1-BufferPoolManager

    0. 关于环境搭建请看 https://www.cnblogs.com/JayL-zxl/p/14307260.html 1. Task1 LRU REPLACEMENT POLICY 0. 任务描述 ...

  2. C++ 中assert断言函数的基本用法

    在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可 ...

  3. 前端面试之JavaScript中this的指向【待完善!】

    JavaScript中this的指向问题! 另一个特殊的对象是 this,它在标准函数和箭头函数中有不同的行为. 在标准函数中, this 引用的是把函数当成方法调用的上下文对象,这时候通常称其为 t ...

  4. 一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细

    一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细

  5. http://golang.org/s/better-linker

    http://golang.org/s/better-linker The original linker was also simpler than it is now and its implem ...

  6. 数位dp 笔记

    目录 数位dp 笔记 解决的问题 & 主体思想 入门 -- windy数 绕一个弯 -- 萌数 the end? -- 恨7不成妻 小心细节 [SDOI2016]储能表 复杂度起飞 [AHOI ...

  7. 微信小程序--使用云开发完成支付闭环

    微信小程序--使用云开发完成支付闭环 1.流程介绍 2. 代码实现和逻辑思想描述 云函数统一下单 对应云函数 unipay [CloudPay.unifiedOrder] 函数思路 : 调用云函数封装 ...

  8. Java——接口、匿名类

    接口语法 public interface Demolnteface{ public void demo(): //其他方法 //所有方法都是抽象的 } 接口里放: 1.静态常量 (一般全部大写) 2 ...

  9. JVM 线上故障排查

    JVM 线上故障排查 Linux 1.1 CPU 1.2 内存 1.3 存储 1.4 网络 一.CPU 飚高 寻找原因 二.内存问题排查 三.一般排查问题的方法 四.应用场景举例 4.1 怎么查看某个 ...

  10. Windows操作Redis及Redis命令

    Windows操作Redis及Redis命令 一.Windows下操作Redis 设置密码 打开redis服务 Windows 下的redis命令行 二.redis常用命令大全 key String ...