进程模型
进程概念
为了表示系统的动态特征而引入了进程。
进程是能和其他程序并行执行的程序段在某数据集合上的一次运行结果,它是系统资源分配和调度的一个独立单位。
进程的特点:动态性(有一定的生命周期)、并发性(多个进程同时运行)、独立性、异步性、结构性
进程的实体
进程实体的组成:程序、数据集合、进程控制块(PCB,描述和标志进程的存在,进程创建时建立,进程完成任务被撤销时被撤销)
PCB 的内容:
- 进程名 name(进程标志符)
- 当前状态 status
- 当前队列指针 next
- 总链指针 all-q-next
- 执行程序开始地址start-addr
- 进程优先级 priority
- CPU 现场保护区 cpustatus
- 进程通信 communication information
- 家族联系 process-family
- 占用资源清单表own-resource
PCB 组织方式:
- 线性方式
- 连接方式:将有相同状态的 PCB 用链表的形式组成一个队列
- 索引方式
进程状态和转换
进程的三种状态:
- 就绪状态:获得资源,不占用 CPU。一旦获得 CPU 立刻执行。
- 执行状态:进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。
- 阻塞状态:指进程不具备运行条件,正在等待某个时间完成的状态。
进程状态转换:
- 产生原因:自身的进展情况,与其他进程并发执行、相互制约和外界条件变化
进程控制
进程控制是对进程进行创建、运行、暂停、消亡的操作 进程控制是通过内核这个"机构"实现的,是 os 的管理控制中心,其功能往往是通过执行各种原语操作来实现的。
原语:若干机器指令构成的程序模块,用于完成特定功能;执行期间不可分割
用于程序控制的原语:
- 创建原语:
创建进程的两种方法:一是 os 创建,二是其他进程创建
过程:申请 PCB,分配数字标识符-->将程序调入内存-->填写信息-->设置为就绪状态 - 撤销原语:
实质是撤销进程存在标准 PCB
过程:检索 PCB-->从队列中删除-->查找所有子孙进程-->释放-->如果程序原来为执行状态,重新执行调度 - 阻塞原语:
使用原因:缺乏资源、等待 I/O
过程:(处于执行状态)保存当前进程的现场-->设置进程状态为等待-->进程进入阻塞队伍-->转进程调度,选择一个就绪状态执行 - 唤醒原语:
过程:把唤醒程序从阻塞队列中移出-->设置为就绪状态-->将进程插入就绪队列中
线程模型
进程时间空间开销大,因此设置的数目不能过多,因此引入线程。
线程:进程中的一个实体,比进程更小的独立运行的基本单位。
线程的属性:
- 线程组成:线性控制块(TCB)(唯一的标识符、描述处理机状态的一组状态寄存器、私用存储器与栈指针),两个栈(用户栈和内核栈)。
- 线程的实体基本上不拥有系统资源,但可以与同属于一个进程的其他线程共享进程的全部资源
- 线程可创建和撤销另一个线程;不同线程可并发执行
线程的状态与进程相似
线程的实现:
- 内核支持线程:内核管理控制 内核提供相应的 API 和系统调度,用户程序可以创建、执行和撤销线程。 内核中保留了线程控制模块(TCB),通过其感知线程 (图片) 优点:编程简单;如果进程中一个线程阻塞,内核可以调度另外的线程。 缺点:效率低;需要占用内核稀缺的内存资源;需要修改 os
- 用户级线程 仅存在于用户级,内核不知道线程的存在 优点:灵活(用户自行选择线程调度算法于过程);线程切换快 缺点:一个线程受阻会造成整个进程受阻
- 两种的组合