题目1:一台计算机有一个四级流水线,每一级都花费相同的时间执行其工作,即1ns。这台机器每秒可执行多少条指令?
答:10^6条
题目2:考虑一个有两个CPU的系统,并且每一个CPU有两个线程(超线程)。假设有三个程序p0,p1,p2,分别以运行时间5ms,10ms,20ms开始。运行这些程序需要多少时间?假设这三个程序都是100%限于cpu,在运行时无阻塞,并且一旦设定就不改变CPU。
答:不知道
unlink:一般用来删除文件,如该文件名是一个符号链接,则只删除该符号链接;超级用户也可以调用unlink删除目录,但一般弃用这种方法,而是使用rmdir函数删除目录。unlink与link相对应,正因为有了Link使得一个文件可以存在多个目录,所以才有了unlink的概念。link连接增加了文件i节点的计数,这种连接也称为硬连接。
unlink函数原型与所需头文件:
#include <unistd.h>
int unlink(const char * pathname); \\ 若成功返回0,若出错返回-1;pathname是目录项名字,目录项包含i节点号和文件名。
需要注意的是,只有当该文件链接计数达到0时,并且,此时没有进程使用该文件,才可以删除文件内容,也就是“释放该文件占用的磁盘块”。
lseek原型和所需头文件:
#include <unistd.h>
off_t lseek(int fields, off_t offset, int whence);//若成功,返回新的文件偏移量,若出错,返回-1;其中whence是起始偏移位置标志,分别有SEEK_SET,SEEK_CUR,SEEK_END三项,对应着起始,当前,文件末尾这三个位置。offset表示偏移量多少,一般为正数。
read原型和所需头文件:
#include <unistd.h>
ssize_t read(int fields, void * buf, size_t nbytes);//若成功返回读到的字节数,若已到文件尾部则返回0,若出错则发回-1;
linux文件系统
文件系统的挂载,与两个概念息息相关,一个概念是i节点,另一个是目录项。
磁盘有许多分区,每个分区又有许多柱面组,一个分区挂载一个文件系统,用以记录该分区可用存储资源。而在文件系统中,使用i节点数组记录i节点,每个i节点指向不同的数据块,而目录块又汇集了一些目录项,每个目录项包含i节点号与该i节点号所指向的文件名。需要注意,目录项与i节点之间的对应关系是多对一,多个目录项可以指向同一个i节点。所以又有了i节点链接计数的概念。可以用一张图来描述文件系统,请看下图,图片摘自互联网:
块文件与字符文件基本差别:块设备能够随机存取。
陷阱指令:程序运行时,产生一个陷阱指令,由系统接管处理器。
陷阱和中断的主要区别:陷阱由程序引发,属于内部事件;中断由外部时间和时钟引发。