查找放置进程的位置

在中断调用int 0x40,19号调用中,获取应用本身的参数以后,调用了一个获取未被占用内存的过程call  find_free_mem。在获取内存之前调用了一个过程获取放置进程位置的过程find_free_process_slot。

find_free_process_slot:

            pusha                        ;保留现场参数

            mov ebx,[0x3004]                    ;把进程数赋值给ebx

            mov [check_processes],ebx               ;   把进程数赋值到check_processes地址中
            inc ebx                        ; ebx加一
            mov [new_process_place],ebx             ; ebx加一后赋值到new_process_place地址中

            mov ebx,2                      ;把ebx赋值为2, 1估计是用于osloop了

       newfps:                            ;newfps= new free process slot

            mov eax,ebx                       ;  把ebx赋值给eax

            imul eax,0x20                     ;  从3020开始放置进程信息,每个进程占用32个字节
            add eax,0x3000+0xa                  ;eax+0xa, 得到进程状态信息
            cmp [eax],byte 9                   ;是否状态为9
            je ffpl                         ;如果是,则找到

            inc ebx                         ;否,则ebx加一
            cmp ebx,[0x3004]                    ; 和进程数比大小
            jbe newfps                        ;小于等于,则跳转newfps, 去比较相应的状态是否可用

            cmp dword [0x3004],dword max_processes       ;和预定义的最大进程数255比较(kernel.asm中第一行)

            jae noaddnewp                      ;  如果大于等于则无法再增加进程了

            mov ebx , [0x3004]                   ;将现有进程数赋值ebx
            add ebx , 1                      ;ebx+1
            imul ebx , 0x20                    ;  乘以32
            mov [0x3000+ebx+0xa],byte 9                ;+0xa,赋值进程状态为9

            add dword [0x3004],dword 1                ;  将进程数+1
            mov ebx,[0x3004]                     ;将进程数赋值给ebx
            mov [check_processes],ebx              ;  将进程数赋值给check_processes地址
            mov [new_process_place],ebx               ;找到进程放置位置,赋值给以后要用到的new_process_place

      noaddnewp:

            popa                            ;  恢复现场参数
            ret                           ;调用返回

      ffpl:

            mov [new_process_place],ebx

            popa
            ret

 

posted on 2022-09-09 15:06  oemwang  阅读(46)  评论(0)    收藏  举报

导航