<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>算法 _ 扒房网</title>
	<atom:link href="https://www.gxjlyf.com/tag/17273/feed" rel="self" type="application/rss+xml" />
	<link>https://www.gxjlyf.com</link>
	<description>手机系统教程_手机软件教程_手机app使用教程_电脑软件教程_电脑系统教程</description>
	<lastBuildDate>Sun, 27 Nov 2022 03:27:55 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>今天分享进程调度是什么意思</title>
		<link>https://www.gxjlyf.com/863531.html</link>
		
		<dc:creator><![CDATA[bafang18]]></dc:creator>
		<pubDate>Sun, 27 Nov 2022 03:27:55 +0000</pubDate>
				<category><![CDATA[PC教程]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[进程]]></category>
		<guid isPermaLink="false">https://www.chuwenyu.com/863531.html</guid>

					<description><![CDATA[进程调度是什么意思？对于进程大家再熟悉不过了，那么对于进程调度程序大家了解吗？熟悉操作系统的用户都知道，用户进 ...]]></description>
										<content:encoded><![CDATA[<p><strong>进程调度是什么意思？</strong>对于进程大家再熟悉不过了，那么对于进程调度程序大家了解吗？熟悉操作系统的用户都知道，用户进程数一般都多于处理机数，这就导致了进程会争夺处理机的情况，这时候进程调度程序就派上用场了。可能很多伙伴都会好奇进程调度程序是怎么实现调度的呢？下面给大家总结了操作系统常见的五种进程调度算法。</p>
<p><img decoding="async" alt="进程调度是什么意思？操作系统常见的五种进程调度算法" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221127032754-6382d93a40a6f.jpg" /></p>
<p><strong>进程调度是什么意思？</strong></p>
<p>无论是在批处理系统还是分时系统中，用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外，系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略，动态地把处理机分配给处于就绪队列中的某一个进程，以使之执行。</p>
<p><strong>操作系统的常见进程调度算法：</strong></p>
<p><strong>一、先来先服务 （FCFS，first come first served）</strong></p>
<p>在所有调度算法中，最简单的是非抢占式的FCFS算法。</p>
<p>算法原理：进程按照它们请求CPU的顺序使用CPU.就像你买东西去排队，谁第一个排，谁就先被执行，在它执行的过程中，不会中断它。当其他人也想进入内存被执行，就要排队等着，如果在执行过程中出现一些事，他现在不想排队了，下一个排队的就补上。此时如果他又想排队了，只能站到队尾去。</p>
<p>算法优点：易于理解且实现简单，只需要一个队列（FIFO），且相当公平</p>
<p>算法缺点：比较有利于长进程，而不利于短进程，有利于CPU 繁忙的进程，而不利于I/O 繁忙的进程</p>
<p><strong>二、最短作业优先（SJF， Shortest Job First）</strong></p>
<p>短作业优先（SJF， Shortest Job First）又称为&ldquo;短进程优先&rdquo;SPN（Shortest Process Next）；这是对FCFS算法的改进，其目标是减少平均周转时间。</p>
<p>算法原理：对预计执行时间短的进程优先分派处理机。通常后来的短进程不抢先正在执行的进程。</p>
<p>算法优点：相比FCFS 算法，该算法可改善平均周转时间和平均带权周转时间，缩短进程的等待时间，提高系统的吞吐量。</p>
<p>算法缺点：对长进程非常不利，可能长时间得不到执行，且未能依据进程的紧迫程度来划分执行的优先级，以及难以准确估计进程的执行时间，从而影响调度性能。</p>
<p><strong>三、最高响应比优先法（HRRN，Highest Response Ratio Next）</strong></p>
<p>最高响应比优先法（HRRN，Highest Response Ratio Next）是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短，而SJF方式只考虑执行时间而未考虑等待时间的长短。因此，这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短，从中选出响应比最高的作业投入执行。这样，即使是长作业，随着它等待时间的增加，W / T也就随着增加，也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。</p>
<p>算法原理：响应比R定义如下： R =（W+T）/T = 1+W/T</p>
<p>其中T为该作业估计需要的执行时间，W为作业在后备状态队列中的等待时间。每当要进行作业调度时，系统计算每个作业的响应比，选择其中R最大者投入执行。</p>
<p>算法优点：由于长作业也有机会投入运行，在同一时间内处理的作业数显然要少于SJF法，从而采用HRRN方式时其吞吐量将小于采用SJF 法时的吞吐量。</p>
<p>算法缺点：由于每次调度前要计算响应比，系统开销也要相应增加。</p>
<p><strong>四、时间片轮转算法（RR，Round-Robin）</strong></p>
<p>该算法采用剥夺策略。时间片轮转调度是一种最古老，最简单，最公平且使用最广的算法，又称RR调度。每个进程被分配一个时间段，称作它的时间片，即该进程允许运行的时间。</p>
<p>算法原理：让就绪进程以FCFS 的方式按时间片轮流使用CPU 的调度方式，即将系统中所有的就绪进程按照FCFS 原则，排成一个队列，每次调度时将CPU 分派给队首进程，让其执行一个时间片，时间片的长度从几个ms 到几百ms。在一个时间片结束时，发生时钟中断，调度程序据此暂停当前进程的执行，将其送到就绪队列的末尾，并通过上下文切换执行当前的队首进程，进程可以未使用完一个时间片，就出让CPU（如阻塞）。</p>
<p>算法优点：时间片轮转调度算法的特点是简单易行、平均响应时间短。</p>
<p>算法缺点：不利于处理紧急作业。在时间片轮转算法中，时间片的大小对系统性能的影响很大，因此时间片的大小应选择恰当</p>
<p>怎样确定时间片的大小：</p>
<p>1、系统对响应时间的要求</p>
<p>2、就绪队列中进程的数目</p>
<p>3、系统的处理能力</p>
<p><strong>五、多级反馈队列（Multilevel Feedback Queue）</strong></p>
<p>多级反馈队列调度算法是一种CPU处理机调度算法，UNIX操作系统采取的便是这种调度算法。</p>
<p>多级反馈队列调度算法描述：</p>
<p>1、进程在进入待调度的队列等待时，首先进入优先级最高的Q1等待。</p>
<p>2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程，则调度次优先级队列中的进程。例如：Q1，Q2，Q3三个队列，只有在Q1中没有进程等待时才去调度Q2，同理，只有Q1，Q2都为空时才会去调度Q3。</p>
<p>3、对于同一个队列中的各个进程，按照时间片轮转法调度。比如Q1队列的时间片为N，那么Q1中的作业在经历了N个时间片后若还没有完成，则进入Q2队列等待，若Q2的时间片用完后作业还不能完成，一直进入下一级队列，直至完成。</p>
<p>4、在低优先级的队列中的进程在运行时，又有新到达的作业，那么在运行完这个时间片后，CPU马上分配给新到达的作业（抢占式）。</p>
<p>在多级反馈队列调度算法中，如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时，便能够较好的满足各种类型用户的需要。</p>
<p>今天说说进程调度的算法就给大家概括到这里了，经过小编的总结，相信大家对于进程调度程序都有一定了解了吧。</p>

<p><img src="https://www.gxjlyf.com/postviews/863531.png" /></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>今天分享十进制转二进制的方法</title>
		<link>https://www.gxjlyf.com/857255.html</link>
		
		<dc:creator><![CDATA[bafang18]]></dc:creator>
		<pubDate>Fri, 25 Nov 2022 04:58:34 +0000</pubDate>
				<category><![CDATA[PC教程]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[算法]]></category>
		<guid isPermaLink="false">https://www.chuwenyu.com/857255.html</guid>

					<description><![CDATA[十进制转二进制的过程，说白点就是把人类算数的方式转换成机器语言（二进制），前者数据量巨大，后者只有0和1，占用 ...]]></description>
										<content:encoded><![CDATA[<p>十进制转二进制的过程，说白点就是把人类算数的方式转换成机器语言（二进制），前者数据量巨大，后者只有0和1，占用很小，我们所熟悉的CPU便是使用二进制算法处理进程的，当然，二进制的使用可能较少，但我们有理由去了解。</p>
<p>十进制（以十为基础进位）数系的每一个位值有十个可能的值（0、1、2、3、4、5、6、7、8、9）。相反二进制（以二为基数进位）数系只有两个可能的值，即0和1。二进制系统是电子计算机的基本语言，真正的电脑程序员应了解如何将数字从十进制转换为二进制。</p>
<p>如果你是程序员，相信你已经足够了解转换方法了。</p>
<p>十进制转二进制的方法</p>
<p><strong>方法一、余数短除法除以二</strong></p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045828-63804b7403563.jpg" /></p>
<p>1、明确问题。举个例子，我们现在是要将一个十进制数字15610转换成二进制数字。先将这个十进制数作为被除数写在一个倒着的&ldquo;长除法&rdquo;的符号里。把目标数系的基数（在这里二进制是&ldquo;2&rdquo;）作为除数写在这个除法符号的外面。</p>
<p>用这个方法将计算过程可视化会更方便理解，因为整个计算过程只需将数字一直除以2。</p>
<p>为了防止转换前后发生混淆，建议将数系的基数写作每个数字的脚注形式。在本例中，十进制数字的脚注为10，二进制数字的脚注为2。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045828-63804b7487c9a.jpg" /></p>
<p>2、进行除法运算。把结果的整数部分（商数）写在长除法符号的下面，然后把它的余数（0 或 1）写在被除数的右边。</p>
<p>我们现在是以2为除数，因此得出的商为偶数，则余数为0；如果得出商为奇数，则余数记为1。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045829-63804b7521890.jpg" /></p>
<p>3、一直往下继续除，直到商为0为止。把每一个新的商数除以二，然后把余数写在被除数的右边。直到商数为0为止。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045829-63804b75b3e6a.jpg" /></p>
<p>4、写出新的二进制数字。从最下面的余数开始，按顺序读到最上面。本例中，你会得到10011100。这就是十进制数字156的二进制形式。或者，我们可以以脚注等式的形式表达，即：15610 = 100111002</p>
<p>活用这个方法可以将所有十进制数字转换成任何进制表达。除数为2是因为我们最终想得到的以2为基数的数（即二进制数值） 。如果最终想得到其他数系的数字，用目标数系的基数代替这个方法里二进制的基数2 就可以了。例如，要得到基数为9的数，就用9来代替2作为除数 。最终的结果就是目标数系的数字表达。</p>
<p><strong>方法二、降二次幂及减法混合运算</strong></p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045830-63804b7650a36.jpg" /></p>
<p>1、列表。将以2为底数的幂函数以表格形式从右到左列出来。从20开始，20为1。指数加一递增。列表直至函数值最接近需要计算的十进制数字为止。比如说，我们现在要将十进制数字15610转换为二进制。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045830-63804b76e3904.jpg" /></p>
<p>2、找出最合适的幂函数值。找出小于且最接近需计算数字的幂函数值。在本例中，128是小于156的、以2为底数的幂函数值中最大的数值。所以在二进制列表128的下方写上1。然后用156减去128，得出28。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045831-63804b777cd48.jpg" /></p>
<p>3、继续计算。刚刚得出新得数28继续进行比较计算，看看哪一个幂函数值小于28。函数列表的下一个数字为64，64大于28，所以在64下方写上0。如此类推，看看那个数字小于28。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045832-63804b781d02f.jpg" /></p>
<p>4、能减的数字记为1。本例中，64和48都不能被28减，得出正数。16可以被28减，得出12。8也能被12减，得出正数，所以在16和8下方都写上1。现在的差为4。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045832-63804b78aeccd.jpg" /></p>
<p>5、继续减法运算，直到列表的最后。记住在能被差减得出正数的数字下面记录为1，不能被减的数字下面记录为0。</p>
<p><img decoding="async" alt="十进制转二进制的方法 10进制转2进制算法介绍" src="https://dz.cwhello.com/wp-content/uploads/2022/11/20221125045833-63804b794c6f4.jpg" /></p>
<p>6、写出二进制答案。得出的二进制数值就是列表下记录的数字排列。你应该能得出10011100。这就是十进制数字156的二进制表达。或者，我们可以以脚注等式的形式表达，即：15610 = 100111002</p>
<p>多次反复使用这个方法，你就能基本记住以2为底数的幂函数的值。就可以跳过第一步列表的步骤了。</p>
<p><strong>小提示：</strong></p>
<p>● 操作系统里安装好的计算器也可以用作十进制和二进制之间的转换，但作为一个程序员，能清楚地了解这个转换的原理会更好，点击&ldquo;查看&rdquo; 然后选择 &ldquo;程序员&rdquo;就可以看到转换器了。</p>
<p>● 反过来转换，从二进制转换为十进制通常更容易入门。</p>
<p>● 多练习，试着转换十进制数 17810，6310，和 810。你会分别得到以下二进制答案 ：101100102，今天分享2，和10002. 试着转换20910，2510，和 24110，会得出110100012，110012，和111100012.</p>
<p>以上内容便是十进制转二进制的方法介绍，二进制虽然是当下计算机流行的一种架构，但计算机并不仅仅只有二进制，还有三进制算法，这是后话&hellip;&hellip;</p>

<p><img src="https://www.gxjlyf.com/postviews/857255.png" /></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
