日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统课设--具有优先级的线程调度

發布時間:2025/3/21 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统课设--具有优先级的线程调度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

山東大學操作系統課設lab2

  • 實驗二 具有優先級的線程調度(lab2)
        • 概念欠缺
    • 實驗環境
    • 實驗目的
      • 1. 熟悉Nachos原有的線程調度策略
      • 2. 設計并實現具有優先級的線程調度策略

實驗二 具有優先級的線程調度(lab2)

概念欠缺

  • .cc是方法實現,.h是頭文件
  • cd - 返回上一層

實驗環境

虛擬機下Ubuntu Linux 16.04 LTS系統,nachos-3.4內核管理模塊和MIPS CPU軟件模擬模塊,代碼在lab2文件夾下面實現。

實驗目的

  • 將threads里的內容copy到lab2文件夾下
  • scheduler.cc和scheduler.h,Thread.cc和Thread.h

1. 熟悉Nachos原有的線程調度策略

每個線程都有一個屬性記錄自己的優先級;相比實驗一的Thread.cc中的Thread構造函數,應該加上一個int類型的priority來記錄每個線程的優先級。因為線程是通過優先級來進行調度的,優先級調度算法分為搶占式和非搶占式。搶占式調度表示如果一個新的高優先級的線程來到,cpu會停止當前低優先級的線程,先將資源分配給高優先級的線程;非優先級調度算法則是無論新來的線程優先級高低與否,都會等待當前線程完成,再占據下一個位置。
通過實驗一可以看出:

在線程Yield時,線程會找到下一個線程并運行它。看scheduler類,其中ReadyToRun()和Run()方法都寫得很詳細

是由一個readyList來存放準備運行的線程;如果要找到下一個可運行的線程,也從這個List中找就好。
在線程Fork時,也是調用scheduler->ReadyToRun();即將這個線程加入readyList中。

2. 設計并實現具有優先級的線程調度策略

1.首先要修改Thread類的構造函數,加上優先級這個屬性。要修改thread.h和thread.cc。
Thread.h中加上Private屬性priority,類型為int。

在thread.cc的構造函數Thread()中加上對priority的初始化,默認優先級最低=7

并添加一個構造函數,可以傳入參數設置線程的優先級,是原thread中沒有的構造函數。

2.給Thread類加了優先級屬性,那么線程的調度算法也要隨之改變。本來,所有待運行線程都在readyList,沒有優先級,它們是按先進后出的順序逐一被調度的,現在有了優先級,調度算法需要修改成非搶占式算法。即按照優先級從高到低被調度才比較合理。于是需要修改ReadyToRun()按照優先級調整順序。
List中定義的SortedInsert()方法

所以我們直接把優先級作為參數傳進去,List自己會排序。

需要修改ThreadTest.cc里的ThreadTest()方法。
由于需要判斷優先級高低對于調度算法的影響,我設置了5個不同優先級的線程以供調度。

在lab2文件夾里輸入 ./nachos 效果如下:

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的操作系统课设--具有优先级的线程调度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。