進程調度演算法java
Ⅰ java進程調度中為什麼進程名都是1
摘要 Linux2.4版本使用的調度演算法的時間復雜度為O(n),其主要原理是通過輪詢所有可運行任務列表,然後挑選一個最合適的任務運行,所以其時間復雜度與可運行任務隊列的長度成正比。
Ⅱ Java調度演算法 來個大神寫程序 選擇一個調度演算法,實現處理器調度。
public class CLSS_ch2 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 10 == 3)
continue;
sum += i;
}
System.out.println(sum);
}
}
計算機圖形技術組的成員在1993年開發出了 Lua。它被設計成為腳本語言,是一種不可獲取的過程式編程語言,以簡單而強大而聞名。
Ⅲ 優先順序調度演算法如何用JAVA實現
在多線程時,可以手動去設置每個線程的優先順序setPriority(int newPriority)
更改線程的優先順序。
Ⅳ 求磁碟調度演算法scan演算法的java代碼
1、先來先服務演算法(FCFS)First Come First Service
這是一種比較簡單的磁碟調度演算法。它根據進程請求訪問磁碟的先後次序進行調度。此演算法的優點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現某一進程的請求長期得不到滿足的情況。此演算法由於未對尋道進行優化,在對磁碟的訪問請求比較多的情況下,此演算法將降低設備服務的吞吐量,致使平均尋道時間可能較長,但各進程得到服務的響應時間的變化幅度較小。
先來先服務 (125)86.147.91.177.94.150.102.175.130
[java] view plain print?
Ⅳ 求一個先來先服務調度演算法的程序 java編的
import java.util.ArrayList;
import java.util.List;
public class Question {
// 調度總站
class DiaoDuZhan{
private List<Client> list;
public Client getClient(){ // 獲得客戶
if(list != null && list.size() > 0){
Client client = list.get(0);
list.remove(client);
return client;
}else{
return null;
}
}
public void addClient(Client client){
if(list == null){
list = new ArrayList<Client>();
}
list.add(client);
}
}
// 客戶
interface Client{
public void setService(Service service);
public Service getSerive();
}
// 服務
interface Service{
public void doService();
}
// 服務員
class waiter{
DiaoDuZhan diaozhan;
public DiaoDuZhan getDiaozhan() {
return diaozhan;
}
public void setDiaozhan(DiaoDuZhan diaozhan) {
this.diaozhan = diaozhan;
}
public void doNext(){
Client client = diaozhan.getClient();
if(client != null)
client.getSerive().doService();
}
}
}
Ⅵ 急求!!! 進程調度演算法模擬 java實現,c++也行
我有內存調度的 FIFO、LRU和OPT的,要發給你。
Ⅶ 我想要一個java編的進程的調度演算法,先進先出演算法.
這個用的是RR不是FIFO,改改就行了嘿嘿
public class Scheler extends Thread
{
public Scheler(){
timeSlice = DEFAULT_TIME_SLICE;
queue = new Circularlist();
}
public Scheler(int quantum){
timeSlice = quantum;
queue = new Circularlist();
}
public addThread(Thread t) {
t.setPriority(2);
queue.additem(t);
}
private void schelerSleep() {
try{
Thread.sleep(timeSlice );
} catch (InterruptedException e){};
}
public void run(){
Thread current;
This.setpriority(6);
While (true) {
// get the next thread
current = (Thread)qeue.getnext();
if ( (current != null) && (current.isAlive()) ){
current.setPriority(4);
schelerSleep();
current.setPriority(2)
}
}
}
private CircularList queue;
private int timeSlice;
private static final int DEFAULT_TIME_SLICE = 1000;
}
public class TesScheler
{
public static void main()String args[]) {
Thread.currentThread().setpriority(Thread.Max_Priority);
Schelar CPUSchelar = new Scheler ();
CPUSchelar.start()
TestThread t1 = new TestThread("Thread 1");
t1.start()
CpuSchelar.addThread(t1);
TestThread t2 = new TestThread("Thread 2");
t2.start()
CpuSchelar.addThread(t2);
TestThread t3 = new TestThread("Thread 1");
t3.start()
CpuSchelar.addThread(t3);
}
}
Ⅷ 用JAVA實現時間片輪轉調度演算法
不會吧,應該不會有用Java管理進程的吧。Java語言是不可預知的,比如說垃圾回收系統不受程序員控制,沒法子做底層開發、管理進程的。
Ⅸ 求一個基於優先順序的時間片輪轉調度演算法。實在是不太會做了,沒思路。要求java 要求: (1)設系統
cpu進程調度模擬
四個隊列是優先順序隊列(優先順序高的在前面)
可以使用結構體做隊列的節點
時間片輪轉就是指定一個執行時間,時間一到就處理下一個進程,將當前進程進行狀態轉換(也就是換著狀態需要向其放入相應的隊列中,優先順序隊列)
理清頭緒的話程序不算太復雜但也很麻煩
Ⅹ )用C語言(或其它語言,如Java)編程實現對N個進程採用某種進程調度演算法(如動態優先權調度
公眾:類PrivilegeProcess {
公共靜態無效的主要(字串[] args){
MyQueue的MyQueue的新MyQueue的();/ /聲明隊列
印刷電路板[PCB = {新的PCB(001 ,8,1),新的PCB(002,7,9),新的PCB(003,3,8),新的PCB(004,1,7),新的PCB(005,7,4)};
> PCB段=新的PCB();
(INT I = 0; <pcb.length; + +){/ /初始化先進行排序,選擇排序這里使用的是高優先順序的一線隊
(J =我; <pcb.length; J + +){
(PCB [I]。特權<PCB [J]。特權){
段= PCB [1];
PCB [I] = PCB [J];
PCB [J] =段;
}
}
}
體系。通過out.println(「入隊後第一時間的進程的順序:」);
(INT I = 0; <pcb.length; + +){
的System.out調用println(第一次入隊#程序名稱:「+ PCB [我]。名稱+ totaltime:」+ PCB [I]。totaltime +「的」特權「+ PCB [我]。特權); }
();
myqueue.start(PCB);
}
}
類MyQueue的{
INT指數= 0;
PCB [] PC =新的PCB [5];
PCB [] PC1 =新的PCB [4];
PCB溫度=新的PCB() BR />公共無效排隊(PCB工藝){/ /排隊演算法
(指數== 5){
(「出界!」);
返回
}
PC [索引] =進程;
指數+ +;
}
公共:PCB DEQUEUE(){/ /出隊演算法(索引== 0)
返回空;
(INT I = 0; <pc1.length; + +){
PC1 [I] = PC [ +1];
}
指數 -
溫度= PC [0];
(INT I = 0; <pc1.length; + +){ BR /> PC [I] = PC1 [I];
}
回報條件;
}
公共無效啟動(PCB [] PC){/ /進程表演算法
(PC [0]。isNotFinish ==真| | PC [1 isNotFinish ==真| | PC [2 isNotFinish ==真| | PC [3]。時isNotFinish ==真| | PC [4]。isNotFinish ==){
/ / *註:| |運算符都是假的,所有的表達式結果為假,否則真
(INT I = 0; <PC長度; + +){
PC [I]。運行(這一點); />} 的System.out.println();
(INT I = 0; <pc.length; + +){/ /處理每個運行一次運行的時間片的長度重新排序優先一旦
(J =我; <pc.length; J + +){
如果(PC [I]特權<PC [J]。特權){
溫度= PC [I];
PC [I] = PC [J];
PC [J] =溫度;
}
}
}
}
}
}
類PCB {/ /聲明過程級
和int名,totaltime ,運行時特權;
布爾isNotFinish的;
公眾PCB(){
}
公開PCB(名稱,詮釋totaltime特權){
this.name =的名稱;/ /進程名
this.totaltime = totaltime ;/ /
this.privilege =特權;/ /總時間優先 this.runtime = 2 ;/ /時間片值是2
this.isNotFinish =真;/ /是否執行完成
(「初始值:程序名稱:」+名+「totaltime:」+ totaltime +「特權」+特權);
System.out的。調用println();
}
MyQueue的MQ公共無效的run(){/ /處理的基礎上實施的時間片演算法
(totalTime> 1){ totaltime =運行;/ /總時間大於1,總時間=總時間 - 時間片
特權 -
(「程序名稱:」+姓名+「 remaintime:「+ +」特權「+特權); totaltime
的} else if(totaltime == 1){
totaltime - ;/ /總時間為1時,執行時間為1
>特權 -
(「程序名稱:」+姓名+「remaintime:」+ totaltime +「特權」+特權);
}其他{
isNotFinish =假;/ / 0,將isNotFinish標志設置為假
}
如果(isNotFinish ==真){br mq.deQueue();
mq.enQueue(本);
}
}
}