大学课程 操作系统 知识点总结 期末复习用(2)

P(baskets);
{拿一个购物篮;}
P(entry);
{从入口进入超市;}
V(entry);
{购物;结账;}
P(exit);
{从出口离开超市;}
V(exit);
{归还购物篮;}
V(baskets);

}

// 多个Customer进程并行执行。


* `*`生产者/消费者问题。



int buffer;

typedef int Semaphore;
Semaphore sp = 1, sc = 0;

process Producer(void) {
while (1) {
{制造product;}
P(sp);
buffer = product;
V(sc);
}
}

process Consumer(void) {
while (1) {
P(sc);
product = buffer;
V(sp);
{处理product;}
}
}

// 一个Producer和一个Consumer进程并行执行。



int buffer[n], p1 = 0, p2 = 0;

typedef int Semaphore;
Semaphore sp = n, sc = 0;

process Producer(void) {
while (1) {
{制造product;}
P(sp);
buffer[p1] = product;
p1 = (p1 + 1) % n;
V(sc);
}
}

process Consumer(void) {
while (1) {
P(sc);
product = buffer[p2];
p2 = (p2 + 1) % n;
V(sp);
{处理product;}
}
}

// 定义缓冲器的个数n并赋值。
// 一个Producer和一个Consumer进程并行执行。



int buffer[n], p1 = 0, p2 = 0;

typedef int Semaphore;
Semaphore sp = n, sc = 0, mutex = 1;

process Producer(void) {
while (1) {
{制造product;}
P(sp);
P(mutex);
buffer[p1] = product;
p1 = (p1 + 1) % n;
V(mutex);
V(sc);
}
}

process Consumer(void) {
while (1) {
P(sc);
P(mutex);
product = buffer[p2];
p2 = (p2 + 1) % n;
V(mutex);
V(sp);
{处理product;}
}
}

// 定义缓冲器的个数n并赋值。
// 多个Producer和多个Consumer进程并行执行。


* `*`(优先读者)读者/写者问题。



int readers = 0;

typedef int Semaphore;
Semaphore mutex = 1, writer = 1;

process Reader(void) {
while (1) {
P(mutex);
if (0 == readers) {
P(writer);
}
readers += 1;
V(mutex);
{对共享数据集进行读操作;}
P(mutex);
readers -= 1;
if (0 == readers) {
V(writer);
}
V(mutex);
}
}

process Writer(void) {
while (1) {
P(writer);
{对共享数据集进行写操作;}
V(writer);
}
}

// 多个Reader和多个Writer进程并行执行。


* `*`管程(Monitor)是由汉森(Brinch Hansen)和霍尔(Hoare)首先提出的解决进程间同步和互斥问题的方法,比信号量机制更加安全,使用起来更方便,具有3个特性:互斥性、安全性、共享性。
* 死锁(Dead Lock或Dead-Embrace)是指2个或2个以上的进程中的每一个进程都在等待其中的另一个进程释放其资源而被阻塞,导致这些进程都无法推进的状态。
* 产生死锁的根本原因是资源匮乏。
* `*`产生死锁的4个必要条件:
	+ `*`互斥使用资源。每一个资源任一时刻只能由一个进程使用,如果进程想申请被其他进程占用的资源,则该进程必须等待。
	+ `*`占有且申请资源。一个进程占有了资源还需要申请新的资源。
	+ `*`不可抢夺式分配。一个进程不能从其他进程抢夺资源,一个资源只能由拥有该资源的进程使用完后主动释放。
	+ `*`循环等待。必然存在着一个进程循环等待链,链中的每一个进程都在等待它前一个进程所占用的资源。
* `*`银行家算法能避免死锁,但不能预防死锁。
	+ `*`安全状态。安全状态一定不是死锁状态。
	+ `*`不安全状态。不安全状态不一定是死锁状态。
	+ `*`死锁状态。死锁状态一定是不安全状态。
* `*`由于银行家算法每次执行的分配都要保证系统处于安全状态,安全状态肯定不是死锁状态,所以银行家算法可以避免死锁。
* `*`假如当前3个进程分别需要`a`、`b`、`c`个资源,系统需要最少`(a-1)+(b-1)+(c-1)+1`才不会发生(不可能发生)死锁。


#### 第3章 存储管理


* `*`存储管理的功能(任务):内存的分配与回收、地址转换(地址重定位)、内存的共享和存储保护、内存的扩充。
* `*`存储管理方式:
	+ `*`简单(全部装入)方式。
		- `*`空间连续方式。
			* `*`单一连续分区式存储管理。
			* `*`固定分区式存储管理。
			* `*`可变分区式存储管理。
		- `*`空间不连续方式。
			* `*`简单分页式存储管理。
			* `*`简单分段式存储管理。
			* `*`简单段页式存储管理。
	+ `*`虚拟(部分装入)方式。
		- `*`空间不连续方式。
			* `*`请求分页式虚拟存储管理。
			* `*`请求分段式虚拟存储管理。
			* `*`请求段页式虚拟存储管理。
* `*`单一连续分区式存储管理和固定分区式存储管理的地址是静态重定位的。
* `*`可变分区式存储管理的地址是动态重定位的。
* `*`可变分区的分配算法(移动技术,即紧缩,可能使空闲区的数量:加一、不变、减一):
	+ `*`最先适应(First Fit,FF)分配算法。
	+ `*`最佳适应(Best Fit,BF)分配算法。
	+ `*`最坏适应(Worst Fit,WF)分配算法。
	+ `*`下次适应(Next Fit,NF)分配算法。
* `*`位示图用于表示简单分页式存储管理中的主存分配表。优点:占用主存空间小、可常驻内存、有利于系统分配内存空间;缺点:操作中将位示图的每个位转换成所对应的主存块的块号需要花费一定时间。
* `*`分段式存储管理的地址是二维的(因为作业被分成多个段)。
* `*`虚拟存储管理中的虚拟存储大小由2个因素决定:
	+ `*`地址结构。
	+ `*`实际总存储空间。
* `*`页面置换算法:
	+ `*`最佳(Optimal,OPT)置换算法。
	+ `*`先进先出(First In First Out,FIFO)置换算法。
	+ `*`最近最久未用(Least Recently Used,LRU)置换算法。
	+ 二次机会(Second Chance,SC)置换算法。
	+ `*`时钟(Clock,CLOCK)置换算法。
	+ 最近未用(Not Used Recently,NRU)置换算法。


#### 第4章 设备管理


* `*`设备管理的功能(任务):对独占设备的分配和回收、对独占设备的启动和信息传输、对磁盘的驱动调度、对缓冲区的管理、对虚拟设备技术的实现。
* `*`磁盘是容量大且可以断电后存储数据的外部存储设备,是:块设备、共享设备、用户设备(非标准设备)、直接存取设备(随机存取设备)、存储设备。
* `*`外部设备的分类:
	+ `*`按设备信息交换的单位分类:
		- `*`字符设备(慢速字符设备),如:鼠标、键盘、显示器、打印机。
		- `*`块设备,如:磁盘、磁带、光盘、U盘。
	+ `*`按设备资源特点分类:
		- `*`独占设备(是一种临界资源,需互斥访问),使用静态分配,如:打印机、磁带机。
		- `*`共享设备,使用驱动调度,如:软盘、硬盘、光盘。
		- `*`虚拟设备,如:借助Spooling技术可以共享使用的独占设备。
	+ `*`按设备地位分类:
		- `*`系统设备(标准设备),如:鼠标、键盘、显示器、打印机。
		- `*`用户设备(非标准设备),如:网卡、声卡、显卡、硬盘。
	+ `*`按设备访问方式分类:
		- `*`顺序存取设备,如:磁带。
		- `*`直接存取设备(随机存取设备),如:磁盘。
	+ `*`按设备使用特性分类:
		- `*`输入输出设备,如:鼠标、键盘、显示器、打印机。
		- `*`存储设备,如:磁带、磁盘。
* `*`设备I/O控制方式:
	+ `*`程序查询方式。
	+ `*`中断方式。
	+ `*`直接主存存取(Direct Memory Access,DMA)方式。会出现“周期窃取”现象,或称“周期挪用”现象。
	+ `*`通道方式。分为3种类型:字节多路通道、数组选择通道、数组多路通道。
		- `*`通道命令字(Chanel Command Word,CCW)。
		- `*`通道地址字(Chanel Address Word,CAW)。
		- `*`通道状态字(Chanel Status Word,CSW)。
* `*`设备I/O软件管理建立在硬件之上,分为4个层次(自顶向下):
	+ `*`用户级的I/O软件(I/O系统调用、Spooling技术)。
	+ `*`与设备无关的I/O软件(接口、设备命名、保护、缓冲、分配、出错)。
	+ `*`设备驱动程序(检查、转换、发出、响应、组织)。
	+ `*`I/O中断处理程序(正常结束、异常处理、进程状态改变)。
	+ `*`硬件(执行I/O传输)。
* 下层位上层提供服务;上层调用下层功能。
* `*`I/O中断请求自顶向下;I/O中断响应自底向上。
* `*`缓冲技术:单缓冲技术、双缓冲技术、多缓冲技术、缓冲池技术。
* `*`设备类绝对号是一种内部编号,不方便记忆,使用容易出错。
* `*`设备类相对号的优点:方便、灵活、安全。
* `*`设备独立性(设备无关性)指申请使用的设备与设备管理系统最后分配的设备无关。优点是:
	+ `*`用户不必知道设备的绝对号,只需提出想使用设备的相对号,系统就可以根据用户要求找出一台空闲的且非分配的设备给用户。
	+ `*`如果用户通过设备类相对号申请到的设备在运行种出现故障,系统可以自动从同种设备中选择一台空闲且好的设备来替代。
* `*`块号从0开始编号,柱面号、磁头号、扇区号从1开始编号。
* `*`设每个柱面上有n个磁道,每个磁道上有m个扇区,则:
	+ `*`柱面号 = ceil ( (块号 + 1) / (n \* m) )
	+ `*`磁头号 = ceil ( (块号 + 1) % (n \* m) / (m) )
	+ `*`扇区号 = ceil ( (块号 + 1) % (n \* m) % (m) / (1) )
	+ `*`块号 = (柱面号 - 1) \* (n \* m) + (磁头号 - 1) \* (m) + (扇区号 - 1) \* (1)
* `*`磁盘的最外层柱面为1号柱面;磁盘的最内层柱面为最大号柱面。
* `*`磁盘调度(先移动移动臂,后旋转磁盘):
	+ `*`磁盘的移动臂调度算法:
		- `*`先来先服务(First Come First Served)调度算法。
		- `*`最短寻找时间优先(Shortest Seek Time First)调度算法。
		- 单向扫描(Uni-Scan)调度算法,又称循环扫描(Circular Scan)调度算法。
		- 双向扫描(Double Scan)调度算法。
		- `*`电梯(Elevator)调度算法。
	+ `*`磁盘的旋转调度算法:
		- 扇区号相同、磁头号不同时,其中一个要等到下一圈调度。
* 脱机工作方式。
* `*`Spooling技术由3部分组成:
	+ `*`输入井和输出井。输入井中的作业有4种状态:
		- 输入状态。
		- 后备状态。
		- 执行状态。
		- 完成状态。
	+ `*`欲输入进程和缓输出进程。
	+ `*`井管理进程。
* 虚拟设备是借助Spooling技术可以共享使用的独占设备。
	+ 优点是:提高了I/O设备的存取效率、能够将独占设备虚拟成共享设备。
	+ 缺点是:Spooling技术增加了系统的复杂性、输入井和输出井会占用较大的磁盘空间、用到输入缓冲区和输出缓冲区会占用较大的主存空间。


#### 第5章 文件管理


* 文件由2部分组成:文件体、文件说明。
* 文件的分类:


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值