三、处理机管理(四)--windows / linux 的进程及其调度

  • windows的进程和线程

  1. 进程具有以下两个基本特征:(1)进程是系统进行资源分配的基本单位;(2)进程是系统进行处理机调度分派的单位。

  2. Windows Server 2008把这两个特征分开处理:进程拥有“资源拥有者”的特征;线程拥有“调度和运行”的特征。

  3. 线程是进程的一个实体,是进程中实施调度和处理机分派的基本单位。

  4. Windows Server 2008进程控制块(EPROCESS)的基本内容:进程的ID、安全描述符、基本优先级、内存管理信息、执行时间、进程环境块(PEB)、链接指针。

  5. Windows Server 2008线程控制块的基本内容:线程的ID、动态优先级、线程环境块(TEB)、指向线程所属进程的EPROCESS的指针、线程类别、执行时间、I/O信息。

  6. 在Windows Server 2008中,进程有 就绪、运行、等待(阻塞)三种基本状态; 线程有 就绪(Ready)、备用(Standby)、运行(Running)、等待(Waiting)、转换(Transition)和终止(Terminated)六种可能的状态。

  7. 使用系统调用 Create_Thread() 创建一个线程时,该线程处于“初始化”阶段。

  8. 进程和线程的区别:(1)地址空间。不同进程的地址空间是相互独立的,同一进程的各个线程共享同一个地址空间。因此,进程中的线程不可能被另一个进程所看见。(2)通信关系。不同进程间的通信,必须使用操作系统提供的进程通信机制。同一进程的各个线程间的通信,可以直接通过访问共享的进程地址空间来实现。(3)调度切换。不同进程间的调度切换,系统要花费很大的开销。同一进程的线程间的切换,无须转换地址空间,显然会减少很多的系统开销。

  9. 在系统运行的过程中,以下四种情况会引起对线程的调度:(1)一个线程进入就绪状态;(2)一个线程运行的时间片用完;(3)一个线程的优先级被改变;(4)一个运行线程改变他对亲和处理机的要求。

  10. 在Windows Server 2008里,进程有四种优先级:实时(Real-Time   默认取值24)、高(High  13)、普通(Normal  7或9)、空闲(Idle   4)。

  11. 在Windows Server 2008里,一旦线程被创建,就取所属进程的优先级。线程的优先级可以取0~31的值。(1)16个实时线程优先级(16~31);(2)15个可变线程优先级(1~15);(3)1个系统线程优先级(0,零页线程)

  12. 线程时间的配额,就是所谓的时间片,它不是一个时间的长度值,而是一个配额单位的整数。   线程运行时的时间配额,是由用户在注册时指定的。每个注册项为6个二进制位,分成3个字段:(1)“时间配额长度”。取值为1 = 长时间配额;2 = 短时间配额;0或3 = 默认设置  (2)“前后台变化”。1 = 要改变前台线程的时间配额; 2 = 前后台线程的时间配额相同; 0或3 = 默认设置(3)“前台线程时间配额的提升”。 该字段只能取值0/1/2。

  13. 线程调度的管理:(1)线程调度器就绪对列表。线程排在哪个就绪队列里,与它属于哪个进程没有关系。(2)就绪位图;(3)空闲位图。
  14. Windows Server 2008在下面5种情况下,会提升一个线程的当前优先级。(1)某I/O操作完成之后;(2)所等待的事件或信号量到来后;(3)前台线程在等待结束后;(4)图形用户接口线程被唤醒后;(5)提高处理机饥饿线程的优先级。
  15. 线程优先级的提升,是以其基本优先级为基点的。
  • Linux的进程及其调度

  1. 在linux里,进程运行用户程序时,其处于“用户模式”;进程运行时出现系统调用或中断事件,转而去执行操作系统内核的程序时,处于“核心模式”。
  2. CPU执行用户的程序,linux里处理机处于“用户态”;CPU执行操作系统的程序,处理机处于:核心态。
  3. 进程,通过系统调用 fork 命令创建, 通过系统调用 exec 命令运行一个新的程序, 通过系统调用 exit 命令终止执行。
  4. linux进程实体的组成:(1)进程控制块(进程描述符):进程标识,进程状态,进程调度信息,接收的信号,进程家族关系,进程队列指针,CPU的现场保护区,与文件系统有关的信息;(2)进程专用的系统堆栈空间、(3)供进程执行的程序段(正文段)、(4)进程专用的数据段和用户堆栈空间。
  5. linux的进程状态:可运行状态(TASK_RUNNING)、可中断状态(TASK_INTERRUPTIBLE)、不可中断状态(TASK_UNINTERRUPTIBLE)、暂停状态(TASK_STOPPED)、僵死状态(TASK_ZOMBIE)
  6. 在linux中,除了初始化进程外,其他进程都是用系统调用 fork() 和clone() 创建的。区别: fork() 创建的子进程把父进程的所有资源都继承下来。 clone() 子进程只是有选择的继承父进程的资源。
  7. 创建的子进程要执行自己的程序时,通过系统调用 exec() 来完成。
  8. linux的进程调度。实时进程调度和非实时进程调度。
  9. linux进程描述符中与调度有关的字段:(1)policy。进程调度字段。可以取三个值:SCHED_FIFO实时进程的先进先出调度策略,抢占式;SCHED_RR实时进程的轮转调度,抢占式;SCHED_OTHER非实时进程的轮转调度;    (2)priority进程的优先级    (3)rt_priority   实时进程的优先级 (4)counter   时间片计数器
  10. linux的等待队列,要弄到 wait_queue 结构。(1)next,指向下一个 wait_queue 节点。因此,linux里面的每一个等待队列都是由next链接而成的单链表;(2)task,指向进程 task_struct 结构的指针。

参考自《操作系统实用教程》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值