![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OS
文章平均质量分 73
weixin_51187533
这个作者很懒,什么都没留下…
展开
-
2021-08-05hit-oslab1操作系统的引导
一、背景知识1、引导启动程序分为三个部分(bootsect.s / setup.s / head.s)2、80x86结构的CPU在开机启动后,位于0xFFF0处的ROM-BIOS带电自检,检测和诊断相关硬件(不清楚是哪些硬件),并且在物理地址的起始地址0处设置和初始化中断向量(中断服务程序的入口地址。中断:在运行程序时出现异常和特殊的请求的时候,停止运行程序,转而去处理这些特殊的请求,处理完成后回到中断开始的地方接着去处理请求)。然后将可启动设备(软驱或者磁盘)的0扇区0磁道(512字节)的内容读入内原创 2021-11-18 16:39:04 · 373 阅读 · 0 评论 -
2021-08-19hit-oslab3进程运行的轨迹跟踪和实验统计
具体实现1、先挂载硬盘,在/hdc/usr/root/下创建process.c文件,文件的内容为:#include <stdio.h>#include <unistd.h>#include <time.h>#include <sys/times.h>#include <sys/types.h>#define HZ 100void cpuio_bound(int last, int cpu_time, int io_time);原创 2021-08-23 11:15:16 · 323 阅读 · 0 评论 -
2021-08-11hit-oslab2系统调用
#define __LIBRARY__#include <unistd.h>//提供对 POSIX 操作系统 API 的访问功能,在Linux网络编程中往往会用到#include <errno.h>//定义了错误码来返回错误信息的宏//#define EINVAL 22 /* Invalid argument *///Invalid argument of a function call as defined by POSIX.#include <asm/segm原创 2021-08-22 09:23:02 · 295 阅读 · 0 评论 -
2021-07-31信号量
问题导入:1)信号量是什么?2)为什么需要信号量?1、信号量一个整值对象,可以表示不同的状态,比如资源的数量,等待获取资源的进程的个数(此时的信号量为负数)。通常用sem来表示。2、通过信号量以及P/V操作来实现临界区的互斥互斥:进程不在同一时刻持有资源系统调用通过两个原子操作来修改信号量P操作:将sem减去1,如果sem此时小于0,则进程进入阻塞等待,否则继续。(理解:相当于进程申请使用一个资源,所以资源的数量减去一,如果小于0相当于操作系统还欠着其一个资源)V操作:将sem 加上一,原创 2021-07-31 12:05:23 · 70 阅读 · 0 评论 -
2021-07-18调度算法
调度算法为CPU调度算法,是用来帮助CPU来切换进程的算法。为什么需要调度算法?不同的进程在同一时刻有着不同的状态,处于不同状态下对于CPU的利用率是不同的,为了提高CPU的利用率,要使用合适的调度算法,使得每一个进程都能够使用CPU(这个写的不好)调度算法分为两大类:非抢占式调度和抢占式调度非抢占式调度:进程运行直到结束或者被某个事件所阻塞才转让出CPU的资源。抢占式调度:进程依然可以运行,但是必须交出CPU资源让下一个程序运行。调度指标:用于衡量调度算法在不同情况下的效率,周转周期:T周原创 2021-07-26 14:38:02 · 202 阅读 · 0 评论 -
2021-07-23虚拟内存(四)页面置换算法
页面置换算法1、页错误TLB未命中,需要查看页表,这时会检查存在位,查看页面是在物理内存还是在磁盘上。页表在磁盘上,会发起页错误。进程进入阻塞状态,控制权交给操作系统。1)若物理内存有足够的空间,直接将页面调入该空间。2)若物理内存空间不足,则挑选一些物理内存中现有的表项替换出去,需要的页换进来。这一过程需要页面置换算法减少经常使用的页面的交换,提高物理内存的命中率。2、硬件缓存的指标缓存管理的时间AMAT = P(hit)* T(M) + P(miss)* T(D)P(hit)——在缓存中原创 2021-07-24 14:34:50 · 263 阅读 · 0 评论 -
2021-07-22虚拟内存(三)页表
一、多级页表问题导入页表必须能够覆盖物理内存,只用一个页表。表项较多,非常消耗内存空间。解决方法1、更大的页将分页的数量减少,每个页所包括的物理内存空间增大2、混合方法:段页式存储管理将内存按照不同的逻辑分段(比如分成代码段,栈段,数据段)。为每个段提供页表。在虚拟地址中,有几位用于区别不同段的标号。进行地址转化的时候,先获取分段的标号。优点:未分配的空间不需要存储页表,节约了空间。缺点:1)大而稀疏的堆加大了内存空间的浪费。(不明白)2)外部内存碎片增多。(不理解这个,个人觉得原创 2021-07-22 22:32:28 · 564 阅读 · 0 评论 -
2021-07-21虚拟内存(二)TLB
问题:页表放置在内存当中,每次从内存中获取指令的时候,如果从页表中获取地址,速度会较慢,因为页表存储在内存当中,访问页表需要额外的时间。所以在微处理器中加入一种cache,叫做TLB(Translation Lookaside Buffer),用来存储最近访问的页表的映射信息。1、如何访问TLB?利用了程序时空的局部性,同一个程序在同一段时间内访问的页表较为集中。2、如何处理TLB未命中?1)硬件处理:硬件能够知道页表在内存中的位置,遍历页表,获取所需的表项,更新TLB。2)软件处理:原创 2021-07-21 14:51:33 · 603 阅读 · 0 评论 -
2021-07-19虚拟化内存(一)
虚拟化内存要达到的三个目标1、效率。早期由一个程序独占全部的内存,上下文切换的时候要将当前所有的状态(寄存器中的数据,代码段,数据段,堆栈段等)移入磁盘,将磁盘上其他的程序移入到内存中去。磁盘和内存中交换数据的效率较低。因此在进行程序切换的时候依然将程序有关的数据保存在内存当中。2、易于使用。将分散的物理地址抽象成一大快给程序的连续的地址,便于程序的使用。3、保护。不同的程序不能将数据存储在同一块内存里面防止被覆盖,禁止程序访问其他程序所在的内存空间。C语言中的内存接口——通过此来了解、分配和回收内原创 2021-07-21 14:07:21 · 80 阅读 · 0 评论