进程
概念:进程是能和其他程序并行执行的程序段在某数据集合上的一次运行过程,他是系统资源分配和调度的一个基本独立单位。
进程控制块(PCB):当系统要创建一个进程时,必须要申请一定的内存空间,为该进程建立PCB,以后系统就依据该PCB的各项内容对进程实行控制和管理。
PCB一般包括以下内容。
1.进程名:也称进程标示符,用于唯一标识一个进程;一般分为内部名和外部名
2.当前状态:进程当前的所处的状态。
3.进程优先级
4.现场信息保护区:当进程因为某件事情暂停时,CPU现场信息必须保存在PCB中,以便重新获得CPU是,能很快恢复现场
5.程序和数据的地址:进程所对应的程序和数据所在的内存或外存地址,方便调度
6.资源清单:一张列出的CPU以外的进程所需要的全部资源,以及已经分配到该进程的资源清单,如I/O设备,打开的文件等
7.队列指针:同一状态的PCB通常链接成一个队列。
8.进程的”家族“关系:父进程,子进程
PCB的组织方式一般有
1.线性方式
2.链接方式
3.索引方式
进程的三种基本状态:
1.就绪状态
2.执行状态
3.阻塞状态
进程控制:
为了对进程进行控制,操作系统中必须设置一个机构,他具有创建进程,撤销进程以及其他管理功能。这是操作系统中最常见、最核心的内容,常称为内核。它是操作系统的管理和控制中心,往往通过执行各种原语操作来实现的。原语->机器指令
1.创建原语:创建进程
2.撤销原语:撤销进程,撤销PCB
3.阻塞原语:调用阻塞原语来把进程阻塞起来
4.唤醒原语:唤醒阻塞进程
进程调度:
1.高级调度(宏调度或作业调度):将外存中的后备作业调度内存中
2.中级调度:负责内外存之间的进程对换
3.低级调度:决定就绪队列中的那个进程将获得处理器
调度功能包括
(1)保护现场
(2)从PCB表中选择符合条件的进程,并分配CPU
(3)回复原来的现场
调度的方式分为剥夺式和非剥夺式
剥夺式:抢占式,包括优先级方式、短进程原则、时间片原则
非剥夺式:独占CPU之道主动让出CPU
进程调度算法:
1.时间片轮换法
2.优先级调度
(1)静态优先级:进程创建时确定优先级
(2)动态优先级:进程执行期间,按某种原则不断修改进程优先级;例如进程占用CPU长短,进程等待CPU时间长短等等
3.多重队列轮换法:将时间片轮换法中的单就绪队列改为双就绪队列或者多就绪队列,并给每个队列赋予不同的优先权。
线程
概念:线程是比进程更小的独立运行的基本单位,是CPU调度的基本单位。线程默认共享当前进程的内存和资源。这种共享的优点是允许同一进程,同一地址空间存在多个线程。
多线程的优点
(1) 响应度高;比如说一个交互式的程序,比如说QQ视频聊天时,视频传输很明显是耗时的,而且很多时候都会出现视频卡的现象,这个时候假如说我们采用多线编程,当一个视频阻塞的时候,当前这个程序仍能运行,我们仍然通过另外一些线程可以 打字,语音等。
(2) 资源共享,线程默认共享当前进程内的内存和资源。这种共享的优点是 允许同一进程,同一地址空间 存在多个线程
(3)经济,系统开销小;创建进程是要系统分配资源的,回收进程是要回收资源的,这个过程比较耗时,而创建线程则相对来说快速的多。
(4)充分利用处理器资源;现在的处理器一般为多核的,当有多个线程的时候,同一时刻,每个核都能在工作,并行的工作;但是假如说的单线程的话,只能运行在一个核上,相对来说,另外一个核就浪费了,所以使用多线程能充分利用CPU的资源,加快程序执行的速率。