并行:同一时间能运行多个指令
并发:在一段时间内运行多个程序
定义:在程序中,但凡是与系统态级别的资源相关操作,都需要通过系统调用方式向操作系统发出请求,并让操作系统代而完成
设备管理:完成设备的请求或释放,以及设备启动等功能。
文件管理:完成文件的读、写、创建及删除等功能。
内存管理:完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。
进程管理:完成进程的创建、撤销、阻塞及唤醒等功能。
(1)调度:进程是资源分配的基本单位,线程是cpu调度的基本单位
(2)并发性:线程是进程的一个实体,一个程序至少一个进程,一个进程至少包含一个进程,一个进程间的多个线程可并发
(3)拥有资源:进程有自己的独立地址空间,线程没有
(4)系统开销:进程上下文切换的系统开销远大于线程
(5)相互影响:一个进程挂掉不会影响其他进程,而线程会影响其他线程
(6)通信方式:两者的通信方式不同
(1)匿名管道:父子进程和兄弟进程
(2)有名管道:遵循先进先出,磁盘文件方式存在
(3)信号:通知结束进程事件的发生
(4)消息队列:是一个在系统内核中用来保存消 息的队列,它在系统内核中是以消息链表的形式出现的
(5)信息量:计数器,多进程对共享数据的访问
(6)共享内存:使得多个进程可以访问同一块内存空间
(7)套接字:客户端和服务器之间通过网络进行通信
(1)volatile
(2)等待/通知机制:等待通知机制是基于wait和notify方法来实现的,在一个线程内调用该线程锁对象的wait方法,线程将进入等待队列进行等待直到被通知或者被唤醒。
(3)join方式:线程合并
(4)threadLocal方式:它更像是一个线程内部的通信,将当前线程和一个map绑定,在当前线程内可以任意存取数据
进程:内容提供者 bundle 广播 文件
线程:handler
(1)先到先服务:当每个进程就绪后,它加入就绪队列。当前正运行的进程停止执行,选择在就绪队列中存在时间最长的进程运行
(2)短作业优先:按估计运行时间最短的顺序进行调度
(3)时间片轮转:每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间
(4)最短剩余时间优先:按估计剩余时间最短的顺序进行调度。
(5)多级反馈队列调度算法:高优先级的作业得到响应又能使短作业(进程)迅速完成
(6)优先级调度:为每个流程分配优先级,首先执行具有最高优先级的进程
(1)分时调度模型:是指让所有的线程轮流获得 cpu 的使用权,并且平均分配每个线程占用的 CPU 的时间片
(2)抢占式调度模型:是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃 CPU。
同步:多个进程按一定顺序执行;
互斥:多个进程在同一时刻只有一个进程能进入临界区。
临界区:对临界资源进行访问的那段代码称为临界区。
为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查
(1)块式管理:将内存分为几个固定大小的块,每个块中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。
(2)页式管理:把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址和物理地址
(3)段式管理:段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多 。但是,最重要的是段是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址
定义:如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进
条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
预防死锁:破坏“循环等待”条件:
破坏“循环等待”条件的一种方法,是将系统中的所有资源统一编号,进程可在任何时刻提出资源申请,但所有申请必须按照资源的编号顺序(升序)提出。这样做就能保证系统不出现死锁。
避免死锁:银行家算法
系统给当前进程分配资源时,先检查是否安全:
在满足当前的进程X资源申请后,是否还能有足够的资源去满足下一个距最大资源需求最近的进程(如某进程最大需要5个单位资源,已拥有1个,还尚需4个),若可以满足,则继续检查下一个距最大资源需求最近的进程,若均能满足所有进程,则表示为安全,可以允许给当前进程X分配其所需的资源申请,否则让该进程X进入等待
预处理:条件编译,头文件包含,宏替换的处理,生成.i文件。
编译:将预处理后的文件转换成汇编语言,生成.s文件
汇编:汇编变为目标代码(机器代码)生成.o的文件
链接:连接目标代码,生成可执行程序