⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form_os.frm

📁 这是一个我们自己做的操作系统的课程实验
💻 FRM
📖 第 1 页 / 共 2 页
字号:


For i = 1 To 640
        If MEM(i).fenqu_zhuangtai <> -1 Then
        
        
        
                If MEM(i).fenqu_zhuangtai = 1 Then
                    
                    If (i Mod 2) = 1 Then
                    
                    cl = Label4.BackColor
                    Else
                    cl = Label5.BackColor
                    End If
                    
                    
                    
                Else
                    cl = Label6.BackColor
                End If
        
        JC = MEM(i).fenqu_huodongjincheng
        sz = MEM(i).fenqu_shouzhi
        kj = MEM(i).fenqu_changdu
        
        
        
        
        j = sz + 1
        
        
        
        If MEM(i).fenqu_zhuangtai = 1 Then
                    FG.TextMatrix(j, 1) = Str(i)
                    FG.TextMatrix(j, 2) = Str(MEM(i).fenqu_shouzhi) + "K"
                    FG.TextMatrix(j, 3) = Str(MEM(i).fenqu_changdu) + "K"
                    
                    
                    
                    FG.TextMatrix(j, 4) = Str(MEM(i).fenqu_zhuangtai) + "已分配"
                    
                    
                    
                    FG.TextMatrix(j, 5) = Str(JC) + "号进程"
        ElseIf MEM(i).fenqu_zhuangtai = 0 Then
        
                    FG.TextMatrix(j, 1) = Str(i)
                    FG.TextMatrix(j, 2) = Str(MEM(i).fenqu_shouzhi) + "K"
                    FG.TextMatrix(j, 3) = Str(MEM(i).fenqu_changdu) + "K"
                    
                    
                    
                    
                    FG.TextMatrix(j, 4) = Str(MEM(i).fenqu_zhuangtai) + "未分配"
                    
                    
                    FG.TextMatrix(j, 5) = ""
        
        End If
        
        
        For k = 1 To 5
                FG.Col = k
        For j = sz + 1 To sz + kj
        
                FG.Row = j
                FG.CellBackColor = cl
                If j <> sz + 1 Then
                   FG.TextMatrix(FG.Row, FG.Col) = ""
                
                End If
        
        
        
        Next j
        Next k





 
 


End If
Next



End Sub


Private Sub CMD_HUISHOU_Click()
Dim i As Integer
Dim JC As Integer
Dim p, n As Integer
Dim j As Integer


'回收进程的内存和合并空闲分区



On Error GoTo err_handel



JC = CInt(Text_HUISHOU.Text)


For i = 1 To 640



        If MEM(i).fenqu_huodongjincheng = JC Then
        
          '既无上邻又无下邻
          MEM(i).fenqu_huodongjincheng = 0
          MEM(i).fenqu_zhuangtai = 0
        
          jincheng(JC) = 0
          
          
         
          
          If i = 1 Then
                      n = 0
                                   
                     '找下一个相连的分区
                      For j = 1 To 640
                     
                         If MEM(i).fenqu_shouzhi + MEM(i).fenqu_changdu = MEM(j).fenqu_shouzhi Then
                          
                         If MEM(j).fenqu_zhuangtai = 0 Then
                         n = j
                         End If
                         Exit For
                         End If
                     Next j
                  
                     If n <> 0 Then
                        '有下邻
                         MEM(i).fenqu_changdu = MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
        
                         MEM(n).fenqu_zhuangtai = -1
                     End If
          
          
          
          ElseIf i = 640 Then
                    p = 0
                    '找上一个相连的分区
                    For j = 1 To 640
                        
                        If MEM(j).fenqu_shouzhi + MEM(j).fenqu_changdu = MEM(i).fenqu_shouzhi Then
                         
                        If MEM(j).fenqu_zhuangtai = 0 Then
                        p = j
                        End If
                        Exit For
                        End If
                    Next j
                    If p <> 0 Then
                       ''有上邻
                        MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu
                        MEM(i).fenqu_zhuangtai = -1
                    End If
          
          
          Else
             
             
                     p = 0
                     n = 0
                     
                     
                     '找上一个相连的分区
                     For j = 1 To 640
                         
                         If MEM(j).fenqu_shouzhi + MEM(j).fenqu_changdu = MEM(i).fenqu_shouzhi Then
                          
                         If MEM(j).fenqu_zhuangtai = 0 Then
                         p = j
                         End If
                         Exit For
                         End If
                     Next j
                     
                     '找下一个相连的分区
                      For j = 1 To 640
                     
                         If MEM(i).fenqu_shouzhi + MEM(i).fenqu_changdu = MEM(j).fenqu_shouzhi Then
                          
                         If MEM(j).fenqu_zhuangtai = 0 Then
                         n = j
                         End If
                         Exit For
                         End If
                     Next j
                     
                     
                     
                     
                     
                     
                     
                     If p <> 0 And n <> 0 Then
                         '既有上邻又有下邻
                         MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
                         MEM(i).fenqu_zhuangtai = -1
                         MEM(n).fenqu_zhuangtai = -1
        
        
        
                    ElseIf p <> 0 Then
                        ''只有上邻
                         MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu
                         MEM(i).fenqu_zhuangtai = -1
        
        
        
        
                    ElseIf n <> 0 Then
                        '只有下邻
                         MEM(i).fenqu_changdu = MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
        
                         MEM(n).fenqu_zhuangtai = -1
                     End If
                  
                  
                  
                  
                  End If
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  Call refrensh_form
                  Exit Sub
        End If


       




Next





Call MsgBox("不存在这个进程!", vbCritical)


Exit Sub
err_handel:
Call MsgBox("不存在这个进程!", vbCritical)


End Sub

Private Sub Form_Load()
Dim i As Integer


FG.ColWidth(1) = 1800
FG.ColWidth(2) = 1800
FG.ColWidth(3) = 1800
FG.ColWidth(4) = 1800
FG.ColWidth(5) = 1800



FG.TextMatrix(0, 0) = "内存地址"
FG.TextMatrix(0, 1) = "分区号"
FG.TextMatrix(0, 2) = "分区首址"
FG.TextMatrix(0, 3) = "分区长度"
FG.TextMatrix(0, 4) = "分配状态"
FG.TextMatrix(0, 5) = "活动进程"






Me.Top = 0
Me.Left = 0


For i = 0 To 639

    FG.TextMatrix(i + 1, 0) = Str(i) + "K"


Next

For i = 1 To 640
 MEM(i).fenqu_zhuangtai = -1
Next

MEM(1).fenqu_shouzhi = 0
MEM(1).fenqu_changdu = 640
MEM(1).fenqu_zhuangtai = 0
MEM(1).fenqu_huodongjincheng = 0




App.Title = "存储管理器"

End Sub
Sub delay_TIME(ByVal i As Integer)

  '延迟i秒
    Dim t1, t2 As Long
    
    t1 = Timer()
    t2 = t1
    Do While (t2 - t1 < i)
    DoEvents
    t2 = Timer()
    Loop
    

End Sub

Private Sub men_home_Click()
Call netnetopen_FILEpageIE("http://www.kaoke.com")
End Sub

Private Sub menu_about_Click()
Call MsgBox("作者:顾熙杰" + vbCrLf + "考客主页:http://www.kaoke.com", 48)
End Sub

Private Sub menu_exit_Click()
Unload Me
End Sub

Private Sub menu_help_help_Click()
Call netnetopen_FILEpageIE(App.Path + "\help.htm")
End Sub
Public Sub netnetopen_FILEpageIE(ByVal address As String)
Dim i As Integer
On Error GoTo ErrHandler
'外浏览器访问网页


i = ShellExecute(0&, vbNullString, address, vbNullString, vbNullString, vbNormalFocus)

'MsgBox i
'返回10767正确
'返回2,文件不存在
If i = 2 Then
Call MsgBox("文件不存在", 48)
End If

Exit Sub
ErrHandler:
MsgBox Error$
End Sub



Private Sub Option1_Click()
fenPEI_fangfa = 0
End Sub

Private Sub Option2_Click()
fenPEI_fangfa = 1
End Sub

Private Sub Option3_Click()
fenPEI_fangfa = 2
End Sub


Function find_pri_block(ByVal b As Integer) As Integer

'寻找上邻区

Dim i As Integer

For i = b - 1 To 1 Step -1

  If MEM(i).fenqu_zhuangtai <> -1 Then
  find_pri_block = i
  Exit Function
  End If
  
Next


End Function


Function find_next_block(ByVal b As Integer) As Integer

'寻找下邻区
Dim i As Integer

For i = b + 1 To 640

  If MEM(i).fenqu_zhuangtai <> -1 Then
  find_next_block = i
  Exit Function
  End If
  
Next


End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -