<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            -學年第二學期《操作系統課程設計》任務書

            時間:2024-07-22 09:39:33 自動化畢業論文 我要投稿
            • 相關推薦

            2005-2006學年第二學期《操作系統課程設計》任務書

             

            一、課程設計的目的
             在從事本課程設計之前,學生們已經通過一個學期的系統學習,掌握了操作系統的原理,對操作系統的各個組成部分的工作原理有了一定的認識。然而由于操作系統的復雜性,使得學生對操作系統個部分的理解可能是分散的和不深入的。設置本課程設計的目的,就是讓學生通過課程設計,對操作系統有進一步深入的理解,對系統工作原理有一個整體認識。
            二、學生完成的任務之一
             修改MINIX系統,使得系統啟動時顯示出你自己的班級、姓名、學號。信息格式如下:
             Welcome to MyMinix! Class-?, Name-????????, Num-??
            例如:Welcome to MyMinix! Class-2, Name-LiHua, Num-16,即2班,李華,16號。要求保留原來的內核映像文件,以便系統出錯時,可以從一個能夠正確工作的版本中啟動系統。
            三、學生完成的任務之二
             修改MINIX系統,使得MINIX為程序員提供一個新的系統功能調用getpids。Getpids的功能描述如下:
             int getpids(pid_t *child, pid_t *parent);
            getpids返回調用者進程和它的父進程的PID,分別放在child和parent所指向的地址中。
            四、任務二的提示
             (1)
            修改目錄/usr/include/minix/callnr.h文件,加入新系統調用編號:
             #define GETPIDS 78
            增加系統調用數目
            #define NCALLS 79
             (2)
            增加_getpid2.c文件到/usr/src/lib/other子目錄之下,內容為:
            /* _getpid2.c */
            #include <lib.h>
            #define getpid2 _getpid2
            #include <unistd.h>
            PUBLIC pid_t getpid2(pid_t *child, pid_t *parent)
            {
             message m;
             _syscall(MM, GETPIDS, &m);
             *child = m.m_type;
             *parent = m.m2_i1;
              }
            在同一個子目錄之下,修改文件Makefile,其內容為:
            OBJECTS = \
             $(LIBRARY)(_getpid2.o) \
             $(LIBRARY)(_brk.o) \
             $(LIBRARY)(_reboot.o) \
               …
             $(LIBRARY): $(OBJECTS)
              aal cr $@ *.o
              rm *.o
            $(LIBRARY)(_getpid2.o): _getpid2.c
             $(CC1) _getpid2.c
            $(LIBRARY)(_brk.o): _brk.c
            $(CC1) _brk.c
              …
            在同樣的目錄下,發出make命令:
            make
              將新的函數_getpid2加入到函數庫之中。
             (3)
            添加新文件getpids.s到目錄/usr/src/lib/syscall之中:
            .sect .text
            .extern __getpid2                   ! 注意,是2個下劃線
            .define _getpids
            .align 2
            _getpids:
             jmp __getpid2
            在同一個子目錄之下,修改文件Makefile:
             OBJECTS = \
             $(LIBRARY)(_getpids.o) \
             $(LIBRARY)(_exit.o) \
               …
             $(LIBRARY): $(OBJECTS)
              aal cr $@  *.o
              rm *.o
             $(LIBRARY)(_getpids.o): _getpids.s
              $(CC1) _getpids.s
             $(LIBRARY)(_exit.o): _exit.s
             $(CC1) _exit.s
               …
            在同樣的目錄下,發出make命令:
            make
              將新的函數getpids加入到函數庫之中。
             (4)修改minix中內存管理部分,以提供系統調用
            修改/usr/src/mm/table.c,在數組call_vec[ ]的最后一行之后加入語句:


            do_svrctl,  /* 77 = svrctl  */
            do_getset, /* 78 = getpids */

            修改/usr/src/mm/getset.c,在語句 CASE GET_PID:之上加入代碼
            case GETPIDS:  /* fall through */
            case GETPID:
             r = mproc[who].mp_pid;
             rmp->reply_res2 = mproc[rmp->mp_parent].mp_pid;
             break;

             (5)測試系統調用是否可用
            在/usr/include/中加入getpids.h
            #ifndef _GETPIDS_H
            #define _GETPIDS_H
            #ifndef _ANSI_H
            #include <ansi.h>
            #endif
            _PROTOTYPE (int getpids, (pid_t * child, pid_t *parent));
            #endif   /* _GET_PIDS_H */
            編寫一個用戶級程序test.c來測試
            #include <stdio.h>
            #include <unistd.h>
            #include <getpids.h>
            int main(void){
             int pid, ppid;
             getpids(&pid, &ppid);
             printf(“child = %d, parent = %d\n”, child, parent);
            }

            cc test.c
            ./a.out
            五、學生完成的任務之三
             修改MINIX系統,使得MINIX為程序員提供系統功能調用get_cursor和set_cursor,分別返回和設置屏幕光標位置,其參數由學生自己定義。編寫一個應程序,利用這兩個系統調用,在屏幕固定位置每隔1秒鐘顯示系統當前時間。

            六、要求提交的材料
            課程設計報告。寫出每一天的工作日記,主要步驟所涉及到的工作原理分析,程序代碼分析。A4紙,5頁。第18周星期一由班長收齊統一上交。
            每名同學將改造之后的MINX,壓縮為rar文檔,文件名格式:r或w + 2位班序號+學號中的2位序號.RAR,例如網絡1班12號同學的文件名為:w0112.rar。最后每位同學的rar文件匯總到班長處,由班長制作成光盤,同設計報告一起上交。
            七、時間與地點
            第16周作準備,查閱資料等
            第17周編寫程序
            上機地點:微機2室 + 宿舍

            【-學年第二學期《操作系統課程設計》任務書】相關文章:

            操作系統課程設計報告模擬進程調度程序(一)05-13

            LINUX操作系統10-11

            任務書和開題報告區別09-07

            組件機制與操作系統的實現08-20

            工程管理論文任務書09-03

            Linux—網絡時代的操作系統?06-11

            計算機操作系統漫談06-09

            淺析組件機制和操作系統的實現08-19

            課程設計報告06-26

            芻議計算機操作系統的應用與發展08-27

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院