操作系统 part4
1、操作系统的启动
CPU加电后,执行BIOS(基本IO处理系统)。BIOS会进行硬件的自检和初始化,然后把加载程序(BootLoader)从磁盘上的引导扇区中加载到指定位置0x7c00。然后控制权交给加载程序,加载程序将操作系统的数据和代码加载到内存,然后把控制权交给操作系统。
2、系统调用、异常、中断
中断:
- 硬件产生中断标记
- 保存当前处理状态,保存现场
- 根据中断,进行中断服务程序处理
- 清除中断标记
- 恢复之前保存的处理状态
异常:
- 得到异常编号
- 异常处理(杀死异常程序、重新执行异常指令)
- 恢复现场
开销:
- 切换内核态用户态时间上的开销
- 建立中断/异常/系统调用号与对应服务例程映射关系的初始化
- 建立内核堆栈
- 验证应用程序的参数
- 内核空间数据拷贝到用户空间的开销
3、内存分配算法
1.首次适配算法(First Fit):
空闲区按地址从低到高排序,找到第一个不小于请求空间的内存块,分割并分配出去。
优点:简单,快速
缺点:易产生外部碎片
2.最优适配算法(Best Fit):
按照空闲块的大小进行排序,找到一个最适合的空闲块,分割并分配出去。
优点:简单,当大部分分配是小尺寸时很有效
缺点:外部碎片,重分配慢
3.最差分配算法(Worst Fit):
按空闲块大小排序,每次找到最大的空闲块,分割并分配出去。
优点:快,分配的是中等尺寸效果很好
缺点:外部碎片,重分配慢,先破碎大的空闲块以致大分区无法被分配
4、连续内存分配中的碎片整理
压缩
实现:移动分配给程序的内存分区,以合并外部碎片。
条件:程序可以动态重定位(使用绝对地址移动后出错);压缩的时机,选择等待的进程。
开销:频繁地在内存进行拷贝,开销也会变大。
交换
实现:抢占等待的程序,回收他们的内存,把这些进程的数据等等放到外存。
开销:在内外存交换数据,磁盘的IO读写很慢,开销很大。还要考虑交换哪些程序。
参考文献:
操作系统 part4的更多相关文章
- 秋招C++面试相关总结索引
C++相关 C++ part1 C++ part2 C++ part3 C++ part4 C++ part5 C++ part6 C++ part6.5 C++ part7 C++ part8 C+ ...
- [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...
- 操作系统篇-调用门与特权级(CPL、DPL和RPL)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...
- 操作系统篇-分段机制与GDT|LDT
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...
- 操作系统篇-hello world(免系统运行程序)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...
- Linux实战教学笔记03:操作系统发展历程及系统版本选择
标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
- ucos实时操作系统学习笔记——任务间通信(队列)
ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的 ...
- ucos实时操作系统学习笔记——任务间通信(信号量)
ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代 ...
随机推荐
- Linux定时任务crontab通俗易懂简单扼要地解析
1.安装crontab 在配置好yum源的情况下,直接执行如下命令即可: yum install crontab 2.查看当前环境上已经有的定时任务有哪些? 执行如下命令即可 crontab -l 如 ...
- Cisco发现协议
CDP Cisco Discovery Protocol: 思科发现协议 是一个提供关于直接相连的交换机.路由器和其它Cisco设备的综合信息的专有工具 CDP 能够发现直接相邻的设备而不管这些设备所 ...
- Vue之事件绑定
Vue事件绑定 点击事件 @click="事件名" or v-on:click="事件名" 结构部分: <el-button type="pri ...
- 前端面试之HTML5的新变化
前端面试之HTML5的新变化 H5新增语义化标签 头部标签 <header> :头部标签 <nav> :导航标签 <article> :内容标签 <secti ...
- js12种应该注意的地方
1. == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前一组,永远只使用===和!==.因 ...
- 通过 profiling 定位 golang 性能问题 - 内存篇 原创 张威虎 滴滴技术 2019-08-02
通过 profiling 定位 golang 性能问题 - 内存篇 原创 张威虎 滴滴技术 2019-08-02
- UI自动化测试实战
前言 前面我们已经搭建好了wordpress网站,如果需要查看运行效果可以看我前面的搭建文章,下面我们来进行自动化测试的练习. 示例 首先我们测试自动登陆 import unittest from s ...
- 某商城系统(V1.3-2020-01-10)前台命令执行漏洞
漏洞文件: ./inc/module/upload_img.php 先跟进 del_file 函数: 在 del_file 函数中首先执行了unlink操作,然后接着进行了file_exists 判断 ...
- jackson学习之五:JsonInclude注解
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- java 去掉重复的数字
public static void main(String[] args) { String s="1,2,2,2,2,2,3,3,3"; String[] array = s. ...