1.引论

计算机运行模式:内核态与用户态,操作系统作为软件中最基础的部分,运行在内核态(管态、核心态)

操作系统由硬件保护,防止用户试图对其进行修改,但在嵌入式系统(无内核态)或解释系统(解释方式而非硬件方式区分组件)中并非如此。

操作系统的定义

运行在内核态的软件

运行两个基本独立的任务:

1.为应用程序提供一个资源集合的清晰抽象

2.管理硬件资源


概念:抽象
抽象是管理复杂性的一个关键,抽象可以将几乎不可能管理的任务划分为可管理的两个部分,
第一部分是有关抽象的定义和实现,
第二部分是随时用该抽象解决问题,抽象是理解操作系统的关键

从不同的角度理解操作系统

自顶向下:操作系统向应用程序提供基本抽象

自低向上:操作系统用来管理一个复杂系统的各个部分

硬件组成:操作系统在相互竞争的程序之间有序地控制对处理器、存储器以及相关I/O接口设备等硬件资源的调度与分配

资源管理

时间复用:不同程序或用户轮流使用

空间复用:每个程序都获得资源的一部分

计算机硬件

处理器(CPU):从内存中取出指令并执行,每个CPU都有一套可执行的专门指令集,包含通用寄存器、程序计数器、堆栈指针、程序状态字寄存器


程序计数器:指向下一条指令的内存地址
堆栈指针:指向内存中当前栈的顶端
程序状态字寄存器:包含条件码位、CPU优先级等各种控制位,例如可以控制CPU处于内核态或是用户态,当处于内核态时可以执行指令集中的每一条指令,而处于用户态时仅能执行整个指令集的一个子集

存储器

磁盘

磁带

I/O设备

总线

2.进程

创建进程的4种方式

1.系统初始化

2.正在运行的进程调用系统调用创建进程

3.用户请求创建新的进程

4.一个批处理作业的初始化

进程终止的4种情况

1.正常退出

2.出错退出

3.严重错误

4.被其它进程杀死

进程的层次结构

父进程与子进程以某种形式保持关联,子进程可以创建更多的进程,组成进程的层次结构

而Windows中没有进程层次的概念,所有进程的地位相同,
唯一类似进程层次的暗示为父进程拥有一个句柄,可用于控制子进程,其有权将句柄交予某个其它进程

进程的状态

  1. 运行态(进程占用CPU)
  2. 阻塞态(除非某种外部事件发生,否则进程不能运行)
  3. 就绪态(可运行,因其它进程正在运行而暂时停止)
stateDiagram-v2
运行态
运行态 --> 阻塞态

运行态 --> 就绪态

阻塞态 --> 就绪态

就绪态 --> 运行态

就绪态与运行态的转换由进程调度程序引起,进程调度程序是操作系统的一部分,进程甚至感觉不到调度程序的存在,如何调度由具体的调度算法决定

进程的实现

进程表(process table),每个进程占用一个进程表项(进程控制块)

中断

进程间通信

避免竞争条件:


1.任何两个进程不能同时处于其临界区
2.不对CPU的速度和数量做任何假设
3.临界区外运行的进程不得阻塞其它进程
4.不得使进程无限期等待进入临界区

忙等待的互斥:


1.屏蔽中断
2.锁变量
3.严格轮换
4.Peterson解法




sayornottt
1 声望0 粉丝

姑且是测试开发工程师.