先补充出
进程P1:
do
{
while (turn!=1);
进程P1的临界区代码;
turn=0;
。。。;
}while(true);
这是软件实现临界区互斥的一个算法
可以这么理解
首先
在程序的开头声明了int turn=0;
P0跟P1进程同时运行
进程P0可以运行到
while (turn!=0);这一语句
进程P1是跟进程P0同时运行的,P1进程也会执行到
while (turn!=1);这一语句
由于turn的初始值是0
那么P0中这一while语句会因为不满足循环条件而终止。这样就可以进入P0的临界区代码了
此时P1中这一while语句会因为满足循环条件而陷入死循环,那么P1进程就会卡在死循环这,无法进入临界区。
while的作用就是制造死循环来限制进程进入临界区对临界资源的访问,来实现互斥。
//整个程序以伪代码形式给出,当做一个提示吧,这样你同学就应该有思路了
//程序中有注释部分和需要他自己完善的部分,我给的是框架
//老师只是要求用C程序模拟这个机制来实现,就是通过你所学的知识模拟一个效果即可
//利用P,V *** 作使得在同一时刻,生产者和消费者只能有一个对存储区 *** 作(即临界区)。
//如果两者同时对存储区 *** 作,即同时取和生产的话,必定会有一个等待,当另一个完成 *** 作后自己才会被唤醒。
//生产者在存储区满时不能再生产,进入等待,消费者同理
//完成同步互斥效果
//希望对你朋友有启发
/----以下为代码部分-----/
//定义全局变量
int empty = 1;//信号量表示存储单元空,可以生产产品
int full = 0;//信号量表示存储单元空,不可以消费产品
//P *** 作
void P(int &mutex)
{
mutex--;
if(mutex<0)
{
//当前进程挂起的程序实现
}
}
//V *** 作
void V(int &mutex)
{
mutex++;
if(mutex <=0)
{
//唤醒等待中的进程程序实现
}
}
//生产者程序
void producer()
{
P(& empty);//若此时存储区空,则可以生产,否则程序挂起等待
//生产一个产品 *** 作
V(&full);//通知消费者进程,可以取产品
}
//消费者程序
void consumer(){
P(&full);//若此时存储区不空,则可以取产品,否则消费者程序挂起等待
//取走一个产品 *** 作
V(& empty);//通知生产者进程可以生产
}
//主函数
void main()
{
//分别调用生产者,消费者程序,顺序不限,因为已经完成信号量的同步,若发生同步问题就会等待
producer();
consumer();
consumer();
producer();
………………
}
你要是学电子的 那你选择嵌入式吧 这个是今年嵌入式的考试大纲 呵呵别晕啊 一点一点来
嵌入式系统设计师考试大纲
一、考试说明
1、考试要求:
(1)掌握科学基础知识;
(2)掌握嵌入式系统的硬件、软件知识;
(3)掌握嵌入式系统分析的方法;
(4)掌握嵌入式系统设计与开发的方法及步骤;
(5)掌握嵌入式系统实施的方法
(6)掌握嵌入式系统运行维护知识;
(7)了解信息化基础知识、信息技术引用的基础知识;
(8)了解信息技术标准、安全,以及有关法律的基本知识;
(9)了解嵌入式技术发展趋势;
(10)正确阅读和理解计算机及嵌入式领域的英文资料。
2、通过本考试的合格人员能根据项目管理和工程技术的实际要求,按照系统总体设计规格进行软、硬件实际,编写系统开发规格说明书等相应的文档;组织和指导嵌入式系统靠法实施人员实施硬件电路、编写和调试程序,并对嵌入式系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。
二、考试范围
考试科目1:嵌入式系统基础知识
1计算机科学基础
11数制及转换
o 二进制、八进制、十进制和十六进制等常用数制及其相互转换
12数据的表示
o 数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出)
o 字符、汉字、声音、图像的编码方式
o 校验方法和校验码(奇偶验码、海明校验码、循环校验码)
13算术和逻辑运算
o 计算机中的二进制数运算方法
o 逻辑代数的基本运算和逻辑表达式的化简
14计算机系统结构和重要部件的基本工作原理
o CPU和存储器的组成、性能、基本工作原理
o 常用I/O设备、通信设备的性能,以及基本工作原理
o I/O接口的功能、类型和特点
o 虚拟存储存储基本工作原理,多级存储体系
15安全性、可靠性与系统性能评测基础知识
o 诊断与容错
o 系统可靠性分析评价
o 计算机系统性能评测方法
2嵌入式系统硬件知识
21数字电路和逻辑电路基础
211组合电路和时序电路
212总线电路与电平转换电路
213可编程逻辑器件
22嵌入式微处理器基础
221嵌入式微处理器体系结构
o 冯诺伊曼结构与哈佛结构
o CISC与RISC
o 流水线技术
o 信息存储的字节顺序(大端存储法和小端存储法)
222嵌入式系统处理器的结构和类型
o 常用8位处理器的体系结构和类型
o 常用16位处理器的体系结构特点
o 常用32位处理器的体系结构特点
o 常用DSP处理器的体系结构特点
o 多核处理器的体系结构特点
223异常
o 同步异常(陷阱、故障、终止)
o 异步异常(中断)
o 可屏蔽中断、不可屏蔽中断
o 中断优先级、中断嵌套
23 嵌入式系统的存储体系
231存储器系统
o 存储器系统的层次结构
o 高速缓存(Cache)
o 内存管理单元(MMU)
232 ROM的种类与选型
o 常见ROM的种类
o PROM、EPROM、E2PROM型ROM的典型特征和不同点
233 Flash Memory的种类与选型
o Flash Memory的种类
o NOR和NAND型Flash Memory的典型特征和不同点
234 RAM的种类与选型
o 常见RAM的种类
o SRAM、DRAM、DDRAM、NVRAM的典型特征和不同点
235 外存
o 常见外存的种类
o 磁盘、光盘、CF、SD等的典型特征和不同点
24 嵌入式系统I/O接口
241 定时器和计数器基本原理与结构
242 GPIO、PWM接口基本原理与结构
243 A/D、D/A接口基本原理与结构
244键盘、显示、触摸屏接口基本与结构
245嵌入式系统音频接口
25嵌入系统通信及网络接口
o PCI、USB、串口、红外、并口、SPI、IIC、PCMCIA的基本原理与结构
o 以太网、CAN、WLAN、蓝牙、1394的基本原理与结构
26嵌入式系统电源分类及电源原理
27电子电路设计
271电子电路设计基础知识
o 电子电路设计原理
o 电子电路设计方法及步骤
o 电子电路设计中的可靠知识
272 PCB设计基础知识
o PCB设计原理
o PCB设计方法及步骤
o 多层PCB设计的注意事项及布线原则
o PCB设计中的可靠性知识
273电子电路测试基础知识
o 电子电路测试原理与方法
o 硬件抗干扰测试
3 嵌入式系统软件知识
31嵌入式软件基础知识
311嵌入式软件的分类(系统软件、支撑软件、应用软件)
312无 *** 作系统支持的嵌入式软件体系结构(轮询、中断、前后台)
313有 *** 作系统支持的嵌入式软件体系结构
314板极支持包基础知识(系统初始化、设备驱动程序)
315嵌入式中间件(GUI、数据库)
32 嵌入式 *** 作系统基础知识
321嵌入式 *** 作系统体系结构
o 单体结构、分层结构和微内核结构
322任务管理
o 多道程序技术
o 进程、线程、任务的概念
o 任务的实现(任务的层次结构、任务控制块、任务的状态及状态转换、任务队列)
o 任务调度(调度算法的性能指标、可抢占调度、不可抢占调度、先来先服务、短作业优先算法、时间片轮转算法、优先级算法)
o 实时系统及任务调度(RMS、EDF算法)
o 任务间通信(共享内存、消息、管道、信号)
o 同步与互斥(竞争条件、临界区、互斥、信号量、死锁)
323存储管理
o Flat存储管理方式
o 分区存储管理(固定分区、可变分区)
o 地址重定位(逻辑地址、物理地址、地址映射)
o 页式存储管理
o 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法、工作集模型)
324设备管理
o 设备无关性、I/O地址、I/O控制、中断处理、缓冲技术、假脱机技术)
325文件系统基础知识
o 文件和目录
o 文件的结构和组织
o 存取方法、存取控制
o 常见嵌入式文件系统(FAT、JFFS、YAFFS)
326 *** 作系统移植基础知识
33 嵌入式系统程序设计
331嵌入式软件开发基础知识
332嵌入式程序设计语言
o 汇编、编译、解释系统的基础知识和基本工作原理
o 汇编语言
o 基于过程的语言(过程/函数、参数传递、全局变量、递归、动态内存分配、数据类型)
o 面向对象的语言(对象、数据抽象、继承、多态、自动内存管理)
o 各类程序设计语言的主要特点和适用情况
333嵌入式软件开发环境
o 宿主机、目标机
o 编辑器、编译器、链接器、调试器、模拟器
o 常用嵌入式开发工具(编程器、硬件仿真器、逻辑分析仪、示波器)
o 集成开发环境
o 开发辅助工具
334嵌入式软件开发
o 软件设计(模块结构设计、数据结构设计、内存布局、面向对象的分析与设计)
o 嵌入式引导程序的设计、设备驱动程序设计、内核设计、网络程序设计、应用软件设计)
o 编码(编程规范、代码审查)
o 测试(测试环境、测试用例、测试方法、测试工具)
o 下载和运行
335嵌入式应用软件移植
4嵌入式系统的开发与维护知识
41系统开发过程及其项目管理
o 系统开发生命周期各阶段的目标和任务的划分方法
o 系统开发项目挂你基础知识及其常用管理工具使用方法
o 主要的系统开发方法
o 系统开发工具与环境知识
42 系统分析基础知识
o 系统分析的目的和任务
o 系统分析方法
o 系统规格说明书的编写方法
43 系统设计知识
o 传统系统设计方法
o 软硬件协同设计方法
44 系统实施知识
o 系统架构设计
o 系统详细设计
o 系统调试技术
o 系统测试
45 系统维护知识
o 系统运行管理知识
o 系统维护知识
o 系统评价知识
5安全性知识
o 安全性基本概念
o 加密与解密机制
6标准化知识
o 标准化的概念
o 国际标准、国家标准、行业标准、企业标准基本知识
o 代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识
o 标准化机构
o 嵌入式系统相关标准
7信息化基础知识
o 信息化和信息系统基本概念
o 有关的法律、法规
8嵌入式技术发展趋势
9计算机专业英语
o 正确阅读和理解相关领域的英文资料
考试科目2:嵌入式系统设计应用技术
1嵌入式系统开发过程
11系统需求分析方法与步骤
12系统设计
o 系统硬件配置
o 系统功能组成分配
o 软硬件功能的分配
o 可行性验证及设计审查
o 系统规格
o 周期,成本及工作量估计
o 开发计划
13软硬件协同设计
14硬件设计
15软件设计
o 软件结构
o 设计评审
o 软件详细设计
16系统测试
o 测试环境
o 测试计划(内容、方法、标准、过程、检验)
o 硬件测试
o 软件测试(单元测试、集成测试)
o 软硬件联合测试
o 实施测试
17系统评估
18 软件维护
2嵌入式系统硬件设计
21嵌入式系统硬件基本结构
211嵌入式微处理结构与应用
212 异常及中断处理技术
213 DMA技术
214 多处理系统
o 多处理器系统特点
o 多处理器系统构建技术
215 总线架构
o 应用系统中的总线配置
216 内存种类及架构
o 存储器系统接口设计
217数字电路和逻辑电路
o 专用集成电路
o 可编程逻辑控制器件
22输入/输出接口设计
221 输入/输出接口
o 接口信号电平转换
o 接口驱动电路设计
222输入/输出接口应用技术
o 外围设备
o 串口通信
o 并口通信
o 模拟接口
o 通信接口设备
o 通信标准和协议
o 数据传输方式
23外围设备接口应用技术
231 外围存储设备
o 存储卡,记忆棒,IC卡,MMC卡,SD卡
o DVD 、CD-R 、CD-RW
232外围输入/输出设备
o 键盘,鼠标,触摸屏
o 液晶板、LED、7段数码管、蜂鸣器
233电源设计技术
24可靠性与安全性设计技术
241 错误检测与隔离技术
242 冗余设计
243 系统恢复设计
244 诊断技术
245常用安全标准
246 抗干扰设计
247电磁兼容设计
248系统加密
3嵌入式系统软件设计
31嵌入式系统软件结构设计
32嵌入式 *** 作系统应用技术
321 时间管理
o 系统时间
o 时钟中断
322内存管理
o 静态内存管理
o 动态内存管理
323任务管理和任务间的通信
o 任务间的通信机制
o 信号量
o 邮箱
o 消息队列
324异常处理
o 异常处理方法
o 中断优先级处理方法
o 系统调用
325嵌入式文件系统应用技术
326嵌入式系统图形用户接口(GUI)应用技术
327嵌入式系统数据库应用技术
33嵌入式软件设计技术
331汇编语言设计
o 数据类型
o 汇编语言程序结构
o 汇编语言程序设计及优化
o 子程序调用
332嵌入式C语言设计
o ANSI-C的数据类型
o C程序结构
o C语言程序设计及优化
o 程序的编译与链接
333面向对象程序设计与开发
o 面向对象的分析与设计方法UML
o 面向对象的编程语言
o 使用C++进行嵌入式系统开发
o 使用Java进行嵌入式系统开发
34 系统级软件设计技术
o 嵌入式系统固件与系统初始化设计
o 设备驱动程序设计
o 硬件抽象层、板级支持包设计
o 嵌入式软件的移植技术
4嵌入式系统开发技术
41系统开发环境
411开发工具
o 文本编辑器
o 汇编、编译和连接程序
o ICE和ICE监控器
o 配置管理工具
o 逆工程工具
412平台
o *** 作系统
o 分布式开发环境
413开发环境创建方法及评估
o 开发工作分析
o 开发环境的建立
o 维护、管理、使用开发环境的方法
o 开发环境的评测
42实时系统的分析技术
421实时系统的分析技术
o 结构化分析方法
o 面向对象分析方法
422实时系统的设计技术
o 结构化分析方法
o 面向对象分析方法
43硬件设计环境
431硬件描述语言
o 硬件开发设计过程
o 硬件描述语言的种类与特点
432仿真技术
o 逻辑仿真方法
o 逻辑仿真工具
433大规模集成电路系统的开发方法
o ASIC开发方法
o FPGA设计方法
o IP(intellectual property)
44协同设计
o 软硬件任务工和切调
o 设计评审
45嵌入式系统低功耗设计技术
o 低功耗系统工作机制
o 低功耗系统模型结构
o 低功耗的硬件设计技术
o 低功耗的软件设计技术
46分布式嵌入系统设计
o 分布式系统设计原理
o 分布式系统的通信技术
o 分布式系统设计应用
5嵌入式系统应用
51嵌入式系统在控制领域中的应用
52嵌入式系统在手持设备中的应用
53嵌入式系统在模式识别中的应用
三、题型举例
1、选择题
若嵌入式系统中采用I/O地址统一编址模式,访问内存单元和I/O设备是通过 (1) 来区分的。
(1) A数据总线上输出的数据
B不同的地址代码
C不同的地址总路线
D不同的指令
2、问答题
在某个嵌入式 *** 作系统中,任务的状态转换图(不完整)如下,请阅读该图以及下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
〔说明〕
任务总共有五个状态:休眠状态、就绪状态、运行状态、中断服务状态和等待状态,在任何时候,一个任务只会处于其中的某一个状态。
〔问题1〕(3分)
在单个CPU的系统中,处于运行状态的任务最多有多少个
〔问题2〕(3分)
对于运行状态、就绪状态和等待状态这间的相互转换,图中并没有画出来,请补充。用文字处理的形式来进行描述,格式形如"运行状态→中断服务状态"。
〔问题3〕6分)
从运行状态可以直接变为等待状态吗?如果不能为什么?如果能什么时候会发生这种转换?举例说明。
〔问题4〕(3分)
从就绪状态可以直接变为等待状态吗?如果不能,为什么?如果能,什么时候会发生这种转换?举例说明。
这个是 *** 作系统的知识,首先要知道临界区的概念,解释如下
临界资源和临界区
临界资源是指一次只允许一个进程使用的资源:一个进程中访问临界资源的那段程序代码称为临界区。它们不允许两个及以上的进程同时访问或修改。
2进程的同步
进程的同步运行是指进程之间的一种直接的协同工作关系,这些进程通过相互合作来完成一项任务。
3进程的互斤
进程间一种间接的相互作用构成进程互斥。进程互斥的目的就是使某一进程可以在某一时间内独占一些资源�6�1
以上就是关于 *** 作系统互斥的软件算法(turn程序有个不懂)全部的内容,包括: *** 作系统互斥的软件算法(turn程序有个不懂)、用C语言编写程序:生产者和消费者之间实现同步与互斥问题、进程互斥,请高手解答,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)