操作系统概念总结笔记——第三、四章 进程和线程
本章目标:
1、介绍进程的概念:执行中的程序;
2、介绍进程的特点:调度、创建、删除、通信;
3、介绍客户机-服务器系统之间的通信;
3.1 进程概念
进程:正在执行的程序,进程是大多数系统的工作单元:操作系统进程执行系统代码,用户进程执行用户代码;
进程包含:文本段(代码段)、数据段(全局变量)、堆栈段(临时数据,如函数参数、返回地址、局部变量)、堆(动态分配的内存);
程序与进程的区别: 程序是被动实体,是存储在磁盘上的可执行文件,进程是活动实体,当一个可执行文件被装入内存时,一个程序才能成为进程;
进程状态:创建、运行、等待(等待某个事件发生)、就绪(等待分配处理器)、中止;
3.2 进程调度
进程调度的概念:从多个可用进程中选择一个进程到CPU执行;
调度队列:进程进入系统后,会被加入到作业队列中,该队列包括系统中的所有进程,而驻留在内存中、等待运行的进程保留在就绪队列中;
调度程序:长期调度程序和作业调度程序从磁盘的缓冲池中选择进程、短期调度程序和CPU调度程序从准备执行的进程中选择进程,并为之分配CPU; 短期调度程序必须频繁地为CPU选择新进程,执行时间必须要快,长期调度程序执行得并不频繁;
上下文切换: 中断使CPU从当前任务改变为运行内核子程序,当发生中断时,系统需要保存当前运行在CPU中进程的上下文,从而在运行子程序结束后恢复上下文; 进程的上下文用PCB来表示; 将CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态,这一任务称为上下文切换;
3.3 进程操作
进程创建:通常使用fork(),对于子进程,返回值为0;对于父进程,返回值非0;
进程终止:通常使用exit(),在进程执行完毕后,请求操作系统删除自身,父进程可以用wait等待子进程的终止;
3.4 进程间通信
进程间通信有两种基本模式:(1)共享内存,通过建立共享内存块来交换信息, (2)消息传递,通过在协作进程实现交换信息;
共享内存:生产者-消费者实例;
消息传递:略;
本章目标:
引入线程的概念;一种CPU利用的基本单元;
4.1 概述
线程概念;线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合、栈构成,与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源,进程可分为单线程进程和多线程进程;
4.2 多线程模型
多对一模型:将许多用户级线程映射到一个内核线程,任何时刻只能有一个进程访问内核,若有一个进程阻塞了系统调用,那么整个进程都会阻塞;
一对一模型:每个用户线程映射到一个内核线程,提供了比多对一模型更好的并发功能,唯一的缺点是每创建一个用户进程就需要创建一个相应的内核线程,增大了应用程序的开销;
多对多模型:多对多模型综合了多对一模型可创建任意多线程、但缺乏并发性,以及一对一模型限制创建线程数量的特点;用户可以创建任意多的线程,并且在多处理器上并发执行;