进程调度和内核数据结构

进程调度

1、 进程调度是确保进程能有效工作的一个内核子进程。调度程序是像linux这样的多任务操作系统的基础。最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么就总会有进程正在执行。但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行。
2、 多任务系统可以划分为两类:非抢占式多任务和抢占式多任务。时间片是分配给每个可运行进程的处理器时间段。有效管理时间片能使调度程序从系统全局的角度做出调度决定,这样做还可以避免个别进程独占系统资源。
3、 进程可以分为I/O消耗型和处理器消耗型。前者大部分时间用来提交I/O请求和等待I/O请求不需要长的时间片,后者时间大多用在执行代码上需要长的时间片。调度策略需要在进程响应迅速和最大系统利用率上寻找平衡。
4、 linux采用了两种不同的优先级范围。第一种是nice值,它的范围是从-20到+19,默认值为0;越大的nice值意味着更低的优先级。第二种范围是实时优先级,其值是可配置的,默认情况下它的变化范围是从0到99,越高的实时优先级数值意味着进程优先级越高。任何实时进程的优先级都高于普通进程,也就是说实时优先级和nice优先级处于互不相交的两个范畴。
可通过以下命令查案进程列表

ps-eo state,uid,pid,ppid,rtprio,time,comm

5、 时间片过长会导致系统对交互的响应表现欠佳,让人觉得系统无法并发执行应用程序;时间片太短会明显增大进程切换带来的处理器耗时,因为肯定会有相当一部分系统时间用在进程切换上,而这些进程能够用来运行的时间片却很短。
6、每个调度器都有一个优先级,基础的调度器代码定义在kernel/sched.c文件中,然后按照优先级顺序遍历调度类,决定要执行的进程。
7、 现代进程调度器的两个通用概念:进程优先级、时间片。

内核数据结构

1、链表中的元素都是动态创建并插入的,因为创建时间不同,所以内存中无须占用连续内存区。
2、链表有:单向链表、双向链表、环形单向链表、双向环形链表。
3、如果需要随机访问数据,一般不使用链表。使用链表存放数据的理想情况是,需要遍历所有数据或需要动态加入和删除数据时。
4、四种数据结构:链表、队列、映射、红黑树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庭一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值