Linux操作系统——Linux复习
Linux 重点复习题
选择/填空题
- 当系统工作负载增加时,CPU 的(用户时间)将占很大比重
- fsck 对文件系统的检查最先是从文件系统的(超级块)开始的。
- 系统交换分区的类型代号是(82)
- 为了得到外壳程序中命令行输入参数个数,我们可以使用变量($#)
- 为了得到所有的命令行输入的参数,我们可以使用变量(**$@**)
- Linux 启动的第一个进程 init 启动的第一个第一个脚本程序是(/etc/rc.d/rc.sysinit)
- LILO 的配置文件是(/etc/lilo.conf)
- 哪一个命令能用来删除当前目录及其子目录下名为‘core’的文件(find . -name core -exec rm {} -)
- 所谓 LILO(LinuxLoader)是指(一种安装内核加载,开机管理的程序)
- 分区表示(hd 表示 IDE 硬盘,sd 表示 SCSI 硬盘,a 表示第一块硬盘,1-4 都是主分区)
- 为了知道谁正在注册到你的机器上可以使用命令(who)
- 通过文件名存取文件时,文件系统内部的操作过程是通过(文件名在目录中查找对应的 i 节点,通过 i 节点存取文件数据)(补充:创建文件时最后一步, 文件名和 i-节点号之间的对应关系将文件名和文件和文件的内容属性连接起来,找到文件名就找到文件的 i-节点号,通过 i-节点号就能找到文件的属性和内容。)
- Linux 的核心代码存放于(****/usr/src/linux)
- 一个进程调用 fork 系统调用后,会有什么结果()(补充:fork 函数将运行着的程序分成 2 个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。)
- 文件系统中的(超级块)主要用来记录整个逻辑文件系统的基本管理信息。
- 通过 Makefile 来安装已编译过的代码的命令是(make install)(补充:configure 是用来生成 Makefile,make 用来编译,make install 用来进行安装)。
- (lsmod)命令显示所有装在的模块
- 下面关于 inode 节点描述错误的是(i 节点和文件名是一一对应的)。(补充:其他正确的说法,i 节点能描述文件占用的块数,i 节点描述了文件大小和指向数据块的指针、通过 i 节点实现稳健的逻辑结构和物理结构的转换。inode 索引节点内容包括:文件的字节数、文件拥有者的 User ID、文件的读 rwx 权限、文件的时间戳、链接数:指多少个文件名指向这个 inode 硬链接会改变、文件数据 block 的位置)
- “.Z”后缀是(compress)命令压缩的,用(uncompress)解压。
- 已知 Linux 系统中的唯一一块硬盘是第一个 IDE 接口的 master 设备,该硬盘按顺序有 3 个主分区和 1 个扩展分区,这个扩展分区又划分了 3 个逻辑分区,则该硬盘上的第二个逻辑分区在 Linux 中的设备名称为(/dev/hda6)(补充:在 linux 中第一块硬盘分区为 hda 分区,主分区编号为 hda1-4,逻辑分区从 5 开始。)
- Redhat Linux 系统中,所有文件系统的挂载信息存放在(/etc/fstab)中。(补充:系统开机时会主动读取/etc/fstab 这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。)
- 系统当前已经加载的所有文件系统在(/etc/mtab)文件中得到反映。(补充:/etc/fstab 开机自动挂载配置文件,在开机时起作用。/etc/mtab 是当前的分区挂载情况,记录的是当前系统已挂载的分区,每次挂载/卸载分区的时候会更新/etc/mtab)
- 以下哪个运行级别是管理用的单用户模式(1 为单用户模式)(补充:0 为停机模式,6 为重启模式)
- 如何显示 Linux 系统中注册的用户数(wc- -lines /etc/passwd)
- 在使用 mkdir 命令创建新的目录时,在其父目录不存在时先创建父目录的选项是(-p)
- Linux 允许一个文件名有 256 个字符,但为了保证兼容性和可移植性,建议文件名长度控制在(14)个字符以内
- 比较重要的系统配置资料,一般来说大部分位于(/etc)目录下
- 大部分主要的 Linux 系统文件是存放在下面的(/bin)目录中
- (du)命令用来显示文件盒目录占用的磁盘空间
- (df)命令用来显示已安装的文件系统占用的磁盘空间
简答题
简述 Linux 下虚拟文件系统的作用
Linux 通过虚拟文件系统 VFS 将不同文件系统的实现细节隐藏起来,因而从外部看上去,所有的文件系统都是一样的。
VFS 是建在具体文件系统之上的,它为用户程序提供一个统一、抽象、虚拟的文件系统界面。这个抽象的界面主要由一组标准、抽象的文件操作构成,以系统调用的形式提供给用户程序。所以 VFS 必须管理所有同时安装的文件系统。它通过使用描述整个 VFS 的数据结构和描述实际安装的文件系统的数据结构来管理这些不同的文件系统。
简述 Linux 下软连接和硬连接实现文件共享的区别。
硬链接记录的是目标的 inode,符号链接记录的是目标的 path。硬链接创建的是指向 inode 的指针,成功后,文件的索引数会加一,而软链接就像快捷方式,并不会导致该变化。符号链接可以跨分区 link,而硬链接由于 inode 的缘故,只能在本分区中做 link,所以符号链接的使用频率要高得多。
简述 Linux 的用户模式
- 0: 系统停机(关机)模式,系统默认运行级别不能设置为 0,否则不能正常启动,一开机就自动关机。
- 1: 单用户模式,root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录。
- 2: 多用户模式,没有 NFS 网络支持。
- 3: 完整的多用户文本模式,有 NFS,登陆后进入控制台命令行模式。
- 4: 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
- 5: 图形化模式,登陆后进入图形 GUI 模式或 GNOME、KDE 图形化界面,如 X Window 系统。
- 6: 重启模式,默认运行级别不能设为 6,否则不能正常启动,就会一直开机重启开机重启。
简述动态优先级多级反馈循环调度算法思想及优缺点
简述: 动态优先级是指系统根据优先级 Priority 顺序分配时间片,但优先级会随着进程运行改变。
- 系统先计算每个进程的一个优先权,该优先权反映了一个进程获取 CPU 使用权的资格
- 系统从处于就绪队列(状态)的进程中选择优先权最高的进程,分配时间片进入运行态。
- 运行过程中,优先权随时间递减。
- 进程时间片结束或进程运行完毕,系统动态完成一次对当前进程优先级的计算
- 再次进行进程调度,从处于就绪队列(状态)的进程中在选出最高优先级的进程,设置调度标志。
- 把那些被抢夺了占有权的进程反馈大优先级队列中,等待下一轮调度(对于抢占式而言)
优点: 相较于固定优先级,减少了对低优先级的歧视,更有可能被调度。
缺点:对于高优先级的实时任务随着 CPU 占用时间增大优先级降低,对紧急任务不能保证率先完成。
Linux 进程间通信主要有哪几种形式
最常用的方式是信号、管道以及 UNIX 系统支持的 System Ⅴ IPC 机制(即消息通信、共享数据段和信号量)
管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令 mkfifo 或系统调用 mkfifo 来创建
信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux 除了支持 Unix 早期信号语义函数 sigal 外,还支持语义符合 Posix.1 标准的信号函数 sigaction(实际上,该函数是基于 BSD 的,BSD 为了实现可靠信号机制,又能够统一对外接口,用 sigaction 函数重新实现了 signal 函数).
消息(Message)队列:消息队列是消息的链接表,包括 Posix 消息队列 System V 消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
共享内存:使得多个进程可以访问同一块内存空间,是最快的可用 IPC 形式。是针对其他通信机制运行效率低而设计的。往往与其他通信机制,如信号量结合使用,来达到进程间的同步互斥。
信号量(semaphore):主要作为进程间以及同一个进程不同线程之间的同步手段。
套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由 Unix 系统的 BSD 分支开发出来的,但现在一般可以移植到其它类 Unix 系统上:Linux 和 System V 的变种都支持套接字。
简要说明面向连接和无连接两种网间进程通信方式的主要区别。
面向连接的协议,再正式手法数据前,双方必须建立可靠的连接。连接的建立要经历三次“握手”才能建立起来,建立后通信比较稳定。
面向非连接的协议,不与对方建立连接,而是直接就把数据包发送过去。
程序设计题
定时任务
定时任务中的时间的说明,时间的格式大概是这样的* * * * * 五个 *号代表的意思分别是分,时,日,月,周的顺序来排列的
如果想每分钟都执行一次的话就采用默认的 * * * * *,如果想每五分钟执行一次可以 */5 * * * * ,如果是每两个小时执行一次的话那就是 * */2 * * *来设置;
/n 表示每 n-m 表示区间
解决方案:
crontab -e ,输入 i 添加新的定时任务。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!