第八章xilinx操作系统及库内容摘要:
程序映像文件。 Xilkernel负责 MicroBlaze和 PowerPC处理器第一级 中断和异常处理。 因此,设计人员不能直接处理中断。 而 在用户级上处理异常和中断; 使用最终的与核连接的软件应用工程的连接脚本特 性来控制核的存储器映射,可以使用自动的脚本产生来帮 助设计。 建立 Xilkernel应用程序 应用程序必须提供 main(),这是核映像文件中的执 行的开始点。 在 main()里,可以做需要的初始化和设置。 核保持未启动和休眠状态,在应用程序设置完成后,如果 想启动核,调用 xilkernel_main()来启动核,使能中断,将 控制转移给应用程序。 在调用 xilkernel_main()以前,必须 使能系统级特性。 建立 Xilkernel应用程序 这些是典型的机器状态特性,比如缓存的使能,硬 件异常的使能,必须总是打开,即使从一个应用程序到另 一个应用程序进行上下文切换( context switch)。 在应用程序的线程中,不允许随便改变机器状态。 如 果在修改机器状态时,产生了上下文的切换,将导致随后 的线程执行时,没有使能状态;所以必须在修改状态以 前,锁定上下文切换和中断。 Xilkernel处理模型 Xilkernel内的执行单位( unit)称为进程上下文 ( process context)。 在进程上下文级上进行调度。 这没有线程群的概念,这些群连在一起构成传统上的 进程。 对于资源来说,所有的线程是平等的。 POSIX 线程 API是最基本的用户可见到进程上下文的接口。 这也提供 了一些额外的其它的接口,它不是 POSIX的一部分。 使 用线程标识符来操作线程。 使用进程标识符 pid_t来操作 标识最基本的进程上下文。 Xilkernel调度模型 Xilkernel支持优先级驱动,时间片抢先调度 (SCHED_PRIO)或者简单的轮循( SCHED_RR)调度。 这 是全局调度策略而不能根据每个线程修改。 在产生核时必 须被静态配置。 在 SCHED_RR,有一个简单的准备队列和每个进程 上下文在一个可配置的时间片执行,当超出时间片时,就 执行队列的下一个进程上下文。 在 SCHED_PRIO,有很多准备队列,它们有优先级, 优先级 0是系统内的最高优先级,值越高优先级越低。 在 同一优先级的任务,采用轮循和时间片进行调度。 Xilkernel调度模型 对于上面的调度模型,准备队列的长度也可配置。 如 果在核中有等待队列(信号量,消息队列等),采用 SCHED_PRIO模型时,被配置成优先级队列。 否则,被 配置成 FIFO队列。 Xilkernel调度模型 图 进程上下文状态 PROC_NEW:一个新创建的进程 PROC_READY:一个准备执行的进程 PROC_RUN:正在运行的进程 PROC_WAIT:由于资源被阻塞的进程 PROC_DELAY:一个等待超时的进程 PROC_TIMED_WAIT:一个由于资源 被阻塞的进程,有一个相关的超时 Xilkernel功能 线程管理 Xilkernel支持最基本的 POSIX线程 API。 线程的创建和操作是以标准 POSIX符号来实现的。 线程使用唯一的 pthread_t标号来标识。 系统中所创建的进程都有一个核封装,当线程结束的 时候,将控制权交给核封装。 因此在线程代码的末尾不需 要一个指定的退出函数。 Xilkernel功能 线程管理 来自块开始符号 BSS存储器池(基于系统中的最大 线程静态分配)代表线程自动的分配线程堆栈。 也可 以为每一个去创建的线程动态分配定制的存储器作为 堆栈。 整个线程模块是可选的,可以配置成输入或输出来 作为软件规范的一部分。 Xilkernel功能 线程管理 ( 1) int pthread_create(pthread_t thread, pthread_attr_t* att, void*(*start_func)(void*),void* param) 创建线程并执行 参数: thread是存储线程 ID的地址, attr存储线程属性结 构体的地址, start_func线程函数名, param线程函 数参数指针。 返回: 0创建成功, 1线程 ID无效, EINVAL无效属性, EAGAIN资源不足。 ( 2) void pthread_exit(void *value_ptr) 参数:线程返回值的指针 结束一个线程,但这个函数并不是必须的。 需要用到返 回值时才使用。 Xilkernel功能 线程管理 ( 3) nt pthread_join(pthread_t thread, void **value_ptr) 参数: thread线程 ID, value_ptr线程返回值地址指针 返回: 0成功, ESRCH无效线程, EINVAL线程返回值 已经被使用停止当前线程等待目标线程执行完成 并返回值。 ( 4) pthread_t pthread_self(void) 返回:本线程 ID Xilkernel功能 线程管理 ( 5) int pthread_detach(pthread_t target) 返回: 0成功, ESRCH线程未创建回收线程存储资源, 但并不会结束线程 ( 6) int pthread_equal(pthread_t t1, pthread_t t2) 参数: t1和 t2两个待比较线程的 ID 返回: 1两线程是同一线程, 0其它情况 Xilkernel功能 线程管理 ( 7) int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param) 参数: thread线程 ID, policy全局调度策略指针, param 调度策略结构体地址 返回: 0成功, ESRCH线程无效, EINVAL调度参数无 效 函数返回个别线程的调度策略。 ( 8) int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param) 参数: thread线程 ID, policy忽略, param调度策略结构 体地址 返回: 0成功, ESRCH线程无效, EINVAL调度参数无 效 函数设置个别线程的调度策略。 Xilkernel功能 线程管理 ( 9) int pthread_attr_init(pthread_attr_t* attr) 参数:线程属性指针 返回: 0成功, 1未成功, EINVAL属性无效 按照默认设置初始化线程属性对象 attr ( 10) int pthread_attr_destroy (pthread_attr_t* attr) 参数:线程属性指针 返回: 0成功, EINVAL错误 函数销毁线程指针对象,设置成未定义值。 Xilkernel功能 线程管理 ( 11) int pthread_attr_setdetachstate(pthread_attr_t* attr, int dstate) 参数: attr属性结构体, dstate要设置的状态 返回: 0成功, EINVAL无效参数 设置线程状态 ( 12) int pthread_attr_getdetachstate(pthread_attr_t* attr, int *dstate) 参数: attr属性结构体, dstate获取的状态地址 返回: 0成功, EINVAL无效参数 获取线程状态: PTHREAD_CREATE_DETACHED 或者 PTHREAD_CREATE_JOINABLE Xilkernel功能 线程管理 ( 13) int pthread_attr_setschedparam(pthread_attr_t* attr, struct sched_param *schedpar) 参数: attr属性结构体, schedpar调度参数存储地址 返回: 0成功, EINVAL无效参数, ENOTSUP无效调 度参数 设置线程优先级, sched_param在 ( 14) int pthread_attr_getschedparam(pthread_attr_t* attr, struct sched_param* schedpar) 参数: attr属性结构体, schedpar线程调度参数指针 返回: 0成功, EINVAL无效参数 获取线程优先级。 Xilkernel功能 线程管理 ( 15) int pthread_attr_setstack(const pthread_attr_t *attr,_ void *stackaddr, size_t stacksize) 参数: attr属性结构体, stacksize堆栈地址 返回: 0成功, EINVAL堆栈设置不当 设置线程堆栈 ( 16) int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize) 参数: attr属性结构体, stackaddr堆栈地址指针, stacksize堆栈空间以字节为单位 返回: 0成功, EINVAL无效属性 获取线程的堆栈信息 Xilkernel功能 线程管理 ( 17) pid_t get_currentPID(void) 返回:当前正在运行的线程或操作的 ID ( 18) int kill(pid_tpid) 参数: pid线程或操作 ID。第八章xilinx操作系统及库
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
第八章并行接口与串行接口
输入 8255状态 N OBF=0? Y 从 8255输入一字符 返 回 从机写子程序 输入 8255状态 Y IBF=1? N 输出一字符 给 8255 返 回 2的功能及接口方法 工作特点 状态字格式 方式 2接口 接口方法举例 36 三种工作方式及接口方法 back 返 回 开 INTE2 开 INTE1 计数器 =0。 Y N 计数器 =计数器 1 输出数据给 8255 计数器 =0。
第八章结构化系统设计ssd
状结构。 它可以明显地分成输入、变换和输出三部分。 主加工是系统的变换中心。 图 示为一实例。 逻辑输出 逻辑输入 输入 物理输入 记帐凭证 报表 物理输出 帐薄 物理输出 凭证输入 凭证验证 日常帐务处理 月末结帐处理 打印帐薄 打印报表 输出 主加工 输入 图 变换型 ( 线状 ) 数据流图 线状数据流图可以分为典型情况与变形情况来讨论。 典型情况 f o外 o内 f i内 i外 变换中心
第八章现代仓储库存管理
)。 巴雷特在 1897年研究社会财富分配时,收集了许多国家的收入统计资料,得出收入与人口关系的规律,即占人口比重不大( 20%)的少数人的收入占总收入的大部分( 80%),而大多数人( 80%)的收入只占总收入的很小部分( 20%)。 由此他提出了所谓的“关键的少数和次要的多数”的结论。 • 1951年
第五课男生与女生之间
品学兼优、全面发展的好学生。 但她就是很少和男生交往,不得不和男生打交道时,也往往采用最简洁的语言。 在她看来,男女生应该规规矩矩,彼此不相来往,否则就是“不正经”。 晨晨的学习成绩一直在班里是数一数二的,而且她人长得很漂亮,弹得一手好钢琴,画一手好画,从小就在青少年宫学舞蹈。 可以说,她是一个品学兼优、全面发展的好学生。 但她就是很少和男生交往,不得不和男生打交道时,也往往采用最简洁的语言。