操作系统理论基础

进程和线程

进程

进程:进程是系统资源调度的基本单位。进程的存在实体是进程控制块(PCB),创建进行就相当于创建了一个进程控制块,该数据结构用于表示进程的状态。
包含的信息有:

  • 进程标识符(进程ID)
  • 处理机的信息(通用寄存器、指令计数器、用户栈指针)
  • 进程调度信息(进程状态、进程优先级、调度所需的其他信息)
  • 进程控制信息(程序的数据地址、资源清单、通信机制、连接指针)

进程间同步的方法
- 管道(数据只能单向流动,只能在父子进程之间使用。有名管道可以突破父子之间的限制)
- 系统IPC(消息队列、信号量、共享内存)
- socket

进程同步的原则:

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待
线程

线程:线程是系统调度和分派CPU的基本单位,是进程的一个实体,线程中也存在线程控制块(TCP)。可以与其他线程共享同个进程中的资源。线程可以创建线程,可以并发执行,线程之间也可以相互制约。
包含的信息有:

  • 线程标识符
  • 程序计数器
  • 寄存器集合
  • 堆栈
进程与线程的区别

调度、并发、资源、开销、独立性

进程与线程的主要区别在于他们是操作系统不同的资源管理方式。

进程有自己独立的地址空间,资源基本不会共享,一个进程崩溃不会对其他进程产生影响,多进程的健壮性更为优秀。其执行顺序是线性的。进程切换时,耗费的资源更多,效率不高。

线程没有自己的独立地址空间,属于进程的一部分,线程会与其他线程共享进程中的资源,一个线程的崩溃会影响其他线程,导致进程崩溃。线程的切换耗费资源小,效率高。

死锁的必要条件,如何处理死锁

产生死锁的原因

  • 系统资源不足
  • 程序推进顺序不当
  • 资源分配不当
死锁的必要条件
  • 互斥(一个资源只能被一个进程使用)
  • 资源不可抢占(资源被进程使用完成前不可以被其他进程抢占)
  • 请求和保持(一个进程在请求资源失败时,仍不释放自己的资源)
  • 环路等待(若干进行形成相互头尾相连请求资源的关系)
死锁的解决方法
  • 预防死锁:破坏产生死锁的四个必要条件。资源一次性分配,可剥夺资源、资源有序分配法。以上方法会严重的损害系统的性能,得不偿失。
  • 避免死锁:允许进程动态的申请资源。在系统分配资源之前预先计算资源分配的安全性,如果此次资源可能导致系统进入不安全状态,则进程等待。银行家算法。
  • 检测死锁:为每个进程和资源分配一个唯一标识,建立资源分配表和进程等待表。如果出现环路,则检测到死锁。
  • 解除死锁:发现死锁后,便应该立即解除该状态。剥夺资源,从其他进程剥夺资源交给死锁进程,以解除死锁状态。撤销进程:直接撤销死锁进程或代价最小的进程,直至系统状态正常。

内存管理,分页存储、分段存储、段页存储

分页存储

逻辑空间:等分为页,从0开始编号
内存空间:等分为块,与页面大小相同,从0开始编号。
分配内存时,以块为单位将进程中的若干页装入到物理块中。(可以离散分布)

地址结构分为两部分,页号和偏移量(页内地址)
页号决定页的数量,偏移量决定页的大小。
逻辑地址=页号+偏移量(物理地址=块号+偏移量)

使用页表来映射页号与物理块号,再结合偏移量计算出具体位置。

分段存储

逻辑空间:分为若干段,每个段定义一组有完整逻辑意义的信息(如主程序Main()),如主程序段、子程序段、数据段。
内存空间:为每个段分配一个连续的分区。
段的长度由相应的逻辑信息组的长度决定,因此段的长度不等。

地址结构为:段号、偏移量(段内地址)
段内地址决定段大小,段号决定段数量
逻辑地址=段号+偏移量(物理地址=基址+段内地址)

使用段表,由段号获取段长和基址。在根据基址和段长以及段内地址获取物理地址。

分段和分页的区别
分页存储使用的是信息的物理单位,大小相同,由系统固定,地址空间是一维的。
分段存储使用的是信息的逻辑单位,大小不等,由用户指定,地址空间是二维的。

段页式存储

用户程序先进行分段处理,段内部在进行分页处理(内部原理与基本的分段、页相同)

地址结构分为三部分,段号、段内页号、页内地址

逻辑地址=段号+段内页号+页内地址
段表寄存器=段表始址
段号+段表始址=页表始址
页表始址+段内页号=存储块号
存储块号+页内地址=物理地址

单独的段、页式需要两次访问内存,段页式则需要三次。

进程的状态及转换

进程的状态
  • 就绪状态,进程分配到除CPU外的所有必需资源,只要获取CPU便可立即执行。一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个就绪队列。
  • 执行状态,进程已经获得CPU,其程序正在运行。单处理机系统中,只有一个进程处于执行状态,多处理机中则有多个进程处于执行状态。
  • 阻塞状态,正在执行的进程,由于等待某个时间而无法执行时,便会放弃处理机处于阻塞状态。(如,I/O等待,缓冲区不足、等待信号)
三种状态间的转换

进程在运行期间,会不断的进行状态转换,每种状态都可能多次出现。
- 就绪-执行,处于就绪状态的进行得到了调度程序分配的处理机,就会转变成执行状态。
- 执行-就绪,处于执行状态的进程由于分配的时间片使用完毕,不得不让出处理机,就会转变成就绪状态。
- 执行-阻塞,处于执行状态的进程因为等待某种事件而无法继续执行,就会装变成阻塞状态。
- 阻塞-就绪,处于阻塞状态的进程,其等待的事件结束,就会转变成就绪状态。

IPC通信方式

管道及有名管道

匿名管道

  • 半双工,数据单向流动。双方通信时需要建立两个管道。
  • 只能用于父子或兄弟进程通信
  • 单独构成一种独立的文件系统,对两端进程而言是一个只存在内存中的特殊文件系统
  • 从尾部写入,从头部读出

与有名管道的不同之处

  • 有名管道允许无亲缘关系进程间通信。
  • 有名管道提供一个路径名与之关联,是Linux文件类型的一种,存在于文件系统中。

与有名管道的相同之初

  • 单向半双工
  • 字节流,进程之间须语言确定“协议”,特定意义的信息
  • 随进程持续的IPC
  • 相同限制 OPEN_MAX,PIPI_BUF

Shell中用于重定向
亲缘进程间通讯

信号

用于通知接收进程某种事件的发生,也可以发生信号给进程本身。承载信息少,需要约定含义。

消息队列

消息队列是消息的链接表,包括Posix消息队列和system V消息队列。有写权限的进程向队列中添加消息,有读权限的进程读取队列中的信息。消息队列克服了信号承载信息少,管道承载无格式字节流和缓冲区大小受限的特点,消息队列是随内核持续的。

共享内存

使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。针对其他通信机制允许效率较低而设计的。往往与其他通信机制,如与信号量结合使用,来达到进程间绒布及互斥的目的。

信号量

主要作为进程间以及不同进程之间的同步手段。

套接口(Sockert)

更为一般的进程间通信机制,可用于不同机器之间的进程间通信。

虚拟内存和物理内存

物理内存:物理内存就是机器真正的内存。
虚拟内存:使程序任务它拥有连续的可用内存(一个连续完整的地址空间)。实际上,它通常被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘上,在需要时进行数据交换。

逻辑地址、虚拟地址、线性地址、物理地址

  • 逻辑地址:由程序产生的和段相关的偏移地址部分。开发人员仅需和逻辑地址打交道,分段和分页机制都是完全透明的。
  • 线性地址:使逻辑地址到物理地址变换的中间层。程序会产生逻辑地址(段中偏移值),加上相应的基地址组成了一个线性地址。如果由分页机制,那么线性地址再变换后才是物理地址,否则就是物理地址
  • 物理地址:是指CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。
  • 虚拟地址:逻辑地址是虚拟地址的一部分,虚拟地址是对整个内存的抽象描述,是相对于物理地址而言的。

实时系统的基本特征

在特定时间内完成特定任务,实时性与可靠性。
实时系统指在操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源的动态分配,其处理事务的能力较强,速度较快。

中断与轮询

轮询:是早期计算机系统对I/O设备的一种管理方式。定时对各种设备轮询是否有处理要求。但其效率不高,有相当一部分CPU资源浪费在轮询动作上。

中断:指CPU在正常工作的过程中,由于预先安排或发生了各种随机的内部或外部事件,使CPU中断正在执行的程序,转到中断的服务程序上去。CPU利用率高,但可能遗漏事件。

临界区

每个进程中访问临界资源的那段程序称为临界区,每次只允许一个进程进入临界区,进入后不允许其他进程进入。
冲突解决
- 若干进程要求进入空闲临界区,一次仅允许一个进入。
- 临界区进程不可多于一个,已有进程进入临界区后,其他进程需要等待
- 进入临界区的进程须在有限时间内退出
- 不能进入的进程,应让出CPU,避免忙等。

Linux文件属性

第一位:文件标识符

  • -普通文件
  • c字符设备
  • b块设备
  • d目录
  • l文件链接

二到四位:用户权限
五到七位:组权限
八到十位:其他权限

缓冲区溢出及其危害

指向计算机缓冲区填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据之上。主要原因是,程序没有仔细检查用户输入的参数。
缓冲区溢出可能会使数据发生损坏,也可能由于溢出而可以跳转执行一段恶意代码。

常见操作系统的文件系统

FAT32:

  • 支持磁盘32G,最小512MB
  • 存储效率更高
  • 可以重定位根目录和使用FAT的副本

NTFS:基于安全性的文件。

  • 支持分区
  • 可恢复
  • 支持压缩
  • 存储、管理效率高
  • 可以设置共享资源

EXT2:Linux系统中标准文件系统,存取性能好,适合中小文件

EXT3:日志文件系统,是EXT2的扩展

EXT4:性能可靠性更高

  • 兼容EXT3
  • 支持更大的文件系统和更大的文件
  • 无限子目录
  • 在线碎片整理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值