读书笔记《操作系统》

第一章 操作系统概述

1.1 操作系统的基本概念

1.1.1 操作系统的概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理组织和调度计算机的工作和资源分配,以提供给用户和其它软件方便的接口和环境的程序集合

1.1.2 操作系统的特征

P2 并发,共享,虚拟,异步。前两者为基本特征。

1.1.3 操作系统的目标和功能

P4 处理机管理,存储器管理,设备管理,文件管理
P4 操作系统提供命令接口和程序接口。命令接口分为联机控制方式,又称为交互式命令接口和脱机命令接口,又称为批处理命令接口
P8 没有使用系统调用的库函数执行效率通常比系统调用高

1.2操作系统的发展与分类

1.2.1 手工操作阶段

1.2.2 批处理阶段

P8 单道批处理系统∶自动性,顺序性,单道性
P8多道批处理系统∶多道,宏观上并行,微观上串行

1.2.3 分时操作系统

P9 实现人机交互
P9 特征∶同时性,交互性,独立性,及时性

1.2.4 实时操作系统

P10 主要特点是及时性和可靠性

1.2.5 网络操作系统和分布式操作系统

P10 两者本质上的不同是分布式系统中,若干台计算机相互协同完成同一任务
P11 操作系统的基本类型有批处理系统,分时系统和实时系统

1.3 操作系统的运行环境

1.3.1 操作系统的运行机制

P15:中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序
P15:定义原语的直接方法是关闭中断
P15:核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令

1.3.2 中断和异常的概念

P16:中断和异常发生时,运行用户态的CPU会立刻进入核心态,是通过硬件实现的。

1.3.3 系统调用

P19:批处理的主要缺点是缺少交互性。输入输出指令需要中断操作,中断必须在核心态下执行。系统调用需要触发trap指令。因操作系统不允许用户直接执行某些危险性高的指令,故用户态运行这些指令的记过会转成操作系统的核心态去运行。这个过程就是访管中断。广义指令就是系统调用命令。子程序调用只需保存程序断点,即该指令的下一条指令的地址,中断调用子程序不仅要保护断点,还要保护程序状态字寄存器的内容PSW,在中断处理中,最重要的两个寄存器是PC和PSWR

第二章:进程管理

2.1 进程与线程

2.1.1 进程的概念和特征

P25:由程序段、相关数据段和PCB组成进程映像。创建进程,实际上就是创建进程映像中的PCB。进程映像是静态的,进程是动态的。
P25:PCB是进程存在的唯一标志
P26:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
P26:进程的特征:1:动态性(最基本特征)2:并发性。3:独立性。4:异步性。5:结构性

2.1.2 进程的状态与转换

P26:就绪状态是进程仅仅缺少处理机。而等待状态是进程需要其他资源或等待某一事件。
P27:进程状态转换图

2.1.3 进程控制

P27:子进程可以继承父进程所拥有的资源
P27:PCB是有限的
P27:为进程分配资源时,如果资源不足,并不是创建失败,而是处于等待状态
P28:进程的阻塞是进程自身的一种主动行为

2.1.4 进程的组织

P29:进程创建时,操作系统就新建一个PCB结构,它之后就常驻内存

2.1.5 进程的通信

P30:1:共享存储。2:消息传递。3:管道通信

2.1.6 线程概念和多线程模型

P31:引入线程,是为了减小程序在并发执行时所付出的时空开销。线程是一个基本的CPU执行单元,也是程序执行流的最小单元。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源
P31:线程是独立调度的基本单位,进程是资源拥有的基本单位
P31:线程切换时只需保存和设置少量寄存器内容,开销很小。由于同一进程内的多个线程共享进程的地址空间,因此,这些线程之间的同步和通信非常容易实现,甚至无需操作系统的干预。
P31:进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读写进程数据段来进行通信。
P39:用户线程对操作系统内核透明,所以100个线程共享操作系统分配给他们进程的一个时间片

2.2 处理机调度

2.2.1 调度的概念

2.2.2 调度的时机、切换和过程

2.2.3 进程调度方式

2.2.4 调度的基本准则

P48:带权周转时间=作业周转时间/作业实际运行时间

2.2.5 经典的调度算法

P50:响应比=(等待时间+要求服务时间)/要求服务时间
P61:中断向量本身是用来存放终端服务例行程序的入口地址。中断由硬件保护完成,主要是为了保证系统运行可靠正确

2.3 进程同步

2.3.1 进程同步的基本概念

P70:同步机制应遵循以下准则:空闲让进,忙则等待,有限等待,让权等待

2.3.2 实现临界区互斥的基本方法

P70:4种软件实现方法
P0进程                        P1进程
while(turn!=0);          while(turn!=1);
critical section;           critical section;
turn=1;                      turn=0;
remainder section;    remainder section;
//缺点:如果某个进程不再进入临界区,那么另一个进程也将无法进入临界区


Pi进程                        Pj进程
while(flag[j]);           while(flag[i]);
flag[i]=true;             flag[j]=true;
critical section;         critical section;
flag[i]=false;            flag[j]=false;    
remainder section;   remainder section;
//缺点:可能同时进入临界区


Pi进程                        Pj进程
flag[i]=true;             flag[j]=true;
while(flag[j]);           while(flag[i]);
critical section;         critical section;
flag[i]=false;             flag[j]=false;    
remainder section;   remainder section;
//缺点:可能谁都无法进入临界区

Pi进程                                   Pj进程
flag[i]=true;turn=j;              flag[j]=true;turn=i;
while(flag[j]&&turn==j);      while(flag[i]&&turn==i);
critical section;         critical section;
flag[i]=false;             flag[j]=false;    
remainder section;   remainder section;
//算法1和3的结合,也叫peterson's algorithm

2.3.3 信号量

1:整形信号量
wait(S){
    while(S<=0);
    S=S-1;
}
signal(S){
    S=S+1;
}

此方法并未遵循让权等待。

2:记录型信号量
typedef struct{
    int value;
    struct process*L;
}semaphore;

void wait(semaphore S){
    S.value--;
    if(S.value<0){
          add this process to S.L;
          block(S.L);
    }
}
void signal(semaphore){
    S.value++;
    if(S.value<=0){
         remove a process P from S.L;
         wakeup(P);
     }
}

2.3.4 管程

P76:管程是由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程




















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值