1:那些指令只能在核心态运行?
核心态和用户态 【第二章第一节】
- 通过处理器状态标志,处理器可以知道当前是操作系统还是应用程序在其上面运行呢
- 处理器的状态又叫做处理器的模式,可以分为核心态(管态)和用户态(目态)
- 当处理器处于核心态的时候,CPU运行可信软件,硬件允许执行全部机器指令。
- Intel X86 处理器的状态有四种,0的权限最高,3的权限最低。典型是0:为内核级,1:系统调用,2:共享库函数,3:应用程序级。操作系统可以进行自己的设定,Windows中只有0级和3级
- 0:处理 I/O 操作,存储管理
- 1:系统调用:执行系统调用,得到特定和受保护的程序的服务
- 2:共享库级:可被多个运行进程共享,允许调用库函数,读取但不修改相关的数据
- 3:应用程序级
处理器的模式转换
-
处理器从用户态向核心态转换
- 系统调用
- 中断或者是异常
- 这两种的本质上都是通过中断机制发生的,所以说中断和异常是用户态到核心态转换的仅有途径。
-
处理器从和核心态向用户态的转换
- 加载程序状态字的特权指令
- IBM 370 是LOAD PSW 指令,Intel 是IRET指令
程序状态字
-
PSW 用来指示处理器状态,控制指令的执行顺序,并且保留和指示与运行程序有关的各种信息,主要作用是实现程序状态的保护和恢复
-
每个正在执行的状态都有一个与其当前状态相关的PSW,而每个处理器都设置一个硬件PSW寄存器,一个程序占用处理器之行时候,其PSW将占用硬件的PSW寄存器。
-
在Intel X86中,PSW由标志寄存器Eflags 和指令指针寄存器 EIP 组成,均为32位
- Eflags的低16位被称为flags,可以当做一个单元来处理
- 标志划分为三组:状态标志,控制标志和系统标志
读时钟日期,这个是在用户态也是可以的
访管指令:用户态
设时钟日期:只能在核心态
加载PSW:这个是IBM700 和intel 从核心态转到用户态的动作
设置特殊的寄存器:比如PSW,只能是核心态
改变存储器映像图:只能在核心态
启动I/O指令:只能在核心态
2:关于内核级线程,以下的描述不正确的是?
- A 内核可以将处理器调度直接分配到某个内核级线程
- B 控制权从一个线程传送到另一个线程的时候不需要用户态-内核态-用户态的模式切换
- C 可以将一个进程的多个线程分派到多个处理器中,能够发挥多处理器并行工作的优势
- D 建立和维护现成的数据结构并且保存每个线程的入口
【第二章第四节:线程及其实现】
- 分类
- 用户级线程(user level thread) POSIX1003.4a的 Pthreads,java 线程库
- 内核级线程(kernal level thread) 比如Windows 2003 ,OS /2 和March C-thread
- 混合方式(Solaris UI-threads)
- 内核级线程
- 内核可以使一个进程中的多个线程并行,使得能够发挥多CPU的优势
- 如果某一个线程被堵塞,内核能够调度统一进程的其他线程占有处理器,也可以运行其他进程的线程
- 内核级别只有很小的数据结构和堆栈,其切换速度比较快,内核自身也可以使用多线程技术来实现
- 线程在用户态运行的时候,线程的调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另外一个线程的时候需要用户态——核心态——用户态的模式切换,系统开销较大。
- 用户级线程
- 相当远周天子的分封,内核是不感知的
- 无需内核切换,可以节省模式切换的开销和内核的宝贵资源
- 运用进程按照应用的特定选择需要的调度算法,且线程库的线程调度算法和操作系统的低级调度算法无关
- 能够运行在任何的操作系统上,内核无需做任何的改变
- 大多数的系统调用是堵塞型的,一个用户级别的堵塞将引起整个进程的堵塞
- 用户级进程不能利用多重处理的优点,进程由内核分配到CPU的时候,仅有一个用户级别可以进行
- 因此,不可能得益进程的并发执行
- 混合式线程
- 一个应用程序的多个用户级别的线程能够分配和对应于一个或者是多个内核级别线程
- 内核级别的线程在多处理器上并行执行
- 并且在阻塞一个用户级线程的时候,内核可以调整另一个线程执行
- 窗口系统
- 用一组用户级线程表示多个窗户
- 用一个内核级别的线程来支持这一组用户级别的线程
- 系统中同时会出现很多的窗口(用户级线程),但是又只有一个处于活跃的状态(内核级线程)
- 系统开销小,窗口系统执行效率高
- 大规模的并行计算
- 大规模的并行计算是对物理并行度要求比较高的应用
- 可以将一个内核级线程绑定到一个用户级县城当中
- 每个内核级别的线程占用一个 CPU 并行执行
- 减少了线程切换的次数,通过并行计算提高效率
3:分时操作系统必须在规定时间内处理来自外部的事件
4:I/O软件的一般分为四层结构,请按照自顶向下的顺序写出四层结构的名称。
【第五章的第二节】
- I/O 软件的总体设计目标是:高效率和通用性
- 设备无关性
- 出错处理
- 同步 / 异步 传输
- 缓冲技术
- 为了合理的解决以上的这些问题,操作系统把 I/ O 软件一次组织成了四个层次
- I/O 中断程序
- I/O 设备驱动程序
- 独立于设备的 I/O 软件
- 用户空间的I/O软件