《3-UNIXLinux操作系统编程-进程与线程》.ppt

《3-UNIXLinux操作系统编程-进程与线程》.ppt

  1. 1、本文档共144页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《3-UNIXamp;Linux操作系统编程-进程与线程》.ppt

* * * * * * * * * * * * * * 本示例程序可说明以下几个问题: 1、父子进程空间独立; 2、标准输出和文件输出的缓冲类型是不同的。 * * * * * * * * * * * * * * * * * * * * * * * 获取线程栈属性 函数原型 #includepthread.h int pthread_attr_getstack( const pthread_attr_t *attr, void **stackaddr, size_t *stacksize); 参数与返回值 attr:线程属性 stackaddr:该函数返回的线程栈的最低地址 stacksize:该函数返回的线程栈的大小 成功返回0,否则返回错误编号 * 设置线程栈属性 函数原型 #includepthread.h int pthread_attr_setstack( const pthread_attr_t *attr, void *stackaddr, size_t *stacksize); 当用完线程栈时,可以再分配内存,并调用本函数设置新建栈的位置 * 设置线程栈属性 参数与返回值 attr:线程属性 stackaddr:新栈的内存单元的最低地址,通常是栈的开始位置;对于某些处理器,栈是从高地址向低地址方向伸展的,stackaddr就是栈的结尾 stacksize:新栈的大小 成功返回0,否则返回错误编号 * 获取、设置栈大小 函数原型 #includepthread.h int pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize);; int pthread_attr_setstacksize( pthread_attr_t *attr, size_t stacksize);; 若希望改变栈的默认大小,但又不想自己处理线程栈的分配问题,可以使用上述函数 * guardsize属性 线程属性guardsize控制着线程栈末尾之后用以避免栈溢出的扩展内存的大小 该属性的默认设置为PAGESIZE个字节 注意:若对stackaddr属性进行了修改,则系统认为我们会自己管理栈,并使警戒栈缓冲区机制无效,即guardsize=0 * 设置、获取guardsize属性 函数原型 #includepthread.h int pthread_attr_getguardsize( const pthread_attr_t *attr, size_t *guardsize); int pthread_attr_setguardsize( pthread_attr_t *attr, size_t *guardsize); 若栈指针溢出到警戒区域,应用程序可能通过信号接收到出错信息 * * 调度策略 在操作系统中,调度策略主要有: FIFO先入先出原则:首先请求服务的对象首先得到CPU的处理。 最短作业优先原则:需要最小系统时间的服务首先得到处理。 最高优先级优先原则:优先级最高的服务首先得到处理。 时间轮片原则:每个任务分配一个系统时间片,轮流执行。 POSIX为线程指定了三个调度策略: SCHED_OTHER:系统默认策略。如时间轮片策略或基于优先级的调度策略。 SCHED_FIFO:先进先出原则。具有最高优先级的、等待时间最长的线程将成为下一个要执行的线程。 SCHED_RR:轮转调度。类似于FIFO,但加上了时间轮片策略。 * * 获取/设置线程属性调度属性 * * 获取/设置调度策略属性 * 设置线程是否绑定 关于绑定的概念,牵涉到轻进程(LWP:Light Weight Process)的概念 轻进程可以理解为内核线程,它位于用户层和系统层之间。系统对线程资源的分配、对线程的控制是通过轻进程来实现的,一个轻进程可以控制一个或多个线程 默认状况下,启动多少轻进程、哪些轻进程来控制哪些线程是由系统来控制的,这种状况即称为非绑定的 绑定状况即某个线程固定的绑在一个轻进程之上。被绑定的线程具有较高的响应速度,这是因为CPU时间片的调度是面向轻进程的,绑定的线程可以保证在需要的时候总有一个轻进程可用 通过设置被绑定的轻进程的优先级和调度级可以使得绑定的线程满足诸如实时反应之类的要求 * 设置线程是否绑定 获取线程绑定使用函数pthread_attr_getscope,函数原型如下: int pthread_attr_getscope(const pthread_attr_t *attr, int *contentionscop

文档评论(0)

wfkm + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档