Basement
操作系统:控制和管理计算机系统的硬件和软件资源,并合理地组织调度计算机工作和资源的分配。
用户态和核心态:
用户程序和操作系统内核
通过中断(外中断,来自CPU执行指令意外的时间发生:外设请求,人的干预)或者异常(内中断,CPU执行指令内部的时间:非法操作码、地址越界,专门的陷入指令,从而从用户态转换为核心态
进程控制块(Process Control Block, PCB):描述基本情况和运行状态
进程切换:(1)保存处理机上下文,包括程序计数器和其他寄存器(2)保存程序控制块(3)将程序的程序控制块移入到相应的队列(4)选择另一个进程,并更新其程序控制块(5)更新内存管理的数据结构(6)恢复处理机上下文
进程的状态:
运行状态:
就绪状态:得到了处理机之外的一切所需资源
阻塞状态:正在等待某一事件而暂停运行。(等待某资源可用,等待输入输出完)
创建状态:正在被创建
结束状态:
就绪-运行:进程被调度
运行-就绪:时间片用完
运行-阻塞:请求某一资源或者等待某一事件的发生
阻塞-就绪:中断结束
进程间通信:
共享存储:进程之间存在一块可直接访问的共享空间,通过对共享空间进行读/写操作实现线程之间的信息交换
消息传递:进程间数据交换是以格式化的信息为单位
管道通信:管道是一个固定大小的缓冲区,只允许一边写入,另一边读出。用于连接一个读进程和一个写进程,来实现他们之间的通信
作业调度:按照一定的原则,在外存上处于后备的作业中挑选一个或多个作业给它们分配内存、输入输出设备等必要的资源。
中级调度(内存调度): 为了提高内存利用率和系统吞吐量。将暂时不能运行的进程,调至外存等待。
进程调度:从就绪队列中选取一个进程,将处理机分配给它。
进程调度方式:
非剥夺调度方式:
剥夺调度方式
先来先服务调度算法:不可剥夺算法
短作业优先:
优先级调度算法:
高响应比优先调度算法:响应比 = (等待时间+要求服务时间)/ 要求服务时间
时间片轮转调度算法
多级反馈队列调度算法:设置多个就绪队列,每个队列有不同的优先级,优先级越高,每个进程的运行时间就越短。当一个进程进入内存后,首先将它放入第1级队列的末尾,按先来先服务的调度算法等待调度,当轮到该进程执行时,能够在时间片里完成,就从系统中撤出。如果不能在时间片里完成,就进入第2级队列中。
临界资源:一次仅允许一个进程使用的资源。
同步:直接制约关系,源于他们之间的相互合作
互斥:间接制约关系
死锁预防处理策略:
预防死锁:通过设置某些条件来破坏死锁的四个必要条件中的一个或几个
避免死锁:在动态分配资源的过程中,计算分配资源会不会导致系统不安全 (银行家算法)
死锁的检测及解除:
检测:资源分配图(资源,进程,进程到资源-申请,资源到进程-分配),通过资源分配图简化进行检测,如果不能完全被简化,则死锁。
解除:资源剥夺法(挂起某些进程),撤销进程法(强制撤销),进程回退法
内存分配:
连续分配:
单一固定分配:
固定分区分配:
动态分区分配:在进程装入内存时,根据进程的大小来建立分区。
首次适应:顺序查找,找到能满足要求的第一个分区
最佳适应:空闲分区以容量递增形成分区链,找到能满足要求的第一个分区
最坏适应:空闲分区以容量递减形成分区链,找到能满足要求的第一个分区
临近适应:在上一次查找结束的位置开始找
非连续分配:
基本分页:
地址结构(页号+页内偏移量)
页表:每一个进程都有一个页表,记录页号在内存中对应的块号(页号 + 块号)
地址转换:逻辑地址.页号 + 页表寄存器.页表起始位置 -> 页表.页号 ->内存中块号 + 逻辑地址.页内偏移量 ->物理地址
快表:高速缓冲器
两级页表
基本分段:按照用户进程的自然段划分逻辑空间
段页式:
虚拟内存
局部性原理:时间局部性(如果程序中某条指令一旦执行,不久后该指令可能再次执行) 空间局部性(一旦程序访问了某个存储单元,在不久之后,其附近的存储单元页将被访问)
虚拟存储器:由于系统提供了部分载入,请求调入,置换功能后,给用户的感觉是提供了比实际内存要大的多的存储器。
实现:分页,分段,段页式
页面置换算法:
最佳置换:选在的淘汰页面是以后永久或最长时间不用的,但无法实现
先进先出:
最近最久未使用(LRU):
时钟置换(最近未用):
I/O控制方式:
程序直接控制:CPU不断测试I/O设备的状态,字是否在I/O控制器的数据寄存器中
中断驱动:允许设备主动打断CPU的运行并请求服务。I/O控制器从CPU接收到一个读命令,然后从外围设备读取数据,一旦数据读到I/O控制器的数据寄存器中,变通过控制线给CPU发送中断信号。I/O控制器在收到CPU的取数据请求后,将数据到总线上,传到CPU的寄存器中
DMA(直接存储器存取):在I/O设备和内存中开辟直接的数据交换通路,解放CPU。 CPU在接收到I/O设备的DMA请求时,它给I/O控制器发送命令,启动DMA。DMA直接与存储器交互,传送整个数据块。在传送完成后,DMA发送中断信号给CPU。 需要CPU来控制传输的数据块大小,传输的内存位置,通道控制方式由通道决定。
通道控制方式:当CPU需要完成堆一组相关的读(或写)操作,只需想I/O、通道发送一条指令给出其所要执行的通道程序的首地址和要访问的I/O设备
分类:
阻塞IO,非阻塞IO,多路复用IO(select、poll),信号驱动和异步IO。
阻塞IO:
用户进程会阻塞,等待数据的准备,拷贝。
非阻塞IO:
当数据没有准备好的时候会返回error(调用之后激励返回),用户进程需要不断地轮询内核数据是否准备好了
多路复用IO:
当用户进程调用select和epoll的时候,用户进程会被阻塞。select和epoll会轮询所有负责的socket,当socket有数据到达之后,会通知用户进程。能够在同一时间处理多个套接字IO请求。
信号驱动IO:当数据准备好的时候,内核通过发送信号通知用户进程。信号处理函数调用IO操作
异步IO:当用户发起请求之后,立刻可以去做其它的事。并由内核告诉我们操作完成。请求之后,内核系统马上返回,并在数据准备好之后将数据复制到用户内存,发送信号通知请求已完成。

浙公网安备 33010602011771号