进程的基本概念
在一个并发环境下,为了刻画这些并发程序执行,引入进程的概念。
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。
PCB包含什么信息?进程描述信息,进程控制信息,所拥有的资源和使用情况,CPU现场信息。
进程地址空间是虚拟地址空间。每个进程都有一个地址空间,地址相同是指的mywal在地址空间的位置相同,而不是物理内存的位置。
分派线程——监听客户端,接受客户端的请求。一个就够了。
工作线程——完成客户请求。
用户集线程是由运行时系统管理,而非内核管理,因此线程切换不需要内核态特权。
线程调度算法相关——没保存上,不想写了o(╥﹏╥)o
进程的并发执行
并发:进程的执行是间断性的,进程的相对执行速度不可预测。
共享:进程/线程之间的制约性。
不确定性:进程执行的结果与其执行的相对速度有关,是不确定的。
进程互斥
可看为一种特殊的同步。
各进程之间竞争使用这些资源——进程互斥
临界资源:某些资源一次只允许一个进程使用,称这样的资源为临界资源。
临界区:各个进程对某个临界资源(共享变量)实施操作的程序片段。
进程互斥的硬件解决方法
中断屏蔽方法——不适合多处理器,适用于操作系统本身,不适于用户进程。
忙等待:进程在得到临界区访问权之前,持续测试而不做其他事情。
自旋锁(多处理器)有进程在临界区就不停测试,自旋,直到临界区还回来。
进程的同步
指系统中多个进程中发生的事件存在某种是时序关系,需要相互合作,共同完成一项任务。(一个进程为另一个伙伴进程提供消息,不提供就会进入阻塞态,获得就进入就绪态)。
管程的基本概念
解决进程同步和互斥的机制。
pthread,,先用一个互斥量或者上锁,然后再去做相应的工作,条件不成立时,进入等待之前把锁打开,其他线程才可进入。
进程间的通信
消息传递、共享内存、管道通信方式、
地址重定位
进程中的地址不是最终的物理地址,在进程运行前无法计算出物理地址。
为了保证CPU执行指令时可正确访问内存单元, 需要将用户程序中的逻辑地址转换为运行时可由机器直接寻址的物理地址,这一过程称为地址重定位。
逻辑地址(相对地址,虚拟地址)
物理地址(绝对地址,实地址)
空闲内存管理
位图——等长划分
空闲区表、已分配区表
空闲块链表
经典的内存管理方法:伙伴系统的例子
基本内存管理方案
单一连续区、固定分区、可变分区(外碎片)、页式、段式、段页式
页式存储管理
页表项:记录了逻辑页号与页框号(物理内存划分成的一小块)的对应关系的一种数据结构。
地址转换:CPU取到逻辑地址,获得页号和页内地址,根据页号查页表,得到页框号,再与页内偏移地址拼接成物理地址。
内碎片:假设一个进程需要5页+一条指令,那么我们要给他分6页,然而指令只占第6页很小的空间,很浪费。
分段式存储管理
物理内存被动态的划分为若干长度不相同的区域。
32位操作系统 虚拟地址空间,最大达到2^32,也就是4G
64位操作系统 2^64,
虚拟内存管理
页表及页表项的设计
地址转换
内存管理单元MMU——地址转换(页目录地址,页框号,偏移地址等)
需要加快地址转换,否则无法充分利用CPU的速度,如何改善呢——引入快表(TLB)。
页错误
硬件检查页表时发现所要访问的页面不在内存,则产生该异常——缺页异常。
在系统中保存一定数目的空闲页框供给比使用所有内存并在需要时搜索一个页框有更好的性能。
置换算法
最佳页面置换算法、先进先出算法、第二次机会算法、时钟算法、最近未使用算法,最近最少使用算法(LRU)
LRU硬件实现:根据对应的页面访问顺序将对应行置1,对应列置0,最后将行值最小的置换掉。
Belady现象。当分配给进程的物理页面数增加时,缺页次数反而增加。
颠簸(抖动)页面在内存与磁盘之间频繁调度,使得进程运行时间比调度运用所花时间还少,从而影响系统效率。