操作系统大概知识.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I/O系统 1.?????????使用设备的过程 使用设备的过程通常包括:驱动程序初始化;创建设备;打开文件;I/O操作;关闭文件;删除设备。 块设备:???????一个设备可以实现不同的文件系统,可以有多个文件; 非块设备:????一个设备通常对应一个文件。 2.?????????基本I/O函数说明 VxWorks中I/O分为基本I/O和缓冲I/O,基本I/O是VxWorks中最底层的I/O,以下是7个标准C语言库兼容的接口: #include?????????“ioLab.h” 1)????????int?open(const char *name, int flags, int mode);??????????????打开/创建文件,第一个参数为文件名,第二个参数定义对打开的文件进行的操作,它可以是O_RDONLY, O_WRONLY, O_RDWR, O_CREAT。 2)????????STATUS?close(int fd);????????关闭文件,其将终止fd与物理文件之间的关联,并释放在文件描述符表中占用的资源。释放后文件描述符和文件描述符表的空间能够重新使用。 3)????????int creat (const char *name, int flags)??????????创建文件同时以指定标志打开文件。实际上,creat创建文件时先确定文件所在设备,然后调用设备驱动程序提供的函数创建文件。 4)????????STATUS?remove(const char *name)?????????删除文件;和creat一样,remove先确定文件所在设备,然后调用设备驱动程序提供的函数删除文件。 5)????????int?read(int fd, char *buffer, size_t maxbytes);?????????读取之前创建或者打开的文件;第二个参数是读取数据缓冲区指针,第三个参数是最大读取字节数。函数返回的是函数实际读取的字节数; 6)????????int?write(int fd, char *buffer, size_t nbytes)?????????????写入到之前创建或者打开的文件。第二个参数是输出数据缓冲区指针,第三个参数是要求写得字节数。其返回值表示所写的字节数,如果等于0,表示没有写入任何数据。 7)????????int?ioctl(int fd, int function, int arg);??????????特殊控制。其对描述符fd指定的对象执行在function中给出的操作, 文件描述符:???????所有的基本I/O操作都引用文件描述符(fd)。文件描述符是调用open()或者create()返回的一个正数值,其他I/O调用需要使用该fd参数。文件描述符全局可见,两个不同的任务通过相同的文件描述符访问的将是同一个文件。VxWorks支持有限的文件描述符,具体在I/O系统初始化时指定有效的fd数目(宏定义NUM_FILES)。因此当文件不再使用时应该立即关闭文件,防止超出系统限制。 第五章????VxWorks启动过程 3.?????????VxWorks启动过程 VxWorks的启动过程需要解决: 处理器初始化:????使处理器复位,禁止中断,内部寄存器都为确定的值; 代码装入:???????????将执行映像从存储介质装入RAM执行; 硬件初始化:???????使硬件复位,并初始化为中断或查询方式为系统服务; 内核激活(函数为kernelInit()):?????????使多任务微内核开始调度任务运行; 操作系统组件初始化:???????初始化用户应用需要的各种操作系统功能。 “处理器初始化”和“代码装入”即通常所说的引导代码(romInit.s和romStart.c)。 通常的启动过程为:引导,准备激活内核,激活内核,根任务运行。 VxWorks通过一个根任务usrRoot来完成“安装设备驱动”和“各种组件初始化”的操作。对内核而言,根任务和普通的用户任务一样。由于VxWorks的wind内核是一个微内核,所有的设备驱动和常规操作系统功能都不在内核中实现,因此通过一个普通任务即根任务完成设备驱动的安装和系统组件初始化。 4.?????????引导 引导过程是上电后最先执行的部分,确保系统代码会位于正确的位置。 系统开始函数是romInit(),然后跳转到romStart(),这两个函数都是在ROM/FLASH中开始执行。 romInit()是个和目标系统CPU特性直接相关的汇编程序,其短小精悍,所执行的最基本的硬件初始化只为了可以正确运行接下来的C语言程序romStart(),余下的初始化由一般初始化程序完成。 5.?????????准备激活内核 内核激活

文档评论(0)

企业资源 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档