现代操作系统
现代操作系统
进程与线程
- 进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体。
- 线程有一个程序计数器,用于记录接着要执行的指令。
- 线程拥有寄存器,用来保存线程当前的工作变量。
- 线程还拥有一个堆栈,用来记录执行历史,每一帧保存已调用但没有从中返回的函数。
- 只有认为等待时间非常短的情形下,才使用忙等待。用于忙等待的锁,称为自旋锁(spin lock)。
输入/输出
- 电梯调度算法: 电梯保持一个方向移动,直到在那个方向上没有请求为止。
死锁
- 如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么该进程集合就是死锁的。
- 资源死锁的条件:
- 互斥条件: 每个资源要么已经分配给了一个进程,要么就是可用的。
- 占有和等待条件: 已经得到了某个资源的进程可以在请求新的资源。
- 不可抢占条件: 已经分配给一个进程的资源不能强制性地被抢占,它只能被战友它的进程显示地释放。
- 环路等待条件: 死锁发生时, 系统中一定有由两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。
- 死锁发生时,这四个条件要同时满足。
.
- 在互斥时间很短而挂起等待的时间开销很大时,可以采用活锁(livelock, 没有出现死锁,但现象上看好像死锁发生了),轮询(忙等待)可用于进入临界区或存取资源。
多处理机系统
- 实现共享存储器的不同层次:
.
- 分布在四台机器中的地址空间页面:
.
- 负载平衡:
- 图论确定算法。
- 发送者发起的分布式启发算法。
- 分析排队模型。
- 接收者发起的分布式启发算法。
- 分布式系统添加在其底层网络上的是一些通用泛型(模型), 它们提供了一种统一的方法来观察整个系统。
.
- 因特网:
.
- Web是由文档构成的大有向图。
- 发布订阅模式(Publish/Subscribe).
Linux
-
Linux系统中的层次结构:
.
-
Linux应用程序:
.
-
内核结构:
.
-
shell执行命令的过程:
.
-
进程是资源容器,而线程是执行单元。
-
用于启动一些Linux系统的进程顺序:
.
-
文件描述符表,打开文件描述符表和i节点表之间的关系:
.
-
原子操作是指执行的过程中不能被打断,要么执行完毕,要么不执行。
-
网络文件系统(NFS)层次结构:
.
-
Windows用句柄来引用内核态对象;
- 句柄是不透明值(opague value), 该不透明值是被对象器转换到具体的应用,以表示一个对象的内核态数据结构。
-
微内核结构: 内核中包括最小限度的系统功能以及数据,许多系统功能被放到了用户空间服务器段
- 典型的基于微内核的操作系统初始化引导时占用较少的内存,并且其结构也更加动态。