The Way of the great learning involves manifesting virtue, renovating the people, and abiding by the highest good.

2010年5月29日 星期六

Minix3 Scheduler

Minix3 Scheduler

有关minix3的调度,相关的理论在  Operating Systems - Design and Implementation, 3rd Edition 中的  Scheduling in Interactive Systems   里介绍,
  • Round-Robin Scheduling
  • Priority Scheduling
  • Multiple Queues
  • Shortest Process Next
  • Guaranteed Scheduling
  • Lottery Scheduling
    之类的算法 。这个和批处理系统的job调度不同,所以不可能实现First-Come First-Served,Shortest Job First ,Shortest Reming Time Next之类的调度算法,下面找了一个国外UCSB大学的操作系统课程的相关Minix操作系统的调度算法,有点意思。


Adding a Lottery Scheduler to Minix

This portion of Project 1 requires you to change the process scheduler functionality inside Minix.  Obviously, you will need to modify Minix kernel code to make this happen.  Specifically, you will be adding functionality to support Lottery Scheduling. Lottery scheduling is a flexible way to schedule CPU time by giving each process a number (n) of tickets.  Each time the scheduler is called, it looks at the total number of tickets outstanding (i.e. held by all processes).  It randomly chooses one of the outstanding tickets, and the process holding that ticket is the process that gets to run.  The intuition is that processes can increase or decrease their share of the CPU by getting or giving away tickets.

Modifying the scheduler for Minix should mostly involve modifying code inkernel/proc.c , specifically thesched() and pick_proc() functions (and perhaps enqueue() and dequeue() ). You may also need to modifykernel/proc.h to add elements to the proc structure and modify queue information (NR_SCHED_QUEUES, TASK_Q, IDLE_Q, etc.) and may need to modify PRIO_MIN  and PRIO_MAX in/usr/include/sys/resource.h. Process priority is set in do_getsetpriority()  inservers/pm/misc.c(don't worry—the code in here is very simple), which calls do_nice()  inkernel/system.c. You might be better off just using the nice()system call , which calls do_nice()directly. You'll probably want to modify what do_nice() does to assign or take away tickets.

The current MINIX scheduler is relatively simple. It maintains 16 queues of "ready" processes, numbered 0-15. Queue 15 is the lowest priority (least likely to run), and contains only the IDLE task. Queue 0 is the highest priority, and contains several kernel tasks that never get a lower priority. Queues 1–14 contain all of the other processes. Processes have a maximum priority (remember, higher priorities are closer to 0), and should never be given a higher priority than their maximum priority.  System processes (queues 0-14) are run using their original algorithm, and queue 15 still contains the idle process. However, queue 16 contains all of the runnable user processes, each of which has some number of tickets. The default number of tickets for a new process is 5. However, processes can add or subtract tickets by calling setpriority(ntickets), which will increase the number of tickets by ntickets (note that a negative argument will take tickets away). A process cannot accumulate more than 100 tickets.

Each time the scheduler is called, it should randomly select a ticket (by number) and run the process holding that ticket. Clearly, the random number must be between 0 and Tickets-1, where Tickets is the sum of all the tickets belonging to processes in the ready queue (processes that are blocked are ineligible to run). You may use the random() call (you may need to use the random number code in/usr/src/lib/other/random.c) to generate random numbers and thesrandom() call to initialize the random number generator. A good initialization function to use would be the current date and time.

New processes are created and initialized in kernel/system/do_fork.c. This is probably the best place to initialize any data structures. 




实现方案:



reference:


24 评论:

柏懿綺辰 说...

一個人的價值,應該看他貢獻了什麼,而不是他取得了什麼..................................................

麗娟麗娟 说...

從人生中拿走友誼,猶如從生活中移走陽光 ............................................................

瓊文TamMcfee0520 说...

成人卡通 視訊34c 母子亂倫聊天室 免費無碼片 台灣交友網 日本女優無碼 無名小站性感美女影片 影片試看 偷拍,影片 基隆聊天室 女性愛愛 性愛自拍 18成人網站 少女色情 洪爺成人影城 彩虹a片 情色卡通線上看 麗的色情小遊 一夜情a片 aio愛情館影片免費383 完美女人 玩美影城 性感美女 辣妹鋼管脫衣秀 人妻短片下載 熟女貼圖 a片下載 視訊聊天室 a圖看到爽 限制級寫真集 85cc免費看成人片 微風成人a片本土 嘟嘟 色情777 熊貓貼圖 援交自拍影片 情人趣味用品 免費脫衣 免費av片觀賞 洪爺影城 大奶阿尼 mofosex. 下載a圖 日本av巨乳 性愛光碟 後宮電影院18jack 限制級 live0204 免費看性愛影片 正妹走光露點

淑娟 说...

Many a little makes a mickle...................................................................

江婷 说...

知識可以傳授,智慧卻不行。每個人必須成為他自己。.................................................................

王邦鈺 说...

Pen and ink is wits plough. ....................................................................

江婷 说...

Pay somebody back in his own coin.................................................................

佳蓉佳蓉 说...

成熟,就是有能力適應生活中的模糊。.................................................................

茂慧茂慧 说...

好棒的地方 我一定要常來~~~^^~..................................................................

陳韋夏陳韋夏益東富益東富 说...

A friend in need is a friend indeed...................................................................

LupeConstan治士 说...

時間可證明一切~你的BLOG是我覺得不賴的..................................................................

宜欣宜欣 说...

God helps those who help themselves...................................................

承蘋承蘋 说...

世間事沒有一樣沒有困難,只要有信心去做,至少可以做出一些成績。..................................................

琬安琬安 说...

People throw stones only at trees with fruit on them.............................................................

RicoLisi0802志竹 说...

支持你!!!加油囉!!!多謝............................................................

黃信梅 说...

教育無他,愛與榜樣而已............................................................

佳呈均慧 说...

Judge not a book by its cover.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

王辛江淑萍康 说...

堅持是為著某種目的或目標,而持續不斷朝向既定方向努力的一種意念。..................................................

陳倩江陳倩江陳倩江 说...

Learning makes life sweet.......................................................................

瑋洪洪洪洪洪婷 说...

當一個人內心能容納兩樣相互衝突的東西,這個人便開始變得有價值了。............................................................

廷家祥家祥雯 说...

所有的資產,在不被諒解時,都成了負債..................................................................

江仁趙雲虹昆 说...

一個人的際遇在第一次總是最深刻的,有時候甚至會讓人的心變成永遠的絕緣。......................................................................

佳張張張張燕張張張張張 说...

好的blog就是要回應!..................................................................

黃英吳思潔吳思潔邦 说...

卡爾.桑得柏:「除非先有夢,否則一切皆不成。」共勉!.................................................................