大型机操作系统 服务器操作系统 多处理器操作系统 个人计算机操作系统 掌上计算机操作系统 嵌入式操作系统 传感器结点操作系统 实时操作系统 智能卡操作系统
略
其一,局部性原理. 其二,现代操作系统可以整块的读取,相比单字节读取要快得多.
对不同用户的限制不同,需要强制执行这些限制,以便用户级别的程序不会干扰他们.
还存活着.比如因特尔i3,i5,i7具有不同的属性,但是在架构上是兼容的.
略
内核态可以使用所有的硬件,可以使用所有的特权指令, 用户态只能执行规定的指令,只能访问指定的寄存器和存储区.
特权指令包括: 只允许操作系统内核使用,不允许用户直接使用的指令.如I/O指令,中断屏蔽指令,清内存指令,存储保护指令和设置时钟指令.
出于安全性.一些特权指令如清内存指令和设置时钟指令等.如果用错,就会导致整个系统的崩溃.分了内核态和用户态后,当用户需要这些指令时,内核为其提供了API,可以通过系统调用陷入内核,让内核去执行这些指令.
解: 磁头数 = 盘面数 = 总容量 / 每个盘片的容量 = (255GB) / (65536 * 255 * 512B) = 32 注意 柱面数 == 磁道数 盘片数 = 盘面数 / 2 = 16
平均时间 = 寻道时间 + 旋转时间 + 传输时间 = 11ms + 7ms + (400KB / 100MB/s) = 22ms
(a),©,(d)
需要 20ms 或者 25ms 或者30ms P0和P1 安排在同一个cpu,P2安排在一个cpu,则需要20ms P0单独一个cpu,P1和P2安排在同一个CPU,则需要10+20 = 30ms
总时间= 0.95 * 1ns + 0.05 * 0.99 * 10ns + 0.05 * 0.01 * 10ms
将一个处理器的执行模式从用户模式切换到内核模式, 陷阱指令将一个处理器的执行模式从用户模式切换到内核模式.该指令允许用户程序调用操作系统内核中的函数.
进程表是为了存储当前被挂起,阻塞等进程状态.分时系统当然需要. 只有单一进程的系统不需要进程表.
略
fork失败: 达到了最大进程数 exec失败: 文件不具有执行权限/或者文件位置不对 unlink失败: 文件不存在 或者 调用unlink的进程不具有权限
不能.如果调用成功,函数返回1.而当读取了1个字节的数据时,函数也是返回1,则无法区分.
1592 SEEK_SET是文件开头,然后lseek定位到第3个字节,即"4" read再读取4个字节
找到磁道: (100 - 50) * 1ms = 50ms 转到数据开始位置: 5ms 读数据: 10mb / (200 mb/s) = 50ms 共需要 50 + 5 + 50 = 105 ms
基本差别是是否支持随机存取.快特殊文件可以随机读取某个块.
系统调用实际上是没有名字的!!! 它只是内核表中的一个个表项. linux核心会系统一些c函数对这些系统调用就行包装,习惯上也称他们为系统调用.
以下略