自我修养的拷贝笔记(一)

109 阅读4分钟

第一章

程序运行中的隔离

用户 程序在运行希望在一个简单的执行环境里,想要拥有自己的小空间和cpu,除了有时候需要和其他程序进行通信,其他时候它根本不想和任何东西有交流。因此,它需要隔离开来,也产生了虚拟地址,因为每个程序只能访问自己的小空间,这样就可以隔离了程序不想交流的东西,也不用在意和它无关的细节。

分段

一开始 大家用的是分段来把程序需要的内存空间大小的虚拟空间映射到某个地址空间。意思是,如果有两个程序(AB大小为a、b字节)在你的系统里运行,那么,系统会在给AB分别分配a字节大小和b字节大小的虚拟空间。因为虚拟空间的概念是虚无的,它需要映射在物理空间中。所以,从物理空间0x7c00开始分配,假如A程序的物理地址范围是:0x7c00~0x7c00+a(16进制的a),那么B程序的物理地址范围可以为: 0x7c00+a~0x7c00+a+b(16进制的a、b)。虚拟空间的状况则是,A:0x00000000~0x00000000+a(16进制的a),B:0x00000000~0x00000000+b(16进制的b)!!ohhhhhhh

分段所解决的事情

做到了地址隔离。因为程序A 和 程序B 被映射到了两块不同的物理空间区域,它们之间没有任何重叠。如果程序访问虚拟空间时,访问地址超出了它的虚拟空间范围,那么硬件就会判断这是一个非法的访问,拒绝这个地址请求,并且报告给系统。

分段的缺点以及分页的产生

分段 的粒度太大啦,如果程序A和程序B在物理空间不是连续的话,那么比它们之间空隙空间大的程序就没办法插进来惹,这样就很麻烦,就没效率。那这时候分页就诞生了!!!分页的粒度小,可以做到见缝插针,提高了效率,它多香啊!!

分页

定义 : 分页的基本方法是,把地址空间人为地等分成固定大小地页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。

目前,大家把一页定为4kb大小,真的好小啊,如果按虚拟空间为32GB的大小来分的话,可以分成1048576个页。分页其实还有一个优点,如果物理空间不能容纳所有的程序,那么这时候,cpu没有用到的那部分地址空间会放到硬盘中,留出空间给需要用的地址。在用户的视角上,它不会烦恼这些问题,因为它不知道这些细节,这就是隔离的作用了!

什么是线程调度?它有几种状态?它的运转是怎么样的?

定义:不断在处理器切换不同的线程的行为是 线程调度。

有三种状态:运行(线程正在运行)、就绪(此时线程可以立刻运行,但是CPU已经被占用)、等待(线程正在等待某一个事件发生,无法执行。如,IO/或同步)。

时间片:处于运行中的线程拥有一段可以执行的时间。

线程调度 的运转:(1)当线程的时间片用完的时候,该线程就会进入就绪状态;在等待状态的线程所等待的事件发生之后,该线程就进入就绪状态。(2)如果时间片还没用完的时候就开始等待某个事件,那么它进入等待状态。(3)当这个线程离开运行状态的时候,调度系统就有可能会选择其他处于就绪状态的、优先级高的线程继续执行。