计算机组成原理
操作系统的四个特性
- 并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件)
- 共享:系统中的资源可以被内存中多个并发执行的进线程共同使用
- 虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个
- 异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进
进程与线程
进程的状态:1:就绪状态,2:执行状态,3:阻塞状态(多线程时也是这些状态)
分类:
- 僵尸进程:子进程结束,父进程没有明确答复操作系统,占用大量PID号;解决方法:1、调用wait()长时间阻塞父进程.2、使父进程必须被结束.3、写一个信号处理函数,在其中调用wait()
- 孤儿进程:父进程退出,子进程还在运行,子进程将被init收养,称为孤儿进程
- 守护进程:将进程改变为孤儿进程,从而进入后台进程组,常驻在内存中
进程与线程的对比
进程是系统进行资源调度和分配的基本单位;线程是CPU调度的基本单位。
进程 = 资源 (包括寄存器值,PCB,内存映射表)+ TCB(栈结构)
线程 = TCB(栈结构)
线程 的资源是共享的
进程 间的资源是分隔独立的,内存映射表不同,占用物理内存地址是分隔的
线程 的切换只是切换PC,切换了TCB(栈结构)
进程 的切换不仅要切换PC,还包括切换资源,即切换内存映射表
进程间通信方式
signal:信号通信,相当于传递过去一个动作的信号
file:文件描述符,用于对文件进行操作
pipe:管道通信,单向的数据流动的通道
shm:共享内存,各个进程都能共同访问的共享的内存区域
sem:信号量,表示的是对shm的访问规则
msg:消息体,和管道类似,但不是连续的
socket:网络之间不同进程通信
虚拟内存和物理内存
页面置换算法
1:最佳置换算法(Optimal):一种理论的算法,选着淘汰的页面是以后一定不再使用的页面(理想化的),该算法无法实现,只能作为其他算法好坏的一个评价对比。
**2:先进先出(FIFO)算法:**总是最先淘汰最先进去的页面,该算法容易实现。缺点:通常程序调入内存的先后顺序和程序执行的先后顺序不一致,导致缺页率高。
**3:最近最久未使用算法LRU:**算法赋予每个页面一个访问字段,用来记录上次页面被访问到现在所经历的时间t,每次置换的时候把t值最大的页面置换出去(实现方面可以采用寄存器或者栈的方式实现)。
4:时钟算法clock(也被称为是最近未使用算法NRU):页面设置一个访问位R,并将页面链接为一个环形队列,页面被访问的时候访问位设置R为1。页面置换的时候,如果当前指针所指页面访问R为0,那么置换,否则将其置为0,循环直到遇到一个访问为位0的页面。
但是这个方法有缺点:缺页比较少的时候(最近没有使用淘汰中的“最近”太长了),所有的R都为1(很少变成0),每次都要转一圈才能找到换出去的页,退化成FIFO,效率不高。
改进: 双指针,一个快,一个慢,像时钟一样 (定时清除R位)(更像clock)
快时钟做R的清0定时清0,等到慢指针转到这里的时候R=0,说明在定时时间片内没有备访问,该页可以被替换了。