OS
文章平均质量分 89
Azhemaker
这个作者很懒,什么都没留下…
展开
-
文件使用磁盘的实现
sys_write()file_write()create_block()盘块记录在inode->izonem_inode(设备文件)总结原创 2020-05-28 14:24:03 · 227 阅读 · 0 评论 -
生磁盘到文件,目录与文件系统
键盘是输入设备,所以键盘中断处理程序里面对应着inb。原创 2020-05-27 20:54:27 · 388 阅读 · 0 评论 -
IO与显示器、键盘
外设的工作:外设的寄存器的地址、内容格式都不统一,操作系统要给用户一个简单的视图方便管理 ——文件视图驱动外设概括起来就是:创建文件视图,CPU向外设发出指令(out指令),外设执行完毕后发出中断,再读数据到内存。一段操纵外设的程序在 linux 中一切设备皆文件。文件视图printf()wirte()是系统调用,调用sys_write(),传入参数为文件指针fd等于一,为显示,以及缓冲区buf。系统初始化时init()打开了终端设备,dup()是复制,tty0是终端设备。o.原创 2020-05-27 16:49:42 · 441 阅读 · 0 评论 -
内存管理
计算机如何工作?将程序进入内存C函数编译成汇编程序后,执行:1.原创 2020-05-27 00:45:23 · 212 阅读 · 0 评论 -
死锁处理
若将执行顺序换成红字的顺序:Producer:执行P(mutex) mutex 1->0执行P(empty) empty 0->-1 阻塞Consumer:执行P(mutex) mutex 0->-1,阻塞Producer 脱离阻塞需要先执行Consumer: V(empty),在执行之前又依赖于P(full),P(full)的执行需要 Consumer 脱离阻塞,Consumer 脱离阻塞需要执行Producer: V(mutex),执行Producer: V(mute.原创 2020-05-25 18:12:53 · 228 阅读 · 0 评论 -
进程同步与信号量、信号量临界区保护、信号量代码实现
生产者-消费者实例当生产者发现 counter == BUFFER_SIZE 生产者等待(阻塞)当消费者发现 counter == 0 消费者等待(阻塞)存在问题:只用counter做判断,在图中情况下会导致P2不会被唤醒。应该需要另一量(信号量)考虑记录有多少进程阻塞等信息,并进行判断。信号量当 sem < 0表示 sem 有多个进程在等待当 sem > 0 表示有空闲B,有2个资源可以使用信号量的定义queue代表阻塞队列V()的模型:V(semapho原创 2020-05-25 17:03:47 · 354 阅读 · 0 评论 -
CPU的调度和schedule()
目录CPU调度策略调度算法:First Come, First Served(FCFS),先来先服务缩短周转时间:短作业优先(SJF)缩短响应时间:时间片轮转调度算法的选择:一个实际的 schedule() 函数`counter`第一个作用:时间片`counter`第二个作用:优先级`counter`总结CPU调度策略CPU调度即在就绪队列中,通过调度选择下一个执行的任务。调度算法:尽快结束任务:周转时间(从任务进入到任务结束)短用户操作尽快响应:响应时间(从操作发生到响应)短系统内耗时间少原创 2020-05-23 21:17:12 · 1707 阅读 · 0 评论 -
内核级线程实现
进入中断在 main()中:首先在A()函数中系统调用fork(),将B()的地址压入用户栈。fork() 引起中断0x80,进入内核。执行int 0x80时,还未进入内核,首先找到内核栈,压入当前栈地址(即用户栈);压入当前CS:IP(用户态)(ret = CS:IP)进入内核,执行system_call。进入内核刚进入内核,首先在内核态中的各种寄存器压到栈中,即保护现场。执行sys_fork(),继续向下执行state(%eax)相当于state + _curre原创 2020-05-21 14:34:46 · 663 阅读 · 1 评论 -
用户级线程和内核级线程
用户级线程一个浏览器的模型:两个执行序列与一个栈的弊端:Yield()是一个切换函数,在线程切换中,我们需要像Yield()这样的函数允许B->C->D并直接返回 ->B,否则只能逐层调用返回,这不是线程切换想要的结果。这种情况如果我们希望用Yield()从D返回到B,即直接跳转到204,但当函数返回时(ret指令),我们发现此时栈已经乱了,ret将会导致意外,会使程序跳转到404.从一个栈到两个栈如果使用两个栈,那么我们自然需要在Yield()中切换栈,把栈顶指针存入原创 2020-05-19 01:21:17 · 422 阅读 · 0 评论 -
四:进程运行轨迹的跟踪与统计
目录实验目的实验内容实验步骤打开log文件预备:Linux 的进程初始化打开 log 文件写log文件寻找状态切换点预备:Linux 的进程运行状态进程的新建(N)及由新建(N)切换到就绪(N)状态实验目的掌握 Linux 下的多进程编程技术;通过对进程运行轨迹的跟踪来形象化进程的概念;在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调...原创 2020-04-15 23:11:56 · 915 阅读 · 0 评论 -
三、系统调用及实验
保护机制:将内核程序与用户隔离特权级特权级检查系统调用进入内核的方法系统调用的核心实现保护机制:将内核程序与用户隔离特权级处理器有硬件设计的保护机制,共4个特权级(0级到3级)。数值越大,权限越低。 可以用圆环表示为:为了检测特权级,有三种值:当前特权级 CPL(Current Privilege Level)。这是CPU当前执行程序或任务的特权级。存放在 CS 和 SS 寄存器的...原创 2020-03-17 13:47:55 · 501 阅读 · 0 评论 -
二、操作系统的引导及实验
本实验课程是通过在一个小Linux(Linux 0.11)上针对操作系统的各个模块开展的深入实践,同时本课程也是为网易云课堂李治军老师《操作系统之基础》、《操作系统之进程与线程》等四门课程的配套实验课。原创 2020-03-06 00:50:15 · 1342 阅读 · 1 评论 -
实验一: 配置HIT-oslab实验环境
慕课网: http://www.feemic.cn/mooc/icourse163/1002692015#。百度云链接:https://pan.baidu.com/s/1h2aEk6A_DGpXkZvRtNmeUw 提取码:qoll配套实验课:https://www.shiyanlou.com/courses/115实验楼自带linux实验环境,但因为我曾经装了vmware+ubuntu ...原创 2020-02-29 19:18:51 · 2578 阅读 · 5 评论