问题
系统调用和普通函数的区别?
PV 操作解决哲学家就餐问题?
司机和售票员?
生产者和消费者?
三 操作系统用户界面
系统调用:
操作系统内核为应用程序提供的 函数/服务
四 进程管理
进程状态:
运行
就绪
阻塞
Linux 进程状态:
可运行态
阻塞
僵死
挂起
进程控制块:描述进程状态、资源和与相关进程关系的数据结构。
进程操作:
创建进程
撤销进程
阻塞进程
唤醒进程
创建进程的过程: 5
创建一个空白PCB
获得并赋予进程标识符ID
为进程分配空间
初始化PCB
插入相应的进程队列
进程控制原语
子进程 fork pid = 0
父进程 pid > 0
临界资源:一次只允许一个进程访问的资源。CR
临界区:进程中访问临界资源的程序段。CS
设计临界区访问的四个原则:
忙则等待
空闲让进
有限等待
让权等待
锁 S 1可用 0不可用 不满足让权等待
同步:
协调合作进程的运行步伐。
互斥:
协调各个进程对资源的存取顺序。(特殊的同步关系)
P操作的原理(P(S,q) ,简记P(S))
- S值减1;
- 若差大于或等于零,该进程继续;
- 若差小于零,则该进程阻塞并加入到队列q中,并转调度函数。
V操作的原理(V(S,q) ,简记V(S))
- S值加1;
- 若和大于零,该进程继续;
- 若和小于或等于零(表明有其它正在阻塞的进程),该进程继续同时从q中唤醒一个进程。
五 死锁
死锁:两个或多个进程无限期地等待永远不会发生地条件的一种系统状态。
关于死锁的一些结论
- 参与死锁的进程至少是2个
- 两个以上进程才会出现死锁
- 参与死锁的进程至少有2个已经占有资源
- 参与死锁的所有进程都在等待资源
- 参与死锁的进程是当前系统中所有进程的子集
- 死锁会浪费大量系统资源,甚至导致系统崩溃
必要条件:
互斥条件
不剥夺条件
部分分配条件
环路等待条件
进程调度:
衡量条件:周转时间/平均周转时间
带权周转时间/平均带权周转时间 周转时间/运行时间
调度算法:
先来先服务
短作业优先调度
响应比高者优先调度
优先数调度
循环轮转调度
九 文件系统
文件物理结构
连续文件
索引文件
串联文件 FAT File Allocation Table
文件存储和目录
记录磁盘空闲块的方法:
空闲文件目录
空闲块链
位示图