向用户程序提供抽象,如文件;管理计算机资源。
九种类型的操作系统分别是:
多道程序系统主要是为了解决因 I/O 操作造成的 CPU 算力的浪费,虽然它在宏观上可以同时运行多个程序,但无法保证每个程序都能被及时处理。分时系统会将CPU分配给若干个需要计算的作业轮流使用,因此可为多个终端提供快速的交互式服务。
经验证据表明,存储器访问表现出引⽤局部原则,即如果读取某⼀个位置,则接下来访问附近位置的概率⾮常⾼,尤其是紧随其后的内存位置。 因此,通过缓存整个缓存⾏,接下来缓存命中的概率会增加。 此外,现代的硬件可以将32或64字节块整个传输到⾼速缓存⾏,因此一次读取64字节要远快于读取单个字节 64 次。
CPU 轮询的方式无法实现多道程序系统,因为在 I/O 期间 CPU 仍然出于忙碌状态。中断方式处理 I/O 使得实现多道程序系统成为可能,在设备控制器返回之后,接受中断之前,CPU 可以执行其他程序。
便于操作系统对 I/O 设备进行抽象。
该思想主要是针对不同的应用场景定制了不同型号的机器,在价格,内耗等方面进行了差异化。如今也有类似的例子,如酷睿 i7 的 10700KF,10700K,10700F,10700 四个型号分别在能耗,价格,有无核显,能否超频等方面进行了差异化定制。
没理解啥叫视频RAM,难道指的是显存?姑且就当做内存吧。
单色文本的成本: 25 ∗ 80 ∗ 1 = 2000 B 25* 80*1 = 2000B 25∗80∗1=2000B。
位图成本: 1024 ∗ 768 ∗ 3 = 12359296 B 1024 * 768 * 3 = 12359296B 1024∗768∗3=12359296B。
资源利用和及时性会互相矛盾,例如分时系统,为了及时性会将CPU的使用权在多个程序间不断切换,切换操作带来了不必要的开销。
在内核态运行时,CPU可以执行指令集中的所有指令。在用户态运行时,只能执行指令集的部分命令。存在两种模式,可以将部分权限和操作都约束在操作系统内部实现,便于实现资源的管理和向用户提供抽象。
由上图可以得知,磁盘的容量为: 盘片数 ∗ 2 ∗ 柱面数 ∗ 扇区数 ∗ 扇区容量 = 磁盘容量 盘片数*2*柱面数*扇区数*扇区容量 = 磁盘容量 盘片数∗2∗柱面数∗扇区数∗扇区容量=磁盘容量则在本题中: 盘片数 = 255 G B 2 ∗ 65536 ∗ 255 ∗ 512 B = 16 个 盘片数 = \frac{255GB}{2*65536*255*512B} = 16 个 盘片数=2∗65536∗255∗512B255GB=16个
磁头数和盘面数相同:
磁头数 = 盘片数 ∗ 2 = 32 个 磁头数=盘片数*2 = 32个 磁头数=盘片数∗2=32个
第二问比较奇怪,每个扇面只有 512 字节,那啥叫从 一个扇区 读取 400KB 呢?
(a),(c),(d) 只能在内核态执行。
该题有两个点:
因此有以下几种可能:
1e9。每秒能执行的指令数和级数无关,只和最慢的那一级有关。
a v g = 1 n s ∗ 95 + 10 ∗ 99 + 10000000 100 ∗ 5 100 n s = 5001.445 n s avg = \frac{1ns*95 + \frac{10*99 + 10000000}{100}*5}{100} ns = 5001.445ns avg=1001ns∗95+10010∗99+10000000∗5ns=5001.445ns
如果调用者不被阻塞,则在传送完成前有可能更新缓冲区,那么会导致向磁盘写入脏数据。
出现上述问题的关键是:如果不阻塞则调用者不知道何时可以复用缓冲区。为了解决这个点,操作系统一般会拷贝一份缓冲区的数据,然后将控制权返回给用户。
TRAP 指令可以将 CPU 从用户态切换至内核态。用户程序可以借助该指令进行系统调用。
在分时系统中,允许多个进程轮流使用 CPU,因此需要进程表来保存各个进程的状态。Unix 或 Windows 也同时会有多个进程轮流使用 CPU,因此也需要进程表。
在一个非空目录挂载文件系统会导致原来的文件不可见,因此一般都是把空目录作为挂载点。
当待挂载的文件系统和挂载点目录的内容一致时,向非空目录挂载文件系统,可以起到备份文件的作用。当挂载的文件系统出现故障时,可以继续使用原来目录下的内容。
多路复用:在时间或空间维度上,多个进程共享资源。
count = write(fd, buffer, nbytes);
调用中,是否会返回 nbytes
之外的值给 count
。-1
表示失败,比如 fd 不正确等。nbytes
的表示真正写入的字节数。3,1,4,1,5,9,2,6,5,3,5
。有如下系统调用:lseek(fd, 3, SEEK_SET); read(fd, &buffer, 4);
执行完成后,buffer 中的内容是什么?因此,buffer 中的内容为 1,5,9,2。
c o s t = ( 100 − 50 ) ∗ 1 m s + 5 m s + 10 M B 200 M B ∗ 1000 m s = 105 m s cost = (100-50)*1ms + 5ms + \frac{10MB}{200MB}*1000ms = 105ms cost=(100−50)∗1ms+5ms+200MB10MB∗1000ms=105ms
两者最基本的区别是,前者可随机读取,而后者不能。
System calls do not really have names, other than in a documentation sense.
When the library procedure read traps to the kernel, it puts the number of the system call in a register or on the stack. This number is used to index into a table.There is really no name used anywhere.
On the other hand, the name ofthe library procedure is very important, since that is what appears in the program.
系统调用会从用户态切换至内核态,这会带来一些性能损耗。在一些性能至关重要的场景,程序员应该清楚性能的瓶颈可能在哪。
Every system architecture has its own set of instructions that it can execute. Thus a Pentium cannot execute SPARC programs and a SPARC cannot ex- ecute Pentium programs.
Also, different architectures differ in bus architecture used (such as VME, ISA, PCI, MCA, SBus, …) as well as the word size of the CPU (usually 32 or 64 bit). Because of these differences in hardware, it is not feasible to build an operating system that is completely portable.
A highly portable operating system will consist of two high-level layers—-a ma- chine-dependent layer and a machine-independent layer. The ma- chine-dependent layer addresses the specifics of the hardware and must be im- plemented separately for every architecture.
This layer provides a uniform in- terface on which the machine-independent layer is built. The machine-inde- pendent layer has to be implemented only once. To be highly portable, the size of the machine-dependent layer must be kept as small as possible.
机制可以理解为处理数据的固定流程。
策略可以理解为构造数据的方法。
通过机制和策略的分离,使得内核在决定处理流程的前提下足够精简,同时将策略交给用户指定,也保证了一定的自由度。
The virtualization layer introduces increased memory usage and processor overhead as well as increased performance overhead.
一微年是多少秒?
86400 ∗ 365 1000000 s = 31.536 s \frac{86400*365}{1000000}s = 31.536s 100000086400∗365s=31.536s
微米被称为 micron。那么 megamicron 是多长?
1 0 − 6 ∗ 1 0 6 m e t e r = 1 m e t e r 10^{-6} * 10^{6}\ meter = 1\ meter 10−6∗106 meter=1 meter
1PB 存储器中有多少字节?
2 50 b y t e = 1 , 099 , 511 , 627 , 776 b y t e 2^{50}\ byte= 1,099,511,627,776\ byte 250 byte=1,099,511,627,776 byte
地球的质量是 6000 yottagram,换算成 kilogram 是多少?
6000 y o t t a g r a m = 6 ∗ 1 0 24 k i l o g r a m 6000\ yottagram = 6 * 10^{24}\ kilogram 6000 yottagram=6∗1024 kilogram
TODO
TODO
TODO