操作系统笔记
2.使用操作系统
进程包括:
- 可执行的目标程序
- 程序执行的数据
- 程序请求的资源
- 进程的执行状况
进程的操作:
- FORK:创建子进程
- QUIT:终止进程
- JOIN:合并多个进程为一个单一的进程
UNIX中创建进程:
- UNIX中的进程,有代码段、数据段和堆栈段定义。数据段包含静态的变量,堆栈段保存着运行栈,用于存储临时的变量。
- 进程有唯一的进程标识符PID,本质上是一个指针。
- UNIX中创建一个进程,是fork系统调用。子进程创建后,父子进程就在各自分离的地址空间执行。
- 提供一个wait调用,使父进程可以检查子进程什么时候结束。
线程:
3.操作系统的组织结构
讲了一些操作系统应该有的特性和功能
4.计算机组织结构
中断:
- 当设备完成I/O操作后,使用设备终端来通知处理机。
- 指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。
- 引入终端就是为了避免CPU要不停地询问I/O设备是否已经完成。
5.设备管理
设备管理方法:
- 使用轮询的直接I/O: 轮流检查设备的busy-done标志位。
- 中断驱动的I/O:当I/O操作结束后,由设备管理器,自动通知设备驱动程序。
- 存储映射I/O:通过软件与设备控制器寄存器读写信息来进行I/O设备管理。
- 直接内存访问DMA:初始化I/O后,能够直接从内存地址读取信息,或者写到内存,而无需CPU干涉。
缓冲:
- 输入和输出缓冲
设备驱动程序
- 应用编程接口提供一组功能函数,应用程序能够调用它们进行设备管理。
一些设备管理方法:
- 串行通信
- 顺序访问的存储设备
- 随机存储设备
6.进程管理
进程的构成:
- 定义程序行为的程序
- 数据
- 请求的一些资源
- 执行期间,保存运行轨迹的进程控制块
进程地址空间:
- 映射表:包括程序、变量等在地址空间中的位置
- 生成地址空间:1.编译成一组可重定位的目标模块。2.链接程序将可重定位目标模块和库模块结合,形成一个绝对程序(absolute program)
- 载入程序:在程序执行之前,必须分配内存给进程。
进程控制块,保存进程全部状态的踪迹:
- 进程上次被挂起时,寄存器的内容
- 处理机状态:被阻塞or就绪
- 地址空间的映射情况
- 存储器状态
- 栈指针
- 已经分配的资源
- 需要的资源
进程状态
- 就绪:等待CPU调度,等待分配处理机运行
- 运行:运行中,可以请求I/O进入阻塞状态,或者结束执行释放资源。
- 阻塞:处于阻塞状态的进程只有当分配了请求的资源才会回到就绪状态。
7.调度
- 即CPU资源管理。如何把CPU分配给进程,各个进程又是以什么次序使用CPU。
- 排队器:将就绪进程的控制块指针加入要求CPU的进程队列中。
- 上下文切换器:将被移出的进程的处理机寄存器内容保存到该进程控制块中。
- 分派器:从就绪队列中选择一个进程。
非剥夺式策略:
- 先来先服务
- 最短作业优先
- 使用优先级
剥夺式策略:
- 轮转:对于所有进程,平均分配处理时间
- 多级队列:先判断优先级,相同优先级情况下,再采用别的策略。
8.同步基本原理
临界区的变量的读写,加锁是个办法,但是有可能会出现死锁。
信号量:
- 只允许一个进程进入相应的临界区(互斥)。
- 一旦一个进程试图进入临界区,如果没有其他进程在临界区,就应立即进入临界区。
- V(s): [s=s+1]
- P(s): [while(s==0){waite}; s=s-1]
9.高级同步技术
- AND同步
- 事件
管程:是抽象数据类型,任一时刻只为可能执行该过程的一个进程使用。
进程间通信IPC:
- 管程允许进程间通过使用一个管程内的共享存储器来共享消息。
- IPC是利用消息,明确把信息从一个地址空间拷贝到另一个进程的地址空间。
- 使用send和recieve操作
10.死锁
死锁避免
- 银行家算法:
存储管理
将地址空间映射到内存。向存储器管理器请求主存空间,然后把程序放入相应的内存中。
分配:
- 固定分区存储分配:
- 可变分区存储分配:
存储管理器策略
- 交换技术:
- 虚拟内存:
12.虚拟内存
- 页式:有不同的替换策略:随机、最近最少使用、最小使用频率、先进先出。
- 段式:<segmentNumber, offset> 标识存储器逻辑块和偏移量
13.文件管理
- 字节流文件:
- 结构化文件: