并发和并行
并发:两个或多个事件在同一时间间隔内发生
并行:两个或多个事件在同一时刻发生
虚拟
把一个物理上的实体映射为逻辑上的多个对应体。比如虚拟处理器,虚拟内存,虚拟设备等
进程和线程!!!
进程:是程序在一个数据集合上的运行过程,是分配和拥有资源的基本单位,也是系统运行程序的基本单位。
线程:也叫轻量级进程,是进程内调度的实体,处理机调度的基本单位,也是比进程更小的独立运行的基本单位
线程和进程:各进程是独⽴的,⽽各线程则不⼀定,因为同⼀进程中的线程极有可能会相互影响。线程执⾏开销⼩,但不利于资源的管理和保护;⽽进程执行开销大,有利于资源的管理和维护
进程的状态
死锁!!!
定义:一组线程中的每一个线程都在无限等待被其他线程所占用的资源,导致资源没法被释放,因此程序无法正常终止
死锁原因:对不可剥夺资源的竞争、非法的进程推进顺序
死锁预防:破坏死锁的四个必要条件之一。互斥条件,不剥夺条件。请求并保持条件(预先静态分配,提前分配好进程所需要的资源),循环等待条件(顺序资源分配,限制住用户申请资源的顺序)
死锁解除:资源剥夺,撤销进程,回退进程
管程
使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。
进程间通信方式
共享存储,消息传递,管道通信
信号量
信号量是保护临界资源的一种机制,一个进程只有得到信号量才可以进入临界区,离开了临界区就会释放信号量
整型:wait操作中,只要信号量小于等于0就会不断测试,会出现忙等
记录型:不存在忙等
内存管理作用
负责内存的分配与回收,malloc申请内存,free释放内存
地址转换,即把逻辑地址转换成相应的物理地址
分页和分段有什么区别(内存管理)?
页式存储是将程序的逻辑地址划分为固定大小的页,而物理内存划分为同样大小的帧,程序加载时,可以将任意一页放入内存中任意一个帧,从而实现了离散分离。只有内部碎片。
段式存储是一种符合用户视角的内存分配管理方案。将程序的地址空间划分为若干段,这样每个进程有一个二维地址空间,相互独立,互不干扰。只有外部碎片。
进程调度策略
先来先服务,短作业优先,高优先级优先,高响应比优先,时间片轮转,多级反馈队列
虚拟内存
它使得应用程序认为它拥有一个连续完整的地址空间,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部存储器上,在需要时进行数据交换。
缓冲区溢出、危害、原因
当计算机向缓冲区填充数据时,超出了本身的容量,溢出的数据覆盖在合法数据上。
危害: 程序崩溃以至于没有服务。跳转并且执行一段恶意代码
原因:程序中没有仔细检查用户输入