操作系统

操作系统复习

操作系统的四大特性
并发:同一段时间内多个程序执行
共享:系统中的资源可以被内存中多个并发执行的进线程共同使用
虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个
异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进
操作系统基本功能
进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度等
内存管理:内存分配、地址映射、内存保护与共享、虚拟内存等
文件管理:文件存储空间的管理、目录管理、文件读写管理和保护等
设备管理:完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。主要包括缓冲管理、设备分配、设备处理、虛拟设备等
CPU
CPU(中央处理器)
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
资源分配的最小单位是进程,而CPU调度的最小单位是时间片
系统为进程分配资源,不对线程分配资源
CPU调度
高级调度(作业调度):
多道批处理操作系统中,从输入系统的一批作业中按照预定的调度策略挑选若干作业进入内存,为其分配资源并创建对应的作业用户进程
作业是任务实体,进程是完成任务的执行实体。作业的概念多用于批处理操作系统,而进程用于各种多道程序设计系统
中级调度
根据内存资源情况决定内存中所能容纳的进程数目,并完成外存和内存中的进程对换工作(挂起)。起到短期均衡系统负载的作用
低级调度(进程调度/线程调度)
根据某种原则决定就绪队列中哪个进程/线程获得处理器,并将处理器出让给它使用
Q:某一进程CPU使用率 50% 是什么意思?
CPU使用率是来描述CPU的使用情况的,表明了一段时间内CPU被占用的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。
CPU的占用率,一般指的就是对时间片的占用情况,CPU:50% 说明 CPU 有一半的时间在运行,一半的时间在休息(100MS 中50MS被进程占用,50MS处于空闲状态)
Q:如何让CPU使用率固定在50%【仅限于单核CPU】
CPU的占有率是由进程的忙和空闲来决定的,即 rate=(busy_time)/(busy_time+idle_time);
让CPU使用率固定在50%,只要让计算机有一半的时间在运行,一半的时间在休息就可以了。
busy可以用循环(这个循环用空循环,以便好控制),idle可以用sleep
比如先让任务管理器的cpu使用率始终保持在50%左右,那么在一个主循环中,让空循环和sleep运行同样的一小段时间。sleep的时间好搞,空循环的怎么办呢?可以在运行的时候设定空循环的运行时间

public static void main(String args[]) throws InterruptedException{
   
      int busyTime = 10;
      int idleTime = busyTime;
      //设定空循环的运行时间
      while(true){
   
          long startTime = System.currentTimeMillis();
          //busy loop:
          while((System.currentTimeMillis()-startTime)<=busyTime)
              ;
          Thread.sleep(idleTime);
      }
  }

内存
内存的内部是由各种 IC 电路组成的,它的种类很庞大,但是其主要分为三种存储器:

随机存储器(RAM):内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会丢失
只读存储器(ROM):ROM 一般只能用于数据的读取,不能写入数据,但是当机器停电时,这些数据不会丢失
高速缓存(Cache):Cache 也是我们经常见到的,它分为一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于内存和 CPU 之间,是一个读写速度比内存更快的存储器。当 CPU 向内存写入数据时,这些数据也会被写入高速缓存中。当 CPU 需要读取数据时,会直接从高速缓存中直接读取,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据.
内存管理机制
操作系统的内存管理主要负责内存的分配与回收(malloc 函数:申请内存,free 函数:释放内存),另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情
连续分配管理方式:连续分配管理方式是指为一个用户程序分配一个连续的内存空间,常见的如块式管理
块式管理:将内存分为几个固定大小的块,每个块中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。这些在每个块中未被利用的空间,我们称之为碎片
非连续分配管理方式:非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中
页式管理 :把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址和物理地址
段式管理 : 页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义。 段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多 。但是,最重要的是段是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址
段页式管理机制 :段页式管理机制结合了段式管理和页式管理的优点。简单来说段页式管理机制就是把主存先分成若干段,每个段又分成若干页,也就是说段页式管理机制中段与段之间以及段的内部的都是离散的。
分页和分段共同点和区别
共同点:
分页机制和分段机制都是为了提高内存利用率,较少内存碎片
页和段都是离散存储的,所以两者都是离散分配内存的方式。但是,每个页和段中的内存是连续的
分段和分页的不同:
目的不同:分页是由于系统管理的需要而不是用户的需要,它是信息的物理单位;分段的目的是为了能更好地满足用户的需要,它是信息的逻辑单位,它含有一组其意义相对完整的信息;
大小不同:页的大小固定且由系统决定;而段的长度却不固定,由其所完成的功能决定;
地址空间不同: 段向用户提供二维地址空间;页向用户提供的是一维地址空间;
信息共享:段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制;
内存碎片:页式存储管理的优点是没有外碎片(因为页的大小固定),但会产生内碎片(一个页可能填充不满);而段式管理的优点是没有内碎片(因为段大小可变,改变段大小来消除内碎片)。但段换入换出时,会产生外碎片(比如4k的段换5k的段,会产生1k的外碎片)。
基本分页储存管理方式
在分页内存管理中,很重要的两点是:1. 虚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值