• 操作系统之页式存储管理

    一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框,同样进行编号。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。 为了标识中哪些块空闲,哪些块占用,可用一张位示图指示。位示图是由若干主存单元构成,如图4-1所示。其中每一位与一个主存块对应。分别用0和1表示对应块是空闲还是占用。 在装入一个作业时,根据作业对主存的需求量,先检查是否有足够的空闲块,如有,则查位示图,按作业需求量找出为0的一些位,且置上占用标记1。 按找到的位计算对应的块号。其计算公式为: 块号=J*8+I 其中,J表示找到的字节号,I表示找到的位号。

    0
    1703
    12KB
    2018-01-20
    50
  • 操作系统之动态分区分配

    可变分区调度算法有:最先适应分配算法,最优适应分配算法,最坏适应算法。 用户提出内存空间的申请;系统根据申请者的要求,按照一定的分配策略分析内存空间的使用情况,找出能满足请求的空闲区,分给申请者;当程序执行完毕或主动归还内存资源时,系统要收回它所占用的内存空间或它归还的部分内存空间。 每当一个进程被创建时,内存分配程序首先要查找空闲内存分区表(链),从中寻找一个合适的空闲块进行划分,并修改空闲内存分区表(链)。当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区表(链)中找到相应的插入点,此时出现如下四种情况: 1) 回收区与插入点的前一个空闲分区F1相邻接,此时可将回收区直接与F1合并,并修改F1的大小; 2) 回收区与插入点的后一个空闲分区F2相邻接,此时可将回收区直接与F2合并,并用回收区的首址最为新空闲区的首址,大小为二者之和; 3) 回收区同时与插入点的前、后两个空闲分区邻接,此时需将三者合并; 4) 回收区不与任何一个空闲区邻接,此时应建一新的表项。

    0
    1220
    18KB
    2018-01-20
    30
  • 操作系统之进程调度

    在多道程序或任务系统中,系统同时处于就绪的进程有若干个。也就是说能运行的进程数远远大于处理机个数。为使系统中的各进程能有条不紊地运行,必须选择某种调度策略,以选择一进程占用处理机。 本程序利用java编程语言对其进行了实现。 进程调度原理 单处理机下,常见的进程调度算法包括:先来先服务(FIFO)算法,优先级调度算法和时间片轮转算法。 FIFO算法根据进程到达的先后顺序进行调度。 优先级调度算法是从就绪队列中选出优先级最高的进程,让它在CPU上运行。优先级调度算法包括静态优先级和动态优先级。所谓静态优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。而动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。 而时间片轮转算法是将所有的就绪进程按先来先服务的原则,排成一个队列,按时间片轮转。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间。

    0
    194
    14KB
    2018-01-20
    10
  • 操作系统之银行家算法源代码

    银行家算法是避免死锁的一种重要方法,本程序用java编程语言对其进行了实现。 当用户申请一组资源时,系统必须做出判断,如果把这些资源分出去,系统是否还处于安全状态。 若是,就可以分出这些资源;否则,该申请暂不予满足。 1.数据结构 假设有M个进程N类资源,则有如下数据结构: MAX[M*N] M个进程对N类资源的最大需求量 AVAILABLE[N] 系统可用资源数 ALLOCATION[M*N] M个进程已经得到N类资源的资源量 NEED[M*N] M个进程还需要N类资源的资源量 2.银行家算法 设进程I提出请求Request[N],则银行家算法按如下规则进行判断。 (1)如果Request[N]<=NEED[I,N],则转(2);否则,出错。 (2)如果Request[N]<=AVAILABLE,则转(3);否则,出错。 (3)系统试探分配资源,修改相关数据: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 3.安全性检查 (1)设置两个工作向量WORK=AVAILABLE;FINISH[M]=FALSE (2)从进程集合中找到一个满足下述条件的进程, FINISH[i]=FALSE NEED<=WORK 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。

    0
    2616
    8KB
    2018-01-20
    25
  • 大二上学期初学java之期末课程设计–模拟QQ聊天软件(简单实现)源代码

    这个程序是自从学习Java以来写的第一个比较大的图形界面程序,花费了大约一周的时间,作为期末的课程设计,也算是基本上完成了任务,当然由于作者的编程能力有限,代码中难免存在BUG,不太简练,今天搬到博客上来,也算是对自己学习历程的一段记录吧,当然,如果我的这篇博客有幸被诸君看到,欢迎提出意见和建议,这篇博客仅仅作为我的一个记录吧,如果可能(估计也没时间了),将在后续版本中不断完善。至于这个程序的所有源代码,我会上传到CSDN,就这么多吧。

    3
    3061
    66KB
    2016-12-29
    46
  • 第12章 综合程序设计.ppt

    第12章 综合程序设计.ppt

    0
    104
    846KB
    2016-04-04
    0
  • 第11章 MFC程序设计.ppt

    第11章 MFC程序设计.ppt

    0
    59
    3.41MB
    2016-04-04
    0
  • 第8章 异常.ppt

    第8章 异常.ppt

    0
    32
    853KB
    2016-04-04
    0
  • 第7章 模板与STL.ppt

    第7章 模板与STL.ppt

    0
    71
    1.39MB
    2016-04-04
    9
  • 第3章 类与对象.ppt

    第3章 类与对象.ppt

    0
    41
    1.72MB
    2016-04-04
    0
  • 持续创作

    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
关注 私信
上传资源赚积分or赚钱