导航:首页 > 源码编译 > 系统调度算法工程师

系统调度算法工程师

发布时间:2022-07-19 15:14:36

⑴ DSP工程师和软件工程师,哪个发展前景更好一些

支持dsp工程师
如果能做到硬件工程师
那就是更牛的了
因为培养硬件工程师花费高,周期长,自然待遇高
而dsp是以后发展的方向,
你要是电子的就是dsp要是计算机方向的,
还是做你擅长的吧

⑵ 数据挖掘工程师一般都做什么

数据挖掘工程师是做什么的?

数据挖掘,从字面上理解,就是在数据中找到有用的东西,哪些东西有用就要看具体的业务目标了。最简单的就是统计应用了,比如电商数据,如淘宝统计过哪个省购买泳衣最多、哪个省的女生胸罩最大等,进一步,可以基于用户的浏览、点击、收藏、购买等行为推断用户的年龄、性别、购买能力、爱好等能表示一个人的画像,就相当于用这些挖掘出来的属性来刻画一个人,这些还是最简单的东西,更深层次的比如预测(股票预测),但是比较难。

数据挖掘往往与机器学习离不开。比如分类、聚类、关联规则挖掘、个性化推荐、预测、神经网络、深度学习等。

数据挖掘 = 业务知识 + 自然语言处理技术( NLP ) + 计算机视觉技术( CV ) + 机器学习 / 深度学习( ML/DL )

( 1 )其中业务知识具体指的是个性化推荐,计算广告,搜索,互联网金融等; NLP , CV 分别是处理文本,图像视频数据的领域技术,可以理解为是将非结构化数据提取转换成结构化数据;最后的ml/dl 技术则是属于模型学习理论;

( 2 )在选择岗位时,各个公司都没有一套标准的称呼,但是所做的事情无非 2 个大方向,一种是主要钻研某个领域的技术,比如自然语言处理工程师,计算机视觉工程师,机器学习工程师等;一种是将各种领域技术应用到业务场景中去解决业务需求,比如数据挖掘工程师,推荐系统工程师等;具体的称呼不重要,重要的是平时的工作内容;

PS :在互联网行业,数据挖掘相关技术应用比较成功的主要是推荐以及计算广告领域,而其中涉及到的数据主要也是文本,所以 NLP 技术相对来讲比较重要,至于 CV 技术主要还是在人工智能领域(无人车,人脸识别等)应用较多,本人了解有限,相关的描述会较少;

数据挖掘岗位需要具备的3 种基本能力

1. 工程能力

( 1 )编程基础:需要掌握一大一小两门语言,大的指 C++ 或者 java ,小的指 python 或者 shell 脚本;需要掌握基本的数据库语言;

建议: MySQL + python + C++ ;语言只是一种工具,看看语法就好;

推荐书籍:《 C++ primer plus 》

( 2 )开发平台: linux

建议:掌握常见的命令,掌握 Linux 下的源码编译原理;

推荐书籍:《 Linux 私房菜》

( 3 )数据结构与算法分析基础:掌握常见的数据结构以及操作(线性表,队,列,字符串,树,图等),掌握常见的计算机算法(排序算法,查找算法,动态规划,递归等);

建议:多敲代码,多上 OJ 平台刷题;

推荐书籍:《大话数据结构》《剑指 offer 》

( 4 )海量数据处理平台: Hadoop ( mr 计算模型, java 开发)或者 Spark ( rdd 计算模型, scala开发),重点推荐后者;

建议:主要是会使用,有精力的话可以看看源码了解集群调度机制之类的;

推荐书籍:《大数据 spark 企业级实战》

2. 算法能力

( 1 )数学基础:概率论,数理统计,线性代数,随机过程,最优化理论

建议:这些是必须要了解的,即使没法做到基础扎实,起码也要掌握每门学科的理论体系,涉及到相应知识点时通过查阅资料可以做到无障碍理解;

( 2 )机器学习 / 深度学习:掌握 常见的机器学习模型(线性回归,逻辑回归, SVM ,感知机;决策树,随机森林, GBDT , XGBoost ;贝叶斯, KNN , K-means , EM 等);掌握常见的机器学习理论(过拟合问题,交叉验证问题,模型选择问题,模型融合问题等);掌握常见的深度学习模型( CNN ,RNN 等);

建议:这里的掌握指的是能够熟悉推导公式并能知道模型的适用场景;

推荐书籍:《统计学习方法》《机器学习》《机器学习实战》《 UFLDL 》

( 3 )自然语言处理:掌握常见的方法( tf-idf , word2vec , LDA );

3. 业务经验

( 1 )了解推荐以及计算广告相关知识;

推荐书籍:《推荐系统实践》《计算广告》

( 2 )通过参加数据挖掘竞赛熟悉相关业务场景,常见的比赛有 Kaggle ,阿里天池, datacastle 等。

想要学习数据挖掘的话可以看一下这篇文章《AI时代就业指南:数据挖掘入门与求职》

⑶ 嵌入式实时操作系统调度算法的发展现状

肖文鹏
硕士研究生, 北京理工大学计算机系
2003 年 9 月

随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算(everything connecting, everywhere computing)正在将人类带入一个崭新的信息社会。

一、嵌入式系统
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件是可裁剪的,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。嵌入式系统最典型的特点是与人们的日常生活紧密相关,任何一个普通人都可能拥有各类形形色色运用了嵌入式技术的电子产品,小到MP3、PDA等微型数字化设备,大到信息家电、智能电器、车载GIS,各种新型嵌入式设备在数量上已经远远超过了通用计算机。这也难怪美国着名未来学家尼葛洛庞帝在1999年1月访华时就预言,4~5年后嵌入式智能工具将成为继PC机和Internet之后计算机工业最伟大的发明。

1.1 历史与现状

虽然嵌入式系统是近几年才开始真正风靡起来的,但事实上嵌入式这个概念却很早就已经存在了,从上个世纪70年代单片机的出现到今天各种嵌入式微处理器、微控制器的广泛应用,嵌入式系统少说也有了近30年的历史。纵观嵌入式系统的发展历程,大致经历了以下四个阶段:

*

无操作系统阶段

嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上"系统"的概念。

这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。
*

简单操作系统阶段

20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的"操作系统"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。

这一阶段嵌入式系统的主要特点是:出现了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。
*

实时操作系统阶段

20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。

这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。
*

面向Internet阶段

21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。

信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显着变化:
1. 新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。
2. 嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。
3. 通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等,嵌入式软件平台得到进一步完善。
4. 各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。
5. 网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。
6. 精简系统内核,优化关键算法,降低功耗和软硬件成本。
7. 提供更加友好的多媒体人机交互界面。

1.2 体系结构

根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是"控制、监视或者辅助设备、机器和车间运行的装置"(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。一般而言,整个嵌入式系统的体系结构可以分成四个部分:嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,如图1所示。

图1 嵌入式系统的组成

*

嵌入式处理器

嵌入式系统的核心是各种类型的嵌入式处理器,嵌入式处理器与通用处理器最大的不同点在于,嵌入式CPU大多工作在为特定用户群所专门设计的系统中,它将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。

嵌入式处理器的体系结构经历了从CISC(复杂指令集)至RISC(精简指令集)和Compact RISC的转变,位数则由4位、8位、16位、32位逐步发展到64位。目前常用的嵌入式处理器可分为低端的嵌入式微控制器(Micro Controller Unit,MCU)、中高端的嵌入式微处理器(Embedded Micro Processor Unit,EMPU)、用于计算机通信领域的嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)和高度集成的嵌入式片上系统(System On Chip,SOC)。

目前几乎每个半导体制造商都生产嵌入式处理器,并且越来越多的公司开始拥有自主的处理器设计部门,据不完全统计,全世界嵌入式处理器已经超过1000多种,流行的体系结构有30多个系列,其中以ARM、PowerPC、MC 68000、MIPS等使用得最为广泛。
*

嵌入式外围设备

在嵌入系统硬件系统中,除了中心控制部件(MCU、DSP、EMPU、SOC)以外,用于完成存储、通信、调试、显示等辅助功能的其他部件,事实上都可以算作嵌入式外围设备。目前常用的嵌入式外围设备按功能可以分为存储设备、通信设备和显示设备三类。

存储设备主要用于各类数据的存储,常用的有静态易失型存储器(RAM、SRAM)、动态存储器(DRAM)和非易失型存储器(ROM、EPROM、EEPROM、FLASH)三种,其中FLASH凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。

目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用,包括RS-232接口(串行通信接口)、SPI(串行外围设备接口)、IrDA(红外线接口)、I2C(现场总线)、USB(通用串行总线接口)、Ethernet(以太网接口)等。

由于嵌入式应用场合的特殊性,通常使用的是阴极射线管(CRT)、液晶显示器(LCD)和触摸板(Touch Panel)等外围显示设备。
*

嵌入式操作系统

为了使嵌入式系统的开发更加方便和快捷,需要有专门负责管理存储器分配、中断处理、任务调度等功能的软件模块,这就是嵌入式操作系统。嵌入式操作系统是用来支持嵌入式应用的系统软件,是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理复杂的系统资源,能够对硬件进行抽象,能够提供库函数、驱动程序、开发工具集等。但与通用操作系统相比较,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性以及应用专用性等方面,具有更加鲜明的特点。

嵌入式操作系统根据应用场合可以分为两大类:一类是面向消费电子产品的非实时系统,这类设备包括个人数字助理(PDA)、移动电话、机顶盒(STB)等;另一类则是面向控制、通信、医疗等领域的实时操作系统,如WindRiver公司的VxWorks、QNX系统软件公司的QNX等。实时系统(Real Time System)是一种能够在指定或者确定时间内完成系统功能,并且对外部和内部事件在同步或者异步时间内能做出及时响应的系统。在实时系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关,也就是说,实时系统对逻辑和时序的要求非常严格,如果逻辑和时序控制出现偏差将会产生严重后果。

实时系统主要通过三个性能指标来衡量系统的实时性,即响应时间(Response Time)、生存时间(Survival Time)和吞吐量(Throughput):
o 响应时间 是实时系统从识别出一个外部事件到做出响应的时间;
o 生存时间 是数据的有效等待时间,数据只有在这段时间内才是有效的;
o 吞吐量 是在给定的时间内系统能够处理的事件总数,吞吐量通常比平均响应时间的倒数要小一点。

实时系统根据响应时间可以分为弱实时系统、一般实时系统和强实时系统三种。弱实时系统在设计时的宗旨是使各个任务运行得越快越好,但没有严格限定某一任务必须在多长时间内完成,弱实时系统更多关注的是程序运行结果的正确与否,以及系统安全性能等其他方面,对任务执行时间的要求相对来讲较为宽松,一般响应时间可以是数十秒或者更长。一般实时系统是弱实时系统和强实时系统的一种折衷,它的响应时间可以在秒的数量级上,广泛应用于消费电子设备中。强实时系统则要求各个任务不仅要保证执行过程和结果的正确性,同时还要保证在限定的时间内完成任务,响应时间通常要求在毫秒甚至微秒的数量级上,这对涉及到医疗、安全、军事的软硬件系统来说是至关重要的。

时限(deadline)是实时系统中的一个重要概念,指的是对任务截止时间的要求,根据时限对系统性能的影响程度,实时系统又可以分为软实时系统(soft real-time-system)和硬实时系统(hard real-time-system)。软实时指的是虽然对系统响应时间有所限定,但如果系统响应时间不能满足要求,并不会导致系统产生致命的错误或者崩溃;硬实时则指的是对系统响应时间有严格的限定,如果系统响应时间不能满足要求,就会引起系统产生致命的错误或者崩溃。如果一个任务在时限到达之时尚未完成,对软实时系统来说还是可以容忍的,最多只会降低系统性能,但对硬实时系统来说则是无法接受的,因为这样带来的后果根本无法预测,甚至可能是灾难性的。在目前实际运用的实时系统中,通常允许软硬两种实时性同时存在,其中一些事件没有时限要求,另外一些事件的时限要求是软实时的,而对系统产生关键影响的那些事件的时限要求则是硬实时的。
*

嵌入式应用软件

嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件,由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。

1.3 关键问题

嵌入式系统是将先进的计算机技术、半导体技术以及电子技术与特定行业的具体应用相结合的产物,因此必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,嵌入式系统的开发充满了竞争、机遇与创新,需要解决好如下一些关键问题:

1. 内核精巧 嵌入式系统的应用领域一般都是小型电子装置,系统资源相对有限,因此对内核的要求相当高,较之传统的操作系统来讲要小得多,例如ENEA公司推出的OSE分布式嵌入式系统,整个内核只有5KB。
2. 面向应用 嵌入式系统通常是面向用户、面向产品、面向特定应用的。嵌入式系统中的CPU大多工作在为特定用户群定制的环境中,具有低耗、体积小、集成度高等特点,在进行软硬件设计时必须突出效率、去除冗余,针对用户的具体需求对系统进行合理的配置,方能达到理想的性能。
3. 系统精简 嵌入式系统中的系统软件和应用软件通常没有明显的区别,不要求其功能及实现上过于复杂,这样一方面有利于控制系统成本,另一方面也有利于保证系统安全。
4. 性能优化 嵌入式系统通常都要求有一定的实时性保障,为了提高执行速度和系统性能,嵌入式系统中的软件一般都固化在存储芯片或者处理器的内部存储器件当中,而不是存贮在磁盘等外部载体中。由于嵌入式系统的运算速度和存储容量存在一定程度上的限制,而且大部分系统都必须有较高的实时性保证,因此对软件质量(特别是可靠性方面)有着较高的要求。
5. 专业开发 嵌入式系统本身并不具备自主开发能力,用户不能直接在其上进行二次开发。当系统完成之后,用户如果需要修改其中某个程序的功能,必须借助一套完整的开发工具和环境。嵌入式系统中专用的开发工具和环境通常是基于通用计算机上的软硬件设备,以及各种逻辑分析仪、混合信号示波器等。

二、嵌入式Linux
Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。

2.1 优势

嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其自身的优良特性是分不开的。

*

广泛的硬件支持

Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行在所有流行的CPU上。Linux有着异常丰富的驱动程序资源,支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。
*

内核高效稳定

Linux内核的高效和稳定已经在各个领域内得到了大量事实的验证,Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走。这些特性使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。
*

开放源码,软件丰富

Linux是开放源代码的自由操作系统,它为用户提供了最大限度的自由度,由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要了。Linux的软件资源十分丰富,每一种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。在Linux上开发嵌入式应用软件一般不用从头做起,而是可以选择一个类似的自由软件做为原型,在其上进行二次开发。
*

优秀的开发工具

开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In-Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能够非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常昂贵,而且只适合做非常底层的调试,如果使用的是嵌入式Linux,一旦软硬件能够支持正常的串口功能时,即使不用在线仿真器也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。
*

完善的网络通信和文件管理机制

Linux至诞生之日起就与Internet密不可分,支持所有标准的Internet网络协议,并且很容易移植到嵌入式系统当中。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,这些都为开发嵌入式系统应用打下了很好的基础。

2.2 挑战

目前,嵌入式Linux系统的研发热潮正在蓬勃兴起,并且占据了很大的市场份额,除了一些传统的Linux公司(如RedHat、MontaVista等)正在从事嵌入式Linux的开发和应用之外,IBM、Intel、Motorola等着名企业也开始进行嵌入式Linux的研究。虽然前景一片灿烂,但就目前而言,嵌入式Linux的研究成果与市场的真正要求仍有一段差距,要开发出真正成熟的嵌入式Linux系统,还需要从以下几个方面做出努力。

*

提高系统实时性

Linux虽然已经被成功地应用到了PDA、移动电话、车载电视、机顶盒、网络微波炉等各种嵌入式设备上,但在医疗、航空、交通、工业控制等对实时性要求非常严格的场合中还无法直接应用,原因在于现有的Linux是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行和响应速度,并且符合POSIX 1003.1b标准,但从本质上来说并不是一个嵌入式实时操作系统。Linux的内核调度策略基本上是沿用UNIX系统的,将它直接应用于嵌入式实时环境会有许多缺陷,如在运行内核线程时中断被关闭,分时调度策略存在时间上的不确定性,以及缺乏高精度的计时器等等。正因如此,利用Linux作为底层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,是现在日益流行的解决方案。
*

改善内核结构

Linux内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这样虽然能够使系统的各个部分直接沟通,有效地缩短任务之间的切换时间,提高系统响应速度,但与嵌入式系统存储容量小、资源有限的特点不相符合。嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际需要进行取舍。Microkernel的执行效率虽然比不上Monolithic,但却大大减小了内核的体积,便于维护和移植,更能满足嵌入式系统的要求。可以考虑将Linux内核部分改造成Microkernel,使Linux在具有很高性能的同时,又能满足嵌入式系统体积小的要求。
*

完善集成开发平台

引入嵌入式Linux系统集成开发平台,是嵌入式Linux进一步发展和应用的内在要求。传统上的嵌入式系统都是面向具体应用场合的,软件和硬件之间必须紧密配合,但随着嵌入式系统规模的不断扩大和应用领域的不断扩展,嵌入式操作系统的出现就成了一种必然,因为只有这样才能促成嵌入式系统朝层次化和模块化的方向发展。很显然,嵌入式集成开发平台也是符合上述发展趋势的,一个优秀的嵌入式集成开发环境能够提供比较完备的仿真功能,可以实现嵌入式应用软件和嵌入式硬件的同步开发,从而摆脱了"嵌入式应用软件的开发依赖于嵌入式硬件的开发,并且以嵌入式硬件的开发为前提"的不利局面。一个完整的嵌入式集成开发平台通常包括编译器、连接器、调试器、跟踪器、优化器和集成用户界面,目前Linux在基于图形界面的特定系统定制平台的研究上,与Windows CE等商业嵌入式操作系统相比还有很大差距,整体集成开发环境有待提高和完善。

三、关键技术
嵌入式系统是一种根据特定用途所专门开发的系统,它只完成预期要完成的功能,因此其开发过程和开发环境同传统的软件开发相比有着显着的不同。

3.1 开发流程

在嵌入式系统的应用开发中,整个系统的开发过程如图2所示:

图2 嵌入式系统的开发流程

嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的、成熟的,这就大大减少了由硬件系统引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以将主要精力放在满足特定的需求上。

嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。

需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显着特点,交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,如图3所示。

图3 交叉开发环境

宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具(如WindRiver的Tornado、Microsoft的Embedded Visual C++等),能够大大提高嵌入式应用软件的开发速度和效率。

目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。

建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。

3.2 交叉编译和链接

在完成嵌入式软件的编码之后,需要进行编译和链接以生成可执行代码,由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。

交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交叉链接器,比如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。

嵌入式系统在链接过程中通常都要求使用较小的函数库,以便最后产生的可执行代码能够尽可能地小,因此实际运用时一般使用经过特殊处理的函数库。对于嵌入式L

⑷ 数据库开发工程师需要学习哪些课程

数据库开发工程师需要学习的课程有:

1、计算机导论

内容提要:为新学生提供一个关于计算机科学与技术学科的入门介绍,使他们对该学科有一个整体的认识,并了解该专业的学生应具有的基本知识和技能以及在该领域工作应有的职业道德与应遵守的法律准则。

2、数字电路与数字逻辑

内容提要:介绍数字逻辑与数字系统的基本概念、分析方法和设计原理,包括开关理论基础、组合逻辑、时序逻辑、可编程逻辑器件、数字系统等。

3、计算机组成原理与汇编语言

内容提要:以冯诺依曼计算机模型为出发点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控制器和输入输出设备的结构、工作原理和相互关系;介绍 80X86指令系统、汇编语言与汇编指令、汇编程序与汇编过程、简单汇编程序设计、汇编语言与高级语言的接口、宏汇编等。

4、计算机网络

内容提要:介绍数据通信的基本概念和计算机网络的基本原理,包括计算机网络的体系结构、数据通信的基本方法和协议、计算机网络的主要应用协议;同时介绍计算机网络系统的安全和管理知识,使学生对数据通信和计算机网络有一个全面理解。

5、计算机体系结构

内容提要:研究计算机系统结构的基本概念、基本原理、基本结构和基本分析方法,使同学在具有一定的软硬件知识基础上能综合认识计算机系统的软硬件功能分配与各种不同结构类型机器的特性和性能评价方法。为研究、开发、应用高级计算机系统打下基础。确立全面、系统的观点和学会定量分析问题的方法。

6、离散数学

内容提要:包括集合论、数理逻辑、图论、组合数学等内容,形式化的数学证明贯穿此课程。

7、高级程序设计语言

内容提要:分别以 C、C#或JAVA为例,介绍程序设计和语言,程序的基本数据结构、类型定义、简单类型和结构化类型、程序的基本控制结构、结构化程序设计、面向对象的程序设计等。

8、算法分析与设计

内容提要: 本课程延续数据结构课程的学习,从算法分析和设计的角度出发,除去传统的分类查找算法和一般的设计方法外,主要内容包括如下几个部分:算法研究的理论基础,递归分析技术,基本算法设计策略(几类经典算法学习), 多项式运算与 FFT ,串匹配,概率分析算法。 希望通过这一课程的学习,使学生能对现代的算法设计及分析的基本工具能有较全面的掌握。

9、数据结构

内容提要:介绍线性表及其链接存储结构与算法、数组与矩阵、堆栈与队列、广义表的存储结构与多元多项式表示、串与文本编辑、排序、树、图、文件结构。

10、数据库系统原理

内容提要:介绍数据库系统的基本概念、原理、方法及应用,主要包括数据库系统概论、数据库管理系统实现技术、数据库存储结构及其他类型的数据库系统。

11、编译技术

内容提要:介绍编译原理的理论和实践,包括编译程序设计、词法分析、语法分析、符号表、声明和存储管理、代码生成以及优化技术。

12、操作系统

内容提要:介绍操作系统的设计与实现,包括操作系统各组成部分的概述、互斥性和同步性、处理器实现、调度算法、存储算法、设备管理和文件系统。

⑸ 2018年上半年系统集成项目管理工程师下午题第2题书上有解答吗

试题二(17分)

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某项目由p1、p2、p3、p4、p5五个活动组成,五个活动全部完成之后项目才能够完成,每个活动都需要用到r1、r2、r3三种互斥资源,三种资源都必须达到活动的资源需求量,活动才能开始。已分配资源只有在完成本活动后才能被其他活动所用。目前项目经理能够调配的资源有限,r1、r2、r3的可用资源数分别为9、8、5,活动对资源的需求量、已分配资源数和各活动历时如下表所示(假设各活动之间没有依赖关系):

3、建议


无论是前面第1种情况,还是后面的第2种情况,都应该给分。



【问题2】的参考答案


项目的完工时间:7周


以上面的“第2种情况”为例,写出每个活动开始时间、占用资源和完成时间以及项目经理分配资源的过程。


因项目剩余资源量为(2,2,0),而P2、P4尚需资源量分别为(0,2,0)和(2,0,0),因此R1剩余的2个资源首先满足P4,R2剩余的2个资源首先满足P2,首先同时做活动P2和P4:


1-2周,完成P4,其占用、以及完成后释放的资源为(3,2,0),


1-3周,完成P2,其占用、以及完成后释放的资源为(2,3,1),


4-7周,完成P5,其占用、以及完成后释放的资源为(1,4,4),


4-4周,完成P1,其占用、以及完成后释放的资源为(6,4,1),


4-7周,完成P3,其占用、以及完成后释放的资源为(8,0,1),



【问题3】的参考答案


详见清华版《系统集成项目管理工程师教程》(第2版)P310-P311。


资源平衡:为了在资源需求与资源供给之间取得平衡,根据资源制约对开始日期和结束日期进行调整的一种技术。资源平衡往往导致关键路径改变,通常是延长。


资源平滑:是对进度模型中的活动进行调整,从而使项目资源需求不超过预定的资源限制的一种技术。相对于资源平衡而言,资源平滑不会改变项目关键路径,完工日子也不会延迟。也就是说,活动旨在其自由浮动时间和总浮动时间内延迟。因此,资源平衡技术可能无法实现所有资源的优化。

⑹ 浅谈学习运筹与优化软件的心得

科普推广运筹学一直以来是【运筹OR帷幄】平台的初衷。本次我们邀请到了平台优化板块的责编团队的成员,结合各自独特的业界工作体会,分享他们眼中在业界发光发热的运筹学。

一、元器件行业中的运筹学

本人在一家做元器件服务的公司实习,军用元器件使用的时候有两个典型场景:替代和统型。

替代是设计师针对进口元器件找到可替代的国产型号;统型是在一个产品的BOM内确定某几个不同元器件是否可以统一使用一种,以此减少元器件品种数。

目前行业内开始从依赖专家经验(比如知道某个国产元器件就是对标某个进口元器件做的),转向从元器件性能参数的相似度出发进行判断,所以涉及到相似度和聚类方法的应用。

相比方法本身,解决问题的更大阻碍是元器件性能参数数据的复杂性和不规范性。例如不同类别的元器件性能参数不同,即使在同一类别下,不同生厂商给出的性能参数形式也不同,对此进行规范需要有元器件专业知识,所以实际中,数据清洗往往耗费最多人力,也是影响方法使用效果的一大因素。

⑺ 数据库系统工程师考试的科目内容

1.计算机系统知识
1.1 硬件知识
1.1.1计算机体系结构和主要部件的基本工作原理
·CPU和存储器的组成、性能、基本工作原理
·常用I/O设备、通信设备的性能,以及基本工作原理
·I/O接口的功能、类型和特点
·CISC/RISC,流水线操作,多处理机,并行处理
1.1.2存储系统
·虚拟存储器基本工作原理,多级存储体系
·RAID类型和特性
1.1.3 安全性、可靠性与系统性能评测基础知识
·诊断与容错
·系统可靠性分析评价
·计算机系统性能评测方法
1.2数据结构与算法
1.2.1 常用数据结构
·数组(静态数组、动态数组)
·线性表、链表(单向链表、双向链表、循环链表)
·栈和队列
·树(二叉树、查找树、平衡树、遍历树、堆)、图、集合的定义、存储和操作
·Hash(存储位置计算、碰撞处理)
1.2.2 常用算法
·排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法
·算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表),算法的复杂性
1.3软件知识
1.3.1操作系统知识
·操作系统的类型、特征、地位、内核(中断控制)、进程、线程概念
·处理机管理(状态转换、同步与互斥、信号灯、分时轮转、抢占、死锁)
·存储管理(主存保护、动态连接分配、分段、分页、虚存)
·设备管理(I/O控制、假脱机、磁盘调度)
·文件管理(文件目录、文件的结构和组织、存取方法、存取控制、恢复处理、共享和安全)
·作业管理(作业调度、作业控制语言(JCL)、多道程序设计)
·汉字处理,多媒体处理,人机界面
·网络操作系统和嵌入式操作系统基础知识
·操作系统的配置
1.3.2程序设计语言和语言处理程序的知识
· 汇编、编译、解释系统的基础知识和基本工作原理
·程序设计语言的基本成分:数据、运算、控制和传输,程序调用的实现机制
· 各类程序设计语言的主要特点和适用情况
1.4 计算机网络知识
·网络体系结构(网络拓扑、OSI/RM、基本的网络协议)
·传输介质,传输技术,传输方法,传输控制
·常用网络设备和各类通信设备
·Client/Server结构、Browser/Server结构、Browser/Web/Datebase结构
·LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接
·因特网基础知识及应用
·网络软件
·网络管理
·网络性能分析
·网络有关的法律、法规
2.数据库技术
2.1 数据库技术基础
2.1.1数据库模型
·数据库系统的三级模式(概念模式、外模式、内模式),两级映像(概念模式/外模式、外模式/内模式)
·数据库模型:数据模型的组成要素,概念数据模型ER图(实体、属性、关系),逻辑数据模型(关系模型、层s次模型、网络模型)
2.1.2数据库管理系统的功能和特征
·主要功能(数据库定义、数据库操作、数据库控制、事务管理、用户视图)
·特征(确保数据独立性、数据库存取、同时执行过程、排它控制、故障恢复、安全性、完整性)
·RDB(关系数据库),OODB(面向对象数据库),ORDB(对象关系数据库),NDB(网状数据库)
·几种常用Web数据库的特点
2.1.3 数据库系统体系结构
· 集中式数据库系统
· Client/Server数据库系统
·并行数据库系统
·分布式数据库系统
· 对象关系数据库系统
2.2 数据操作
2.2.1 关系运算
·关系代数运算(并、交、差、笛卡儿积、选择、投影、连接、除)
·元组演算
·完整性约束
2.2.2 关系数据库标准语言(SQL)
·SQL的功能与特点
·用SQL进行数据定义(表、视图、索引、约束)
·用SQL进行数据操作(数据检索、数据插入/删除/更新、触发控制)
·安全性和授权
·程序中的API,嵌入SQL
2.3 数据库的控制功能
·数据库事务管理(ACID属性)
·数据库备份与恢复技术(UNDO、REDO)
·并发控制
2.4数据库设计基础理论
2.4.1 关系数据库设计
·函数依赖
·规范化(第一范式、第二范式、第三范式、BC范式、第四范式、第五范式)
·模式分解及分解应遵循的原则
2.4.2 对象关系数据库设计
·嵌套关系、 复杂类型,继承与引用类型
·与复杂类型有关的查询
·SQL中的函数与过程
·对象关系
2.5 数据挖掘和数据仓库基础知识
·数据挖掘应用和分类
·关联规则、聚类
·数据仓库的成分
·数据仓库的模式
2.6 多媒体基本知识
2.6.1 多媒体技术基本概念
·多媒体系统基础知识
·常用多媒体文件格式
2.6.2 多媒体压缩编码技术
·多媒体压缩编码技术
·统计编码
·预测编码
·编码的国际标准
2.6.3多媒体技术应用
·简单图形的绘制,图像文件的处理方法
·音频和视频信息的应用
·多媒体应用开发过程
2.7 系统性能知识
·性能计算(响应时间、吞吐量、周转时间)
·性能指标和性能设计
·性能测试和性能评估
2.8 计算机应用基础知识
·信息管理、数据处理、辅助设计、科学计算,人工智能等基础知识
·远程通信服务及相关通信协议基础知识
3. 系统开发和运行维护知识
3.1软件工程、软件过程改进和软件开发项目管理知识
·软件工程知识
·软件开发生命周期阶段目标和任务
·软件开发项目基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具
·主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)
·软件开发工具与环境知识
·软件质量管理基础知识
·软件过程改进基础知识
·软件开发过程评估、软件能力成熟度评估的基础知识
3.2 系统分析基础知识
·系统分析的目的和任务
·结构化分析方法(数据流图(DFD)和数据字典(DD),实体关系图(ERD),描述加工处理的结构化语言)
·统一建模语言(UML)
·系统规格说明书
3.3系统设计知识
·系统设计的目的和任务
·结构化设计方法和工具(系统流程图、HIPO图、控制流程图)
·系统总体结构设计(总体布局,设计原则,模块结构设计,数据存取设计,系统配置方案)
·系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)
·系统设计说明书
3.4系统实施知识
·系统实施的主要任务
·结构化程序设计、面向对象程序设计、可视化程序设计
·程序设计语言的选择、程序设计风格
·系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)
·测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试试用例设计、系统测试报告)
·系统转换基础知识
3.5 系统运行和维护知识
·系统运行管理知识
·系统维护知识
·系统评价知识
4. 安全性知识
·安全性基本概念(网络安全、操作系统安全、数据库安全)
·计算机病毒的防治,计算机犯罪的防范,容灾
·访问控制、防闯入、安全管理措施
·加密与解密机制
·风险分析、风险类型、抗风险措施和内部控制
5.标准化知识
·标准化意识,标准化的发展,标准出台过程
·国际标准、国家标准、行业标准、企业标准基本知识
·代码标准、文件格式标准、安全标准软件开发规范和文档标准
·标准化机构
6.信息化基础知识
·信息化意识
·全球信息化趋势、国家信息化战略、企业信息化战略和策略
·有关的法律、法规
·远程教育、电子商务、电子政务等基础知识
·企业信息资源管理基础知识
7.计算机专业英语
·掌握计算机技术的基本词汇
·能正确阅读和理解计算机领域的英文资料 1.数据库设计
1.1 理解系统需求说明
·了解用户需求、确定系统范围
·确定应用系统数据库的各种关系
·现有环境与新系统环境的关系
·新系统中的数据项、数据字典、数据流
1.2 系统开发的准备
·选择开发方法,准备开发环境,制订开发计划
1.3 设计系统功能
·选择系统机构,设计各子系统的功能和接口,设计安全性策略、需求和实现方法,制定详细的工作流和数据流
1.4数据库设计
1.4.1 设计数据模型
·概念结构设计(设计ER模型)
·逻辑结构设计(转换成DBMS所能接收的数据模型)
·评审设计
1.4.2 物理结构设计
·设计方法与内容
·存取方法的选择
·评审设计与性能预测
1.4.3 数据库实施与维护
·数据加载与应用程序调试
·数据库试运行
·数据库运行与维护
1.4.4 数据库的保护
·数据库的备份与恢复
·数据库的安全性
·数据库的完整性
·数据库的并发控制
1.5 编写外部设计文档
·编写系统说明书(系统配置图、各子系统关系图、系统流程图,系统功能说明、输入输出规格说明、数据规格说明、用户手册框架)
·设计系统测试要求
1.6 设计评审
2.数据库应用系统设计
2.1 设计数据库应用系统结构
·信息系统的架构(如Client/Server)与DBMS
·多用户数据库环境(文件服务器体系结构、Client/Server体系结构)
·大规模数据库和并行计算机体系结构(SMP、MPP)
·中间件角色和相关工具
·按构件分解,确定构件功能规格以及构件之间的接口
2.2 设计输入输出
·屏幕界面设计,设计输入输出检查方法和检查信息
·数据库交互与连接(掌握C程序设计语言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一种开发工具与数据库互连的方法(如何与数据库服务器沟通))
2.3 设计物理数据
·分析事务在数据库上运行的频率和性能要求,确定逻辑数据组织方式、存储介质,设计索引结构和处理方式
·将逻辑数据结构变换成物理数据结构,计算容量(空间代价),确定存取方法(时间效率)、系统配置(维护代价)并进行优化
2.4 设计安全体系
·明确安全等级
·数据库的登录方式
·数据库访问
·许可(对象许可、命令许可、授权许可的方法)
2.5应用程序开发
2.5.1 应用程序开发
·选择应用程序开发平台
·系统实施顺序
·框架开发
·基础小组的程序开发
·源代码控制
·版本控制
2.5.2 模块划分(原则、方法、标准)
2.5.3 编写程序设计文档
·模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述)
·测试要求说明书(测试类型和目标,测试用例,测试方法)
2.5.4 程序设计评审
2.6 编写应用系统设计文档
·系统配置说明、构件划分图、构件间的接口、构件处理说明、屏幕设计文档、报表设计文档、程序设计文档、文件设计文档、数据库设计文档
2.7 设计评审
3. 数据库应用系统实施
3.1 整个系统的配置与管理
3.2 常用数据库管理系统的应用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)
·创建数据库
·创建表、创建索引、创建视图、创建约束、创建UDDT(用户自定义类型)
·创建和管理触发器
·建立安全体系
3.3 数据库应用系统安装
·拟定系统安装计划(考虑费用、客户关系、雇员关系、后勤关系和风险等因素)
·拟定人力资源使用计划(组织机构安排的合理性)
·直接安装(安装新系统并使系统快速进入运行状态)
·并行安装(新旧系统并行运行一段时间)
·阶段安装(经过一系列的步骤和阶段使新系统各部分逐步投入运行)
3.4 数据库应用系统测试
·拟定测试目标、计划、方法与步骤
·数据加载,准备测试数据
·指导应用程序员进行模块测试进行验收
·准备系统集成测试环境测试工具
·写出数据库运行测试报告
3.5 培训与用户支持
4.数据库系统的运行和管理
4.1 数据库系统的运行计划
·运行策略的确定
·确定数据库系统报警对象和报警方式
·数据库系统的管理计划(执行,故障/恢复,安全性,完整性,用户培训和维护)
4.2 数据库系统的运行和维护
·新旧系统的转换
·收集和分析报警数据(执行报警、故障报警、安全报警)
·连续稳定的运行
·数据库维护(数据库重构、安全视图的评价和验证、文档维护)
·数据库系统的运行统计(收集、分析、提出改进措施)
·关于运行标准和标准改进一致性的建议
·数据库系统的审计
4.3 数据库管理
·数据字典和数据仓库的管理
·数据完整性维护和管理(实体完整性、参照完整性)
·数据库物理结构的管理(保证数据不推迟访问)
·数据库空间及碎片管理
·备份和恢复(顺序、日志(审计痕迹)、检查点)
·死锁管理(集中式、分布式)
·并发控制(可串行性、锁机制、时间戳、优化)
·数据安全性管理(加密、安全、访问控制、视图、有效性确认规则)
·数据库管理员(DBA)职责
4.4 性能调整
·SQL语句的编码检验
·表设计的评价
·索引的改进
·物理分配的改进
·设备增强
·数据库性能优化
4.5 用户支持
·用户培训
·售后服务
5. SQL
5.1数据库语言
·数据库语言的要素
·数据库语言的使用方式(交互式和嵌入式)
5.2 SQL概述
·SQL语句的特征
·SQL语句的基本成分
5.3 数据库定义
·创建数据库(Create Datebase)、创建表(Create Table)
·定义数据完整性
·修改表(Alter Table)、删除表(Drop Table)
·定义索引(Create Index)、删除索引(Drop Index)
·定义视图(Create View)、删除视图(Drop View)、更新视图
5.4 数据操作
·Select语句的基本机构
·简单查询
·SQL中的选择、投影
·字符串比较,涉及空值的比较
·日期时间,布尔值,输出排序
·多表查询
·避免属性歧义
·SQL中的连接、并、交、差
·SQL中的元组变量
·子查询
5.5完整性控制与安全机制
·主键(Primary Key)约束
·外键(Foreign Key)约束
·属性值上的约束(Null、Check、Create Domain)
·全局约束(Create Assertions)
·权限、授权(Grant)、销权(Revoke)
5.6 创建触发器(Create Trigger)
5.7 SQL使用方式
·交互式SQL
·嵌入式SQL
·SQL与宿主语言接口(Declare、共享变量、游标、卷游标)
·动态SQL
·API
5.8 SQL 标准化
6. 网络环境下的数据库
6.1分布式数据库
6.1.1 分布式数据库的概念
·分布式数据库的特点与目标
6.1.2 分布式数据库的体系结构
·分布式数据库的模式结构
·数据分布的策略(数据分片、分布透明性)
·分布式数据库管理系统
6.1.3分布式查询处理和优化
6.1.4分布式事务管理
·分布式数据库的恢复(故障、恢复、2段提交、3段提交)
·分布式数据库的透明性(局部、分裂、复制、处理、并发、执行)
6.1.5分布式数据库系统的应用
6.2 网络环境下数据库系统的设计与实施
·数据的分布设计
·负载均衡设计
·数据库互连技术
6.3 面向Web的DBMS技术
·三层体系结构
·动态Web网页
·ASP、JSP、XML的应用
7.数据库的安全性
7.1 安全性策略的理解
·数据库视图的安全性策略
·数据的安全级别(最重要的、重要的、注意、选择)
7.2数据库安全测量
·用户访问控制(采用口令等)
·程序访问控制(包含在程序中的SQL命令限制)
·表的访问控制(视图机制)
·控制访问的函数和操作
·外部存储数据的加密与解密
8. 数据库发展趋势与新技术
8.1面向对象数据库(OODBMS)
8.1.1 OODBMS的特征
8.1.2 面向对象数据模型
·对象结构、对象类、继承与多重继承、对象标识、对象包含、对象嵌套
8.1.3面向对象数据库语言
8.1.4 对象关系数据库系统(ORDBMS)
·嵌套关系
·复杂类型
·继承、引用类型
·与复杂类型有关的查询
·函数与过程
·面向对象与对象关系
·ORDBMS应用领域
8.2企业资源计划(ERP)和数据库
8.2.1 ERP概述
·基本MRP(制造资源计划)、闭环MRP、ERP
·基本原理、发展趋势
·ERP设计的总体思路(一个中心、两类业务、三条干线)
8.2.2 ERP与数据库
·运行数据库与ERP数据模型之间的关系
·运行数据库与ERP数据库之间的关系
8.2.3 案例分析
8.3决策支持系统的建立
·决策支持系统的概念
·数据仓库设计
·数据转移技术
·联机分析处理(OLAP)技术
·企业决策支持解决方案
·联机事务处理(OLTP)

⑻ 软件工程师需要学习哪些课程

计算机导论

内容提要:为新学生提供一个关于计算机科学与技术学科的入门介绍,使他们对该学科有一个整体的认识,并了解该专业的学生应具有的基本知识和技能以及在该领域工作应有的职业道德与应遵守的法律准则。

数字电路与数字逻辑

内容提要:介绍数字逻辑与数字系统的基本概念、分析方法和设计原理,包括开关理论基础、组合逻辑、时序逻辑、可编程逻辑器件、数字系统等。

计算机组成原理与汇编语言

内容提要:以冯诺依曼计算机模型为出发点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控制器和输入输出设备的结构、工作原理和相互关系;介绍 80X86指令系统、汇编语言与汇编指令、汇编程序与汇编过程、简单汇编程序设计、汇编语言与高级语言的接口、宏汇编等。

计算机网络

内容提要:介绍数据通信的基本概念和计算机网络的基本原理,包括计算机网络的体系结构、数据通信的基本方法和协议、计算机网络的主要应用协议;同时介绍计算机网络系统的安全和管理知识,使学生对数据通信和计算机网络有一个全面理解。

计算机体系结构

内容提要:研究计算机系统结构的基本概念、基本原理、基本结构和基本分析方法,使同学在具有一定的软硬件知识基础上能综合认识计算机系统的软硬件功能分配与各种不同结构类型机器的特性和性能评价方法。为研究、开发、应用高级计算机系统打下基础。确立全面、系统的观点和学会定量分析问题的方法。

离散数学

内容提要:包括集合论、数理逻辑、图论、组合数学等内容,形式化的数学证明贯穿此课程。

高级程序设计语言

内容提要:分别以 C、C#或JAVA为例,介绍程序设计和语言,程序的基本数据结构、类型定义、简单类型和结构化类型、程序的基本控制结构、结构化程序设计、面向对象的程序设计等。

算法分析与设计

内容提要: 本课程延续数据结构课程的学习,从算法分析和设计的角度出发,除去传统的分类查找算法和一般的设计方法外,主要内容包括如下几个部分:算法研究的理论基础,递归分析技术,基本算法设计策略(几类经典算法学习), 多项式运算与 FFT ,串匹配,概率分析算法。 希望通过这一课程的学习,使学生能对现代的算法设计及分析的基本工具能有较全面的掌握。

数据结构

内容提要:介绍线性表及其链接存储结构与算法、数组与矩阵、堆栈与队列、广义表的存储结构与多元多项式表示、串与文本编辑、排序、树、图、文件结构。

数据库系统原理

内容提要:介绍数据库系统的基本概念、原理、方法及应用,主要包括数据库系统概论、数据库管理系统实现技术、数据库存储结构及其他类型的数据库系统。

编译技术

内容提要:介绍编译原理的理论和实践,包括编译程序设计、词法分析、语法分析、符号表、声明和存储管理、代码生成以及优化技术。

操作系统

内容提要:介绍操作系统的设计与实现,包括操作系统各组成部分的概述、互斥性和同步性、处理器实现、调度算法、存储算法、设备管理和文件系统。

阅读全文

与系统调度算法工程师相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:569
python员工信息登记表 浏览:369
高中美术pdf 浏览:153
java实现排列 浏览:505
javavector的用法 浏览:974
osi实现加密的三层 浏览:225
大众宝来原厂中控如何安装app 浏览:906
linux内核根文件系统 浏览:235
3d的命令面板不见了 浏览:520
武汉理工大学服务器ip地址 浏览:141
亚马逊云服务器登录 浏览:517
安卓手机如何进行文件处理 浏览:65
mysql执行系统命令 浏览:923
php支持curlhttps 浏览:136
新预算法责任 浏览:437
服务器如何处理5万人同时在线 浏览:244
哈夫曼编码数据压缩 浏览:419
锁定服务器是什么意思 浏览:378
场景检测算法 浏览:612
解压手机软件触屏 浏览:343