操作系统引论
操作系统定义
是管理计算机硬件和软件资源的计算机程序,同时也是计算机系统的内核与基石
操作系统作用
- OS作为用户与计算机硬件系统之间的接口
- OS作为计算机系统资源的管理者
- OS实现了对计算机资源的抽象
分时系统的原理与特征
原理
- 人机交互
- 共享主机
- 一台主机上链接了多个配有显示器和键盘的终端并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源
特征
- 多路性
- 独立性
- 及时性
- 交互性
脱机I/O原理
事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上,当CPU需要这些程序和数据时,再从磁带上高速地调入内存。
当CPU需要输出时,可由CPU把数据直接从内存高速的输送到磁带上,然后在另一台外围机的控制下,再将磁带上的结果通过相应的输出设备输出。
由于程序和数据的输入输出都是在外围机的控制下完成的,或者说他们是在脱离主机的情况下进行的,故称脱机IO。
其优点是:减少CPU空闲时间,提高IO速度。
操作系统的基本特征
- 并发
- 共享
- 虚拟
- 异步
作业
31页:2,3,5,8, 11, 14
进程管理
程序顺序执行时的特征
- 顺序性
- 封闭性
- 可再现性
程序并发执行时的特征
- 间断性
- 失去封闭性
- 不可再现性
为什么引入进程
实现程序并发执行
进程定义
进程是程序的一次执行。
进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程特征
动态性
- 进程描述执行的程序
- 是动态的
- 具有生命周期
并发性
- 引入进程就是为了保证程序并发执行
独立性
- 进程是OS资源分配和调度的一个独立单位
- OS以进程为单位分配处理机、内存、I/O设备
异步性
- 指进程按各自独立的、不可预知的速度向前推进
- “走走停停”
- 原因:共享资源,进程之间相互影响
进程的基本状态、相互转换原因及转换图(三态)
系统态(核心态)和用户态
系统态(内核态):具有较高的特权,能执行一切指令,访问所有的寄存器和存储区。OS在内核态运行。
用户态:具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区。应用程序在用户态运行。
具有挂起状态的进程状态、相互转换原因及其转换图(五态)
什么是挂起状态
挂起:暂停程序的执行,进程处于“静止” 状态
引入挂起状态的原因
- 终端用户请求。
- 父进程请求。
- 负荷调节需要。
- 操作系统需要。
具有创建终止状态的进程状态、相互转换原因及其转换图(七态)
什么是进程控制块?进程控制块的作用
为了便于系统描述和管理进程的运行,OS为每个进程定义了数据结构,即进程控制块。
作用
- 进程控制块是描述进程的数据结构。
- 进程与PCB是一一对应的
- OS根据PCB控制和管理进程。
临界资源与临界区区别
临界区:进程中访问临界资源的那段代码
临界资源:一段时间内只允许一个进程访问的资源
同步机制应遵循的规则
- 空闲让进: (临界资源)空闲让(进程)进(入临界区)。
- 忙则等待: (临界资源)忙(进程)则等待(进入临界区)。
- 有限等待: (进程)等待有限(时间进入临界区) 。
- 让权等待: (进程)让(处理器)权等待(进入临界区)。
记录型信号量的定义
记录型信号量是一种不存在“忙等”现象的进程同步机制。
信号量正负值的物理意义
S-> value初值表示系统中某类资源的数目。
当S->value >0时,其值表示系统中某类资源当前可用数目
当S->value <0时,其绝对值 | S->value | 表示在该信号量链表中已阻塞进程的数目。
如果S->value的初值为1,资源的数目为1,表示只允许一个进程访问临界资源,此时的信号量即互斥信号量。
wait 和 signal 操作
wait操作
- 每次wait操作表示进程请求一个单位的该类资源:
- S->value = S->value -1;
- 当S->value<0时,表示该类资源已分配完毕,因此进程应调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表S->list中。
- 因此记录型机制遵循了“让权等待”准则。
signal操作
- 对信号量的每次signal操作,表示执行进程释放一个单位资源,
- S->value = S->value +1操作表示资源数目加1。
- 若加1后仍是S->value ≤0,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应调用wakeup原语,将S->list链表中的第一个等待进程唤醒。
- 被唤醒的进程由阻塞状态转变为就绪状态
AND 型信号量的定义,Swait 和 Ssignal 操作
AND同步机制的基本思想:同时申请,同时释放
Swait操作
Ssignal操作
生产者-消费者问题算法
方法1
方法2
方法3
用信号量机制实现
不会死锁的哲学家就餐问题算法
方法1
方法2
奇数动手算法
方法3
用信号量机制实现
读者-写者问题算法
方法1
ps:代码有问题
说明:
- 设置一个整型变量readcount表示正在读的进程数目。
- 只要有一个Reader进程在读,便不允许Writer进程去写。
- 仅当readcount=0, 表示尚无Reader进程在读时,Reader进程才需要执行Wait(Wmutex)操作。
- 若wait(Wmutex)操作成功,Reader进程便可去读,相应地,做readcount+1操作。
- 仅当Reader进程在执行了readcount减1操作后其值为0时,才须执行signal(Wmutex)操作,以便让Writer进程写。
方法2
ps:代码没问题
公交车算法
方法1
高级进程通信
利用操作系统所提供的一组通信命令,高效地传送大量数据的通信方式。
一共有三种类型:
消息传递通信的两种通信方式
直接通信(消息缓冲队列通信机制)
间接通信(信箱通信)
消息缓冲队列通信属于什么通信
是一种直接消息传递系统
线程定义及属性
有时称轻量级进程,是进程中的一个运行实例,是CPU调度单位。
在一个进程中,可以独立运行的程序片段叫作“线程”
线程和进程区别
1、调度性
2、并发性
3、拥有资源
4、独立性
5、系统开销
6、支持多处理机系统
多线程 OS 中的进程的作用
进程作为系统资源分配的单位。
一个进程拥有多个线程。
进程不是一个可执行的实体,而是一个资源的载体。
前趋图及代码
图片
代码