计算机操作系统基础

(不定期更新)

操作系统概述

操作系统的四个特性

并发:同时存在多个运行的程序,
共享:系统中资源供多个并发进程同时使用。
虚拟:处理器分时共享,虚拟存储器等。
异步:多道导致程序以不可预知的速度向前推进。

操作系统提供的服务

进程管理,文件管理,存储管理,输入输出设备管理

中断和系统调用

中断:计算机在执行程序过程中,由于出现了某些特殊事情,CPU暂停当前程序的执行,转而去处理这一事件。

系统调用:用户在程序中调用操作系统所提供的一些子功能。

用户自编程序运行在用户态,操作系统内核程序运行在内核态。从用户态进入核心态就是通过中断和异常实现的。

进程管理

进程的状态与转换

计算机操作系统基础_第1张图片
进程的状态转换
  • 就绪 -> 运行:处于就绪态的进程被调度,获得处理机资源(分派处理机时间片)。
  • 运行 -> 就绪:运行时间片到或有更高优先级的进程就绪。
  • 运行 -> 阻塞:当进程请求某一资源(如外设)的使用和分配或等待某一事件的发生(如I/O操作完成)时。
  • 阻塞 -> 就绪:进程等待的事件到来,中断处理程序把相应的进程状态由阻塞态转为就绪态。

进程和线程的区别

进程:是进程实体的一次运行,是系统进行资源分配和调度的一个独立单位。引入进程是为了使多个程序可以并发执行。

线程:是比进程更小的独立运行的基本单位,可以看做轻量级的进程(具有轻型实体、独立调度分派单位,可并发执行,共享进程资源等属性)引入目的是为了减少程序在并发执行过程中的开销。

对比

  1. 调度方面:线程是独立的调度和分派单位,而进程是资源的拥有单位。由于线程不拥有资源,因此可以显著提高并发度及减小切换开销。
  2. 并发性:进程间可以并发,一个进程内多个线程也可以并发。
  3. 系统开销:创建或撤销进程时,系统要为之创建或回收PCB、系统资源等,切换时也需要保存和恢复CPU环境。二线程的切换至需要保存和恢复少量的寄存器,开销较小。
  4. 通信方面:进程间通信需要IPC,而同一进程的多个线程由于共享地址空间,可直接读取进程数据段(如全局变量)来通信。

进程通信

共享存储

低级方式是基于数据结构的共享,高级方式是基于存储区的共享。需要使用同步互斥工具(如P操作、V操作)对共享空间进行读写控制。

消息传递

直接通信方式:直接把消息挂到接收进程的消息队列
间接通信方式:挂到某个中间实体,接收进程找到实体接收消息,类似电子邮件。

管道通信

利用一种特殊的pipe文件连接两个进程。

进程调度

调度原因:合理处理计算机软硬件资源。

  • 先来先服务FCFS
  • 短作业优先
  • 高响应比优先:响应比 = (等待时间 + 要求服务时间)/ 要求服务时间
  • 时间片轮转调度RR
  • 多级反馈队列调度:时间片轮转调度算法和优先级调度算法的综合和发展。
    设置多个就绪队列并为每个队列设置不同的优先级,第一个队列优先级最高,其余依次递减。优先级越高的队列分配的时间片越短,进程到达之后按FCFS放入第一个队列,如果调度执行后没有完成,那么放到第二个队列尾部等待调度,如果第二次调度仍然没有完成,放入第三队列尾部…。只有当前一个队列为空的时候才会去调度下一个队列的进程。

进程同步

同步原则
  • 空闲让进
  • 忙则等待
  • 有限等待:对要求访问临界资源的进程,需要在有限时间内进入临界区,防止死等。
  • 让权等待:当进程无法进入临界区时,需要释放处理机,防止忙等。
同步解决方案

信号量:利用PV操作实现互斥。

管程:由一组数据及定义在这组数据之上的对这组数据的操作组成的软件模块。

经典的进程同步问题
  • 生产者-消费者问题
  • 哲学家就餐
  • 读者-写者问题

死锁

产生原因:非剥夺资源的竞争和进程的不恰当推进顺序。

死锁产生四个条件:互斥条件,请求和保持条件,不可剥夺条件,环路等待条件。

死锁处理
  • 预防死锁:破坏产生死锁的4个必要条件中的一个或者多个。
  • 避免死锁:防止系统进入不安全状态(可能产生死锁的状态),如银行家算法。
  • 检测死锁:利用死锁定理化简资源分配图以检测死锁存在。
  • 解除死锁:资源剥夺法,撤销进程法,进程回退法。

内存管理

连续分配

单一连续分配

分配到内存固定区域,只适合单任务系统。

固定分区分配

分配到内存不同固定区域,分区可以相等也可以不等。

动态分区分配
  • 首次适应(First Fit):按地址从小到大为序,分配第一个符合条件的分区。
  • 最佳适应(Best Fit):按空间从小到大为序,分配第一个符合条件的分区。
  • 最坏适应(Worst Fit):按地址从大到小为序,分配第一个符合条件的分区。
  • 临近适应:与首次适应相似,从上次查完的位置开始找。

非连续分配

基本分页

要一个页表来记录逻辑地址和实际存储地址之间的映射关系,以实现从页号到物理块号的映射。

计算机操作系统基础_第2张图片
页表的作用

分页管理引入了快表机制

分页管理还可以采用两级页表或多级页表的方法。

基本分段

分段是为了满足程序员在编写代码的时候的一些逻辑需求(比如数据共享,数据保护,动态链接等)

计算机操作系统基础_第3张图片
基本分段

对比:页是信息的物理单位,是出于系统内存利用率的角度提出的;段是信息的逻辑单位,是出于用户角度提出的。页的大小是固定的,由系统决定;段的大小是不确定的,由用户决定。

段页式

基本分段和基本分页的结合

虚拟内存

在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。

操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

置换算法
  • 最佳置换算法(OPT):选择以后不用的页面换出。只具有理论意义,用来评价其他置换算法。
  • 先进先出算法(FIFO):每次淘汰最早调入的页面。
  • 最近最久未使用算法(LRU)
  • Clock算法:页面设置一个访问位,并将页面链接为一个环形队列,页面被访问的时候访问位设置为1。如果当前指针所指页面访问为为0,那么置换,否则将其置为0。
  • 改进型Clock算法:在Clock算法的基础上添加一个修改位。

你可能感兴趣的:(计算机操作系统基础)