![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 94
刘心奶黄包qaq
这个作者很懒,什么都没留下…
展开
-
哈工大操作系统——第七章、换入换出用磁盘和时间来换取一个规整的虚拟内存
通过虚拟页面的换入/换处机制呢,就实现了每个虚拟内存中的页面都能正确的映射到物理内存当中,具体是什么意思呢?当物理内存中为空时,当然虚拟页面可以直接建立映射,但是当物理内存中不足以映射一个虚拟页面时,就需要将一个最近时间内最少用到的程序(其实应该是程序的一部分)换出物理内存,腾出空间来再将虚拟页面换入。 首先当MMU发现虚拟页面在页表项的有效位为0时开始,这个时候MMU会向CPU发出缺页中断,缺页中断的调用号为14。原创 2023-10-25 09:16:25 · 138 阅读 · 1 评论 -
哈工大操作系统——第六章、内存管理——给程序执行提供一个舞台
用户常常要求程序能以分段的方式出现。就是将代码段、数据段、栈段、函数库这些分开实现,即数据存放在数据段中,操作部分对应代码段,函数嵌套在栈段中实现。这些段都从0地址开始单独编址。 我们看到,这些段都从0地址开始单独编址,但是0地址处最多只能有一个程序,所以一定是需要重定位的,段的重定位我们引出段表的概念。段表是在程序各个段申请内存空间时形成的。 分页就是将物理内存分割成大小相等的页框,将请求放入物理内存的段也分割成同样大小的页,最后将所有的页都映射在页框上,完成物理内存页框的使用。原创 2023-10-22 17:00:56 · 181 阅读 · 1 评论 -
哈工大操作系统第五章——进程同步
就拿这个最最基础的模型举例,什么是生产者,显而易见是产生资源的部分,消费者是消耗资源的部分,那么如何让生产者产生的资源不过剩,消费者消耗的资源不超额呢,这就需要考虑如何**“同步”**——即,互相不可见的两部分的相互配合配合 信号量是在信号上关联的一组整数,可以根据这个整数来决定进程的阻塞或唤醒。 更具体一点点 (1)信号量就是一个整型变量,用来记录和进程同步有关的重要信息 (2)能让进程阻塞睡眠到这个信号量上。原创 2023-10-17 07:44:20 · 63 阅读 · 0 评论 -
哈工大操作系统实验四--基于内核栈完成进程的切换(理论分析)
执行切换TCB/TSS**(由于本实验要求使用内核栈来切换,那么我们就需要把schedule函数的根据TSS的切换方式,改为根据PCB的切换方式)** ,切换完成后,遇到函数的**}**,即执行ret指令,将栈顶的ret_from_sys_call函数地址弹出,然后执行该函数。进程切换以后,现在的栈顶指针指向的是切换以后的内核栈栈顶,要退出内核态进入用户态首先要做的就是恢复用户态的执行现场,就是一系列pop,然后调用iret弹出用户栈的基本信息,即cs:eip\ss:esp,显然就回到了用户态了。原创 2023-10-14 17:46:01 · 168 阅读 · 1 评论 -
哈工大操作系统学习——第三章、多进程——操作系统最核心的视图
并发就是多个程序同时开始进行,并且他们可以交替进行,当一个程序遇到I/0时,就跳转到另一条程序执行,当这条程序又遇到I/O时,再返回源程序执行。当然在这种跳转中,我们需要保存源程序的关键信息(寄存器的值)这就引出了进程的概念进程就是用来描述一个程序以及其执行过程中的信息的概念进程是描述程序以及反应程序执行信息的数据结构的总和这个数据结构叫做进程控制块**(PCB)**原创 2023-10-10 07:10:57 · 71 阅读 · 1 评论 -
哈工大操作系统--第二章、系统接口——通向操作系统内核的大门
操作系统提供的一些关键函数而普通c代码+关键函数,就构成了连接应用程序和操作系统的关键所在。原创 2023-10-09 20:07:12 · 65 阅读 · 1 评论 -
HIT操作系统学习——系统启动背后的故事
我们看ss和sp这是什么意思呢,由代码可以看到,ss=0x9000,sp=0xFF00,组合ss是栈的地址,而sp是栈顶指针的地址,也就是压栈的时候数值压到0x9FF00的地址处,FF00H转化为十进制非常大,是65280,即偏移量为65280个字节,sp的地址其实就是选取了一个距离要操作的地方的一个比较远的位置,防止对操作位置的数据进行修改。这是很重要的,因为后边的操作还需要用到这些信息,必须确保不会被改变,然后pop操作将存储的寄存器数据重新弹出到寄存器内,注意这里是和压栈时相反的顺序,因为栈的特性。原创 2023-10-05 19:04:30 · 82 阅读 · 0 评论