操作系统 part2
一、程序的内存结构
运行时,程序分为:text段、data段、BSS段(2个合称数据段)、堆、栈。
text段:代码段,静态分配内存,只读。
data段:初始化的非零全局变量、静态变量。
BSS段:未初始化或者零值的全局变量、静态变量。
堆:由低地址往高地址生长,系统用链表存储,地址不连续。由程序员申请分配和释放。
栈:由高地址往低地址生长,连续的内存区域。编译器自动释放。
二、死锁
1、概念
两个或以上进程,因为抢夺资源而出现了相互等待的现象,若无外力,他们都无法继续推进下去。
2、死锁条件
- 互斥条件:一个资源只能被一个进程使用;其他进程想使用得等待。
- 请求和保持条件:一个进程因请求资源而阻塞,不会释放已有资源。
- 不可抢夺条件:进程以获得的资源,在进程结束前不能抢夺。
- 循环等待条件:若干进程之间形成了头尾相接的等待资源的关系。
3、预防策略
- 实行资源静态分配(破坏请求和保持):进程要运行必须一次性申请到所有资源。缺点:进程的资源难以预知,资源利用率低。
- 允许进程抢夺某些资源(破坏不可抢夺):当进程占有一部分资源并且申请不到新的资源的时候,必须释放已有资源。缺点:降低系统性能。
- 实行资源有序分配(破坏循环等待):对资源排序编号,进程对资源的请求必须按照资源序号递增顺序提出,也就是说只有申请到了编号小的资源才能继续申请编号大的资源。
4、避免策略
银行家算法:允许进程动态的申请资源,但在系统分配资源之前,应先计算此次分配的安全性,若分配导致不安全,则不分配。
想要分配,需要满足以下条件:
- 申请资源\(\le\)系统拥有的资源
- 申请资源\(\le\)进程需要的资源
- 满足安全性。
安全性算法:
剩下的系统资源能够满足让所有的未完成的进程都能完成,则安全。
4. Finish[ i ] = false; //进程未完成
5. Need <= Work
6. 进程执行完毕
7. Work = Work + Allocation
8. Finish [ i ] = true
9. 返回继续执行 1 ,寻找其他的进程分配资源
10. 若所有的 Finish 为 true 则安全
5、鸵鸟策略
无视死锁的发生。
原因:死锁发生的概率很低,解决死锁的代价很大。
操作系统 part2的更多相关文章
- 秋招C++面试相关总结索引
C++相关 C++ part1 C++ part2 C++ part3 C++ part4 C++ part5 C++ part6 C++ part6.5 C++ part7 C++ part8 C+ ...
- Linux内核分析——操作系统是如何工作的
万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...
- [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...
- 自动化测试 Appium之Python运行环境搭建 Part2
Appium之Python运行环境搭建 Part2 by:授客 QQ:1033553122 实践环境 参见 Appium之Python运行环境搭建 Part1 环境部署 1.安装Android SDK ...
- MySQL数据库之part2
一.索引原理与慢查询优化 一.介绍 1.为何需要有索引 一般的应用系统,读写比例是10:1左右,而且插入操作和一般的更新操作很少出现性能问题.在生产环境中,我们遇到最多的.也是最容易出问题的还是一些负 ...
- 12-Factor与云原生Part2
12-Factor与云原生Part2 12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用声明式格式来搭建自动化,从而使新的开发者花费最少的学习成本加入这个项目 和底层操作系统保持简洁 ...
- 操作系统篇-调用门与特权级(CPL、DPL和RPL)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...
- 操作系统篇-分段机制与GDT|LDT
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...
- 操作系统篇-hello world(免系统运行程序)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...
随机推荐
- JDBC代码的优化
JDBC代码简化以及PreparedStatement和Statement接口 抽取 JDBC的Bug sql语句可以拼接导致登录功能中如果用户名或者密码中出现'or'2'='2则一定可以登录的bug ...
- windows上传ipa到苹果开发者中(app store)的方法
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...
- 前端面试之CSS常用的选择器!
前端面试之CSS常用的选择器! 标签选择器 <style> /* <!-- 标签选择器 :写上标签名 -->*/ p { color: green; } div { color ...
- 解决Linux下mysql区分大小写的问题
1.查看lower_case_table_names的值,0代表区分大小写,1代表不区分大小写. 通过命令:SHOW VARIABLES LIKE 'lower%'; 1. 解决方法 以root用户登 ...
- etcd 性能优化实践
https://mp.weixin.qq.com/s/lD2b-DZyvRJ3qWqmlvHpxg 从零开始入门 K8s | etcd 性能优化实践 原创 陈星宇 阿里巴巴云原生 2019-12-16 ...
- Treap——堆和二叉树的完美结合,性价比极值的搜索树
大家好,今天和大家聊一个新的数据结构,叫做Treap. Treap本质上也是一颗BST(平衡二叉搜索树),和我们之前介绍的SBT是一样的.但是Treap维持平衡的方法和SBT不太一样,有些许区别,相比 ...
- MySQL安装+初始化操作(1)
先去官网下载自己适合的版本,在这里我选择下载Windows 64位版本的,这是下载地址. 1.下载MySQL,步骤①==>步骤② 2.下载后,解压到除系统盘(C盘)之外的其他盘中 3.解压后在b ...
- Java面试(解答题一)
1.简述下列问题 List,set,map的区别 解答:List,Set都是继承自Collection接口,Map则不是: List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素 ...
- Java 8新特性(Lambda,Stream API)
由于最近总监要求学习Java 8的一些知识,就去网上找了 一套教程来学习学习,将学习结果做一个小的总结记录,方便以后使用: 1.Java 8的优点 2.Lambda表达式优点 2.1Lambda实例 ...
- servelet 实现Post接口访问
先上代码: package com.jovtec.galaxy.mailbox; import java.io.BufferedReader; import java.io.IOException; ...