操作系统

进程管理

  • PCB
    1.进程控制块PCB是进程存在的唯一标志,存在于内核的地址空间!系统通过PCB对进程进行控制和管理
    2.PCB包含的信息:进程标志符PID、状态、优先级、代码运行入口地址、程序的外存地址、代码段数据段堆栈段指针、文件描述符、处理机中各寄存器的值!!
  • 进程状态:新建、就绪、运行、阻塞、结束
  • 进程通信
    1.PV(低级通信)
    2.共享存储:一块物理内存区域同时映射到两个进程的地址空间中
    3.消息传递:利用操作系统提供的消息传递方法(发送消息、接受消息原语)进行数据交换。通过原语直接将消息放置到另一个进程的消息缓冲队列中。
    4.管道通信:A向位于内核的共享存储区域(管道)写数据,B从该共享区域读数据;只能半双工;管道被Linux视为文件
  • 调度的层次
    1.作业调度:内存与外存之间的调度 => 从外存后备队列中选择作业调入内存并创建相应的进程。作业调度经历了进程的创建与就绪两种状态
    2.中级调度:将暂时不能运行的进程调至外存等待,进程此时处于挂起态,当内存空间宽松时再将挂起的就绪进程调入内存
    3.进程调度:从就绪队列中选择一个进程并为其分配处理机

  • 典型的调度算法
    1.先来先服务(FCFS):先进入队列的先调度
    2.短作业优先(SJF):选择估计运行时间最短的作业/进程
    3.优先级调度:…
    4.高响应比优先:用于作业调度,响应比=(等待时间+服务时间)/服务时间
    5.时间片轮转:…
    6.多级反馈队列:…详见书籍
    可用于作业调度:FCFS、SJF、优先级调度、高响应比优先
    可用于进程调度:FCFS、SJF、优先级调度、时间片轮转、多级反馈队列
  • 同步与互斥的关系
    互斥:散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。
    同步:散布在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。
    关系:同步也是不能同时运行,但他有进一步的约束=>需要按照一定的先后次序运行各进程片段。 多数情况下同步已经实现了互斥,或者说同步是一种特殊的互斥
  • 信号量
    定义:
typedef struct{
	int value;                         //大于0时代表该资源的数量; 小于0代表申请该资源的数量
	struct process* L;                //用于链接等待该资源的所有进程
}semaphore;

P操作:

void wait(semaphore S){
	S.value--;                        //申请一个该资源
	if(S.value<0){
		add this process to S.L;
		block(S.L);
		}
}

V操作:

void signal(semaphore S){
	S.value++;                    //释放一个该资源
	if(S.value<=0){               //有需要该资源的进程 => 唤醒一个进程  (注意此处要取等)
		remove a process P from S.L;
		wakeup(P);
	}
}
  • 在同步互斥问题中如何应用信号量
    同步:若某个行为要用到某种资源,则在该行为前P该类资源; 若某个行为会提供某种资源,自在该行为后V该类资源
    互斥:P、V操作要紧夹着使用互斥资源的行为,中间不能有其他冗余代码
  • 关于死锁
    1.死锁的定义:多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都无法向前推进
    2.死锁产生的原因a.系统资源的竞争,资源总数不足以满足多个进程的需要(比如有3个进程,都需要某类资源2个,如果该类资源总数少于4个,则可能产生死锁=>比如只有3个资源且一个进程已经占用一个资源,则会导致所有进程等待第二个资源,从而死锁);b.进程推进顺序非法(请求和释放资源的顺序不当、信号量使用不当)
    3.死锁产生的必要条件:互斥条件、不剥夺条件、请求并保持条件、循环等待条件(循环等待不是死锁的充分条件,因为即使资源分配图含圈,若某个进程能从圈外获得资源,也不会导致死锁)
    4.死锁的解决方案…
  • 死锁的解决方法
    1.(事先)死锁预防:破坏死锁产生的四个必要条件之一即可
    2.(事先)死锁避免:资源动态分配过程中,检测死锁的不安全状态,避免发生死锁=>银行家算法
    3.(事后)死锁检测与解除:a死锁检测:简化资源分配图可检测是否为死锁状态(翻书死锁定理); b死锁解除:资源剥夺、撤销进程、进程回退

内存管理

  • 程序的装入和链接
    过程:编译 => 链接 => 装入
    链接的三种方式:a.静态连接; b.装入时动态链接; c.运行时动态链接
    装入的三种方式:a.绝对装入:逻辑地址与内存地址完全相同,仅适用于单道程序; b.可重定位装入(静态重定位):装入时将各模块从0开始的逻辑地址修改为统一的地址,且需要一次分配全部内存空间!; c.动态运行时装入(动态重定位):地址转换推迟到程序运行时,在程序运行前只需装入部分代码即可
  • 内存的分配方式
    连续分配:单一连续分配(单道)、固定分区分配(内部碎片)、动态分区分配(外部碎片)
    非连续分配:分页、分段、段页式
  • 基本的分页存储管理

    注意:a.与加入虚拟内存机制后的请求分页方式中,页表项的区别(后者有磁盘地址); b.在程序装入时应该为每个进程填充页表项
    改进=> 多级页表(增加访存次数)、快表(高速缓存中)
  • 基本的分段式存储管理

    注意:分段式地址是二维的; 物理地址计算方式与分页的区别
  • 虚拟内存
    由于不是一次全部装入,页表项需要包含外存地址字段、状态位等(请求分页、分段都可实现虚拟内存):
    在这里插入图片描述
  • 页面置换算法
    最佳置换(OPT)、先进先出(FIFO)、最近最久未使用(LRU)、时钟置换(Clock)

杂七杂八

  • 从用户态切换到和内核态的唯一途径=> 中断或异常(系统调用也需要发起中断)
  • 管道:映射到内核地址空间的一块内存区域,被linux视为一个特殊的文件(但并不是位于磁盘上的文件)
  • 临界区:访问临界资源的那段代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值