2020.12.9 操作系统系统
系统软件 临界区管理的尝试 进程状态图 进程映像
I:属于系统软件的是?
答案:操作系统
系统软件是负责管理系统中各种独立的硬件。通俗的说就是能够直接控制硬件的。
硬件层负责提供各种可计算的资源,包括处理器,存储器,寄存器和各种I/O设备。
主要有操作系统,数据库系统,语言处理程序,支撑软件。
操作系统有dos,Windows。Unix,OS/2。操作系统负责管理各种各样的资源,包括处理器管理,文件管理,设备管理,存储器管理四项功能。
数据库系统
语言处理程序比如汇编语言汇编器,C语言编译器,连接器等等。
支撑软件,也叫系统辅助处理程序。主要有编辑程序,调试程序,装备和连接程序。
II:临界区管理只能通过软件管理?
答案:错误
临界区管理的软件算法:Perterson算法。
先开始不谦让,最后进去的时候再谦让一把
// peterson 算法
inside[0]=false;inside[1]=false;
enum{0,1} turn;
cobegin;
process PO(){
inside[0]=true;
turn=1;
while(inside[1] && turn==1);
临界区
inside[0]=false;
}
process P1(){
inside[1]=true;
turn=0;
while(inside[0] && turn==0)
临界区
inside[1]=false;
}
临界区管理的硬件设施:第一 关中断 第二 测试并建立指令 第三 对换指令
在单处理器计算机系统中,并发程序不能同时执行,只会交替的执行。为了保持互斥性,仅仅需要保证进程不被中断。而我们主要有两种方式来实现临界区管理,一种是关中断,还有一种是测试并建立指令。
- 关中断。在进程进入临界区时关中断,在进程退出临界区时开中断
- 测试并建立指令。用硬件所提供的“测试并建立”机器指令(Test and Set),可以把这一条指令看做是函数。由于TS指令是不可分割的指令,所以可以保证临界区管理的正确性。
bool TS(&x){
if(x){
x=false;
return true;
}
else{
return false;
}
}
//处理程序
bool s=true;
cobegin
void process(){
while(!TS(x));
临界区
s=true;
}
coend
- 对换指令,交换两个字之间的内容
在IntelX86中,对换指令被称之XCHG
void swap(bool &a, bool &b){
bool temp=a;
a=b;
b=temp;
}
//处理程序
// lock =false 表示现在没有程序
bool lock=false;
cobegin
void process(){
bool s=true;
do{
swap(&s,&lock);
}while(lock);
临界区
swap(&s,&lock);
}
III:进程的调度
答案:在分时系统中,一个正在运行的进程的时间片如果终结,那么该进程会转入就绪状态。
进程是对处理器的抽象
文件是对设备的抽象
虚存是对主存的抽象
三态模型
五态模型:添加了new 和exit 终止态
七态模型:增加两个挂起状态,将挂起的进程放到磁盘中
- 画图 先画出三态图,然后再画出终止态(从运行态指出去),再画出挂起就绪态,和挂起等待态(和挂起态和就绪态是双向,同时挂起等待也有指向挂起就绪,运行也有指向挂起运行态,)最后是新建态,有两个提交指向就绪态。
进程的描述和组成
(1) 进程的映象
由于进程的状态在不断的发生改变,某时刻进程的内容及其状态的集合被称为进程映象(process image),包括以下的一些元素:
- 进程控制块PCB
- 进程程序块
- 进程核心栈
- 进程数据块 进程控制块是进程的私有地址空间,存放各种私有数据,用户栈也要在数据块中开辟,用于函数调用时候存放栈帧,局部变量等参数。(堆)
如果只具体前面的三条,而共享用户地址空间。那么就称为“用户进程”,如果完全没有用户空间,那么就称为”内核线程“。