关于 *** 作系统的进程调度问题

关于 *** 作系统的进程调度问题,第1张

首先硬件机制上如何保证 *** 作系统的内核调度进程可以一定的时机可以获得CPU,来进行进程调度

通常我们会在软件层次上找答案其实,是通过在CPU的硬件处理机制上实现的CPU在执行完每个指令的周期后回扫描CPU的内部的一个中断寄存器,查询是否存在中断发生,若没有,则继续执行指令;若有,则保存当前的CPU工作环境,跳转到中断服务列程,CPU执行中断服务程序,在推出中断后,跳转到内核调度程序(这是个内核程序,但是是对所有的进程共享的,包括用户进程);此时,内核调度程序占据CPU,进行进程的调度,以决定下个将占用CPU的进程

接下来就要谈谈什么时候会需要进行进程调度

在教科书书说到的有几种情况:1时间片到,即每个进程所分配的时间片用完后,要跳转到调度程序; 2 占用CPU的当前运行进程提出I/O *** 作,发起对内核的系统调用时,在系统调用结束后,跳转到调度程序; 3 我自己的想法: 当前运行进程对所有内核系统调用的结束时都要跳转到调度程序,根据当前的调度信息来决定下一个可以占用CPU的进程 我所指的系统调用也包括中断列程不过对与具体的调度时机,很多书上都写的不清不楚,真不知道他们不懂,还是不屑于写出来告诉我们 其实除了在大多数硬件中断的触发后跳转到调度程序, 每个时钟中断发生的时候,我觉得都需要跳转到调度程序(在进入时钟中断列程中,要对进程表中的所有的进程的调度信息进行更新和对各个进程队列的处理),对更新后的进程信息进行处理以决定调度哪个进程 通常的教科书中都将硬件物理的处理机制和软件的调度处理机制分开,在物理和逻辑两个层次上分开谈,不利于我们理解最好是把这两个结合起来理解进程调度的工作机制目前需要解决的是:在什么时候需要内核调度程序占据CPU来调度 至于调度的算法那就是逻辑层次上要考虑的东西

其实看了这么多,我也有了些小论文的想法, 因为做的方向是应用在电子电力电路上的嵌入系统控制该应用对嵌入 *** 作系统的性能就有些特殊的需求:首先体积要小,速度快;内核就要小,进程调度要实现抢占式任务调度,且调度切换要快它的进程调度与通用 *** 作系统的进程调度不同,这是因为它们的要求不一样,嵌入式通常是要求是实时,且严格的讲在电路上的控制系统应该是硬实时,而不象通用系统是非实时,或者是软实时这跟它们对实时性的要求不同所以我初步定个题目 "嵌入式系统和通用系统在进程调度上比较和分析,并针对特定的电路控制嵌入实时系统提出一个调度策略" 我想我从明天开始就要准备这方面的资料,分析分析,比较比较,弄篇小论文出来,,不然我都快给它凡死了

*** 作系统-----进程调度

[color=Silver][/color][color=Gray][/color][color=Fuchsia][/color][color=Blue][/color][color=Aqua][/color][color=Lime][/color][size=4][font=楷体_GB2312][b]要求:实现按优先级与时间片相结合的进程调度算法

内容:

1:设计进程控制快,进程队列结构(包括:就绪队列,等待队列,运行队列)等必要的数据结构。

2:模拟 *** 作系统进程调度的功能,编写进程调度程序,模拟的处理机分派程序,进程等待函数和进程唤醒函数。

3:编写用户程序,创建6个用户进程。

进程调度的设计方法

1。数据结构

(1)优先级与时间片的设计

◆进程因等待放弃CPU时,优先级置为1(高优先级)

◆进程因时间片到放弃CPU时,优先级置为0(低优先级)

◆优先1对应时间片4;优先级0对应时间片10。

(2)进程控制块(PCB)的内容

进程标识3---9

进程优先级 0,1

进程优先级 0,1

进程等待时间 20

链接指针

2:程序算法

(1)PCB结构,变量与主程序

struct PCB

{

int pname;

int pri;

int runtime;

int waitting;

struct PCBnext;

}

pcb[7];

struct PCBrunning,ready,wait;

int sin=0;

main()

{ 创建PCB[3]--PCB[9]并插入ready队列;/pname分别为3--9,

pri=0,runtime=10,waittime=0 /

for(;;)/系统程序,完成初始化和处理机分派功能 /

{cast{sig=0:swtch;

sig=1:waiter;

sig=3:proc3;

sig=4:proc4;

sig=5:proc5;

sig=6:proc6;

sig=7:proc7;

sig=8:proc8;

sig=9:proc9;}

}

}

(2) 进程调度程序

swtch()

{

while(ready==NULL)wakeup();

移出就绪队列第一个PCB;

送running指针;

若pri=1,则runntime=4,否则runtime=10;

将running→pname 送sig

}

(3) 将进程等待函数

wait()

{将运行进程插入wait队列,优先数置1;

sig=0;

}

(4) 进程唤醒函数

wakeup()

{

将wait队列中所有的PCB中waittime减1;

将wait队列中的所有的waittime=0的PCB揭除;

插入到ready队列中第一个优先级为0的PCB前面

}[/b][/font][/size]

TCP拥塞控制主要有三个问题:1一个TCP发送方是如何控制它向其连接发送流量的速率;2一个TCP发送方是如何感知从它到目的地之间的路径上存在拥塞;3当发送方感知拥塞时利用什么策略(算法)来改变其发送速率。以TCP Reno拥塞控制算法来研究TCP拥塞控制:首先解决第一个问题,TCP连接的每一端都由一个接受缓存,一个发送缓存和几个变量组成,TCP拥塞控制机制让连接的每一端都记录一个额外的变量,即拥塞窗口,表示为CongWin。第二个问题:定义一个TCP发送“丢包事件”为:出现超时,或者收到来自接收方的3个冗余ACK。当拥塞发生时,会触发丢包事件。第三个问题:控制算法,这个是重点。1加性增,乘性减;2慢启动;3对超时事件作出反应。

Linux内核从25版本开始引入了强力的加密机制,主要原因有:删除冗余代码、支持IPSec协议以及通用的加密功能等。将来的应用会包括:硬件加密设备驱动、内核代码签名、硬件随机数生成器、文件系统加密等。

二、如何使用加密API

1、安装

从266版本之后,内核源码就提供了丰富的密码学算法支持,需要配置编译选项将加密算法作为模块编入内核。如图所示,menuconfig的时候配置这部分选项

分类: 电脑/网络 >> *** 作系统/系统故障

问题描述:

请问各位大虾

Windows进程调度的方式有那几种?

谢谢了

解析:

高级调度:又称作业调度。其主要功能是根据一定的算法,从输人的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输人、输出进程),最后把它们的程序和数据调人内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。

低级调度:又称进程调度。其主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。执行低级调度功能的程序称做进程调度程序,由它实现CPU在进程间的切换。进程调度的运行频率很高,在分时系统中往往几十毫秒就要运行一次。进程调度是 *** 作系统中最基本的一种调度。在一般类型的 *** 作系统中都必须有进程调度,而且它的策略的优劣直接影响整个系统的计能。

中级调度:又称交换调度。为了使内存中同时存放的进程数目不至于太多,有时就需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此设立了中级调度。特别在采用虚拟存储技术的系统或分时系统中,往往增加中级调度这一级。所以中级调度的功能是在内存使用情况紧张时,将一些暂时不能运行的讲程从内存对换到外存上等待。当以后内存有足够的空闲空间时,再将合适的进程重新换人内存,等待进程调度。引人中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储器管理中的对换功能

下面说说进程调度的策略问题(引用参考资料内容):

首先硬件机制上如何保证 *** 作系统的内核调度进程可以一定的时机可以获得CPU,来进行进程调度

通常我们会在软件层次上找答案其实,是通过在CPU的硬件处理机制上实现的CPU在执行完每个指令的周期后回扫描CPU的内部的一个中断寄存器,查询是否存在中断发生,若没有,则继续执行指令;若有,则保存当前的CPU工作环境,跳转到中断服务列程,CPU执行中断服务程序,在推出中断后,跳转到内核调度程序(这是个内核程序,但是是对所有的进程共享的,包括用户进程);此时,内核调度程序占据CPU,进行进程的调度,以决定下个将占用CPU的进程

接下来就要谈谈什么时候会需要进行进程调度

在教科书书说到的有几种情况:1时间片到,即每个进程所分配的时间片用完后,要跳转到调度程序; 2 占用CPU的当前运行进程提出I/O *** 作,发起对内核的系统调用时,在系统调用结束后,跳转到调度程序; 3 我自己的想法: 当前运行进程对所有内核系统调用的结束时都要跳转到调度程序,根据当前的调度信息来决定下一个可以占用CPU的进程 我所指的系统调用也包括中断列程不过对与具体的调度时机,很多书上都写的不清不楚,真不知道他们不懂,还是不屑于写出来告诉我们 其实除了在大多数硬件中断的触发后跳转到调度程序, 每个时钟中断发生的时候,我觉得都需要跳转到调度程序(在进入时钟中断列程中,要对进程表中的所有的进程的调度信息进行更新和对各个进程队列的处理),对更新后的进程信息进行处理以决定调度哪个进程 通常的教科书中都将硬件物理的处理机制和软件的调度处理机制分开,在物理和逻辑两个层次上分开谈,不利于我们理解最好是把这两个结合起来理解进程调度的工作机制目前需要解决的是:在什么时候需要内核调度程序占据CPU来调度 至于调度的算法那就是逻辑层次上要考虑的东西

其实看了这么多,我也有了些小论文的想法, 因为做的方向是应用在电子电力电路上的嵌入系统控制该应用对嵌入 *** 作系统的性能就有些特殊的需求:首先体积要小,速度快;内核就要小,进程调度要实现抢占式任务调度,且调度切换要快它的进程调度与通用 *** 作系统的进程调度不同,这是因为它们的要求不一样,嵌入式通常是要求是实时,且严格的讲在电路上的控制系统应该是硬实时,而不象通用系统是非实时,或者是软实时这跟它们对实时性的要求不同所以我初步定个题目 "嵌入式系统和通用系统在进程调度上比较和分析,并针对特定的电路控制嵌入实时系统提出一个调度策略" 我想我从明天开始就要准备这方面的资料,分析分析,比较比较,弄篇小论文出来,,不然我都快给它凡死了

*** 作系统-----进程调度

[/color][color=Gray][/color][color=Blue][/color][color=Lime] 要求:实现按优先级与时间片相结合的进程调度算法

内容:

1:设计进程控制快,进程队列结构(包括:就绪队列,等待队列,运行队列)等必要的数据结构。

2:模拟 *** 作系统进程调度的功能,编写进程调度程序,模拟的处理机分派程序,进程等待函数和进程唤醒函数。

3:编写用户程序,创建6个用户进程。

进程调度的设计方法

1。数据结构

(1)优先级与时间片的设计

◆进程因等待放弃CPU时,优先级置为1(高优先级)

◆进程因时间片到放弃CPU时,优先级置为0(低优先级)

◆优先1对应时间片4;优先级0对应时间片10。

(2)进程控制块(PCB)的内容

进程标识3---9

进程优先级 0,1

进程优先级 0,1

进程等待时间 20

链接指针

2:程序算法

(1)PCB结构,变量与主程序

struct PCB

{

int pname;

int pri;

int runtime;

int waitting;

struct PCBnext;

}

pcb[7];

struct PCBrunning,ready,wait;

int sin=0;

main()

{ 创建PCB[3]--PCB[9]并插入ready队列;/pname分别为3--9,

pri=0,runtime=10,waittime=0 /

for(;;)/系统程序,完成初始化和处理机分派功能 /

{cast{sig=0:swtch;

sig=1:waiter;

sig=3:proc3;

sig=4:proc4;

sig=5:proc5;

sig=6:proc6;

sig=7:proc7;

sig=8:proc8;

sig=9:proc9;}

}

}

(2) 进程调度程序

swtch()

{

while(ready==NULL)wakeup();

移出就绪队列第一个PCB;

送running指针;

若pri=1,则runntime=4,否则runtime=10;

将running→pname 送sig

}

(3) 将进程等待函数

wait()

{将运行进程插入wait队列,优先数置1;

sig=0;

}

(4) 进程唤醒函数

wakeup()

{

将wait队列中所有的PCB中waittime减1;

将wait队列中的所有的waittime=0的PCB揭除;

插入到ready队列中第一个优先级为0的PCB前面

以上就是关于关于 *** 作系统的进程调度问题全部的内容,包括:关于 *** 作系统的进程调度问题、如何在运行的内核中选择tcp拥塞控制算法、linux内核算法接口需要填充吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10142528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存