操作系统(二)

超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军) 实验二 操作系统的引导 哈工大李治军 超级详细的汇编代码,一字一句带你解读源码 实验前必看 阅读详情

1, 关于指令和寄存器

CPU 包括CISC(复杂指令计算机)和RISC(简单指令计算机)

 

2,中断机制

CPU 都提供对中断机制的支持,包括基于中断类型的中断向量表,基于中断级别的中断响应和中断屏蔽机制等等。

(1)Intel CPU

Intel CPU 的中断向量表共有256个中断向量和中断描述,中断向量表的大小为1KB~2KB,位于物理内存的前1KB/前1MB,但理论上可以位于物理内存的任何位置,其基地址由IDTR寄存器指定。每个中断向量或中断描述符占4B~8B,其内容为中断处理程序入口地址(例如段基地址和段内偏移地址及特权级别标志等)。

在Inter体系结构中,中断(interrupt)是指一个异步事件,典型地被I/O设备所触发。中断包括两种:1)外部(硬件产生的中断):例如外设产生的中断等;2)软件产生的中断(INT n)。中断在中断向量表中的中断号为2和32~255。

异常是一个同步事件,当处理机在一条指令执行时查到一个或多个预定义的条件(错误时)产生。异常有3种类型:错误(fault),陷入(trap),中止(abort)。错误是通常可以被修正的异常中断,一段修正,允许程序继续执行。中止是指这样的异常:它不总报告引起异常的那条指令的具体位置,不允许程序继续执。中止用于报告严重错误,陷入是在EFLAGS中的TF=1时每执行一条指令后便产生一次的异常。

异常主要包括3类:1)CPU 查到的程序错误:除法错,无效指令,无效TSS,段不存在等等。2)软件产生的异常:3)机器检测测异常。

(2)MIPS CPU

中断和异常的概念在MIPS中与Intel中大不相同。MIPS 中的异常,是Intel 中所述的中断概念的概念范围。当一条指令有多个异常发生时,只有优先级别高的异常才会被报告。另外,与Intel 有很大不同的是,MIPS中没有中断向量表和异常向量表的概念。异常向量的地址是固定在硬件电路中。

(3) 保护机制

CPU 都设有保护机制,以防止低优先级的用户程序越权执行或越权访问数据。典型的保护机制是两态划分(用户态和核心态),但有些CPU划分得更细。其中,MIPS的CPU有3种运行方式,用户态(user mode),管理态(supervisor mode),核心态(kernel mode)。管理态是为分层交换系统设立的,真正的核心在核心态下运行,而操作系统的其它部分是在管理态下运行的。Intel 系列的CPU提供2~4个特权级别,特权指令是指只能在特权级0执行的指令,这些指令在更低特权级执行会产生异常中断。Intel 体系结构中有16条特权指令。

 

3 进程的三态转换分析

1)进程正在使用CPU——运行态或执行态(run);进程正在等待I/O完成(或其他事情发生)

2)不在使用也不能使用CPU——等待态(wait)

3)进程不在使用CPU,但已准备好使用CPU(不在等待I/O或其他事件)——就绪态或称可运行态。

进程状态切换的几种情况和原因;

运行态——>等待态:当前进程需要等待某类事件的发生。在该事件发生前无法运行下去,如等I/O结束或者结束任务进程的信号。在转换过程中,发生进程切换,当前进程切换为等待状态,并置入等待队列。 发生进程切换,   其他进程由就绪态转入运行态。

等待态——>就绪态:当前等待的事件发生了,由中断导致。该进程改为就绪态,并置入调度队列。 该状态改变过程中不发生进程切换,也不引起其他进程的状态切换。

就绪态——>运行态:该进程被调度选中了,该进程改为运行态,并从调度队列中去掉。该状态改变不发生进程切换和引起其它进程切换。

运行态——>结束:

建立——>就绪态:

建立——>运行态:

一个问题:进程切换可能在用户态下发生么?

答案是不可能,只有在以系统调用或中断方式进入操作系统后,才可能需要和可能进行进程切换。

进程线程之间的同步生产者消费者信号量读者写者写者优先 1。生产者消费者问题(信号量+mutex) 参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。 可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。 2。用信号量和mutex方式实现睡觉的理发师问题 3。读者写者问题 教材和相关的阅读材料中对读者写者问题算法均有描述,但这个算法在不断地有读者流的情况下,写者会被阻塞。编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号量作为同步互斥机制。 立即下载

相关推荐

操作系统实验二:进程、线程之间的同步

1。生产者消费者问题(信号量+mutex) 参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。 可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。 2。用信号量和mutex方式实现睡觉的理发师问题 3。读者写者问题 教材和相关的阅读材料中对读者写者问题算法均有描述,但这个算法在不断地有读者流的情况下,写者会被阻塞。编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号量作为同步互斥机制。

操作系统实验二

操作系统实验二报告 Y,xj 一,进程树寻找 实验要求:打开一个vi进程。通过ps命令以及选择合适的参数,只显示名字为vi的进程。寻找vi进程的父进程,直到init进程为止。记录过程中所有进程的ID和父进程ID。将得到的进程树和由pstree命令的得到的进程树进行比较 实验步骤: (一) 使用PS命令查询父进程 使用ps -ef命令 显示所有进程 寻找vi的父进程 根据以上三个...

weixin_41521186的博客 1032

采用信号量法解决生产者消费者问题

采用信号量法解决生产者消费者问题代码及说明性文字

操作系统作业二

中断处理程序执行时钟中断处理逻辑决定执行进程B,从陷阱中返回;(2) CPU总时间为 80ms,D1、D2总时间为 90ms。P1 在 80ms时结束,P2、P3在 90ms时结束。操作系统启动时,先初始化陷阱表;初始化完成后,开启中断计时器;按顺序先执行进程A;

ICEEBBING的博客 282

生产者消费者问题(信号量)(linux)实现代码

参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。

C++信号量使用

C++使用信号量对共享资源进行互斥访问,多用于进程间的互斥访问。

操作系统原理试题三(二)

7.(判断题,1.0分)Signa1操作是对信号量执行减1操作,减1后如果信号量的值小于零,则当前进程变为阻塞状态。Signal操作是对信号量执行减1操作,减1后如果信号量的值小于零,则当前进程变为阻塞状态。同一进程中的线程共享相同的地址空间,它们的区别在于线程有自己的栈空间和局部变量。10.(判断题,1.0分)采用多道程序设计的系统中,系统的程序道数越多,系统效率越高。多道程序系统需要管理多个程序的上下文切换,系统开销比单道程序系统大。1.(多选题,4.0 分)下列关于进程和线程的叙述中,错误的是()。

duibuqiwoshijing的博客 958

华南理工大学操作系统实验:生产者消费者问题

参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。 可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。

操作系统实验二-16281141

qq_41936609的博客 158

C例子:信号量同步线程

该程序是我写的博客“一起talk C栗子吧(第一百一十四回:C语言实例--线程同步之信号量二)”的配套程序,共享给大家使用

实验二:线程的同步

操作系统实验 线程的同步 深入理解线程与进程的概念,在Windows环境下何时使用进程,何时使用线程?

操作系统实验二 进程创建

第二次PS命令显示有1个名字中含有os2-2的程序,状态为S+,可以看出,这个进程和第一次ps命令的第三行是同一个名字,这行的意思是我们查询的grep命令本身。让子进程和父进程并发同时在每个进程中显示其子进程与父进程的PID号。问题1:程序中红色部分的作用可以让执行该语句的进程等待一秒钟后继续执行,当不添加改语句时程序的运行结果是什么?加上sleep(1)后,程序会等待1秒,将CPU让给其他线程,但是不会释放锁,因此sleep(1)后自动恢复。(1)显示所有进程,找出使用当前进程的进程ID号,查看其状态。

xl_xaio的博客 4161

生产者消费者问题和先来先服务算法

操作系统,生产者消费者问题和先来先服务算法,java语言编写。

操作系统实验二——时间片轮转

实验原理 时间片轮转算法: q = 1和q = 4时进程的周转时间 流程图 时间片轮转过程: 流程图: 源程序 #include <iostream> #include <string> #define MAX 20 using namespace std; //进程数据结构 struct PCB { string name; int arrive; int need;

风华正茂百花洲 6799

使用信号量实现有限缓冲区的生产者和消费者问题及读进程具有优先权的读者和写者问题

使用信号量实现有限缓冲区的生产者和消费者问题 使用信号量实现读进程具有优先权的读者和写者问题 实验报告(内容、环境、遇到的问题及解决、源代码、流程图、总结) 源代码

STC8H开发(十六): GPIO模拟SPI驱动Ci24R1实现低成本无线遥控

本文详细介绍了如何使用STC8H单片机通过GPIO模拟SPI驱动Ci24R1无线模块,实现低成本无线遥控方案。内容涵盖硬件设计要点、软件驱动开发技巧及实战优化经验,特别适合消费电子产品开发者参考。Ci24R1凭借其高性价比和双模协议支持,成为替代传统nRF24L01+的理想选择。

weixin_30378623的博客 349
上一篇: 操作系统教程--原理和实例分析
下一篇: 操作系统(四)
starshift
博客等级 码龄21年 66粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值