linux期末复习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.3 什么是进程?什么是线程?Linux系统中的进程状态有哪些?如何获取系统中各进程的状态?

答:进程就是程序的一次执行过程;Linux把线程定义为进程的“执行上下文”;Linux系统中的进程状态有运行态、可中断等待态、不可中断等待态、停止态、僵死态;获取系统中各进程状态是依据一定条件和原因变化的,如下图所示:

5.5 Linux系统中进程控制块的作用是什么?它与进程有何关系?

答:进程控制块是进程组成中最关键的部分,它保存有进程的重要信息;

1) 每个进程有唯一的进程控制块。

2) 操作系统根据进程控制块.对进程实施控制和管理。

3) 进程的动态、并发等特征是利用进程控制块表现出来的。

4) 进程控制块是进程存在的唯一标志。

5.10 什么是索引节点?索引节点主要有哪些内容?它与文件有何关系?

答:索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息;

5.11 为什么要设立虚拟文件系统(VFS)?它与实际文件系统的关系是怎样的?

答:Linux系统支持多种文件系统,必须使用一种统一的接口,而VFS可以实现;VFS是建立在具体文件系统之上的,它为用户程序提供一个统一的、抽象的、虚拟的文件系统界面。

5.13 Linux系统采用哪两种内存管理技术?各自的基本实现思想是什

么?

答:Linux系统采用交换和请求分页存储管理两种内存管理技术; 1)请求分页的基本思想是,当执行一个程序时,才把它换入内存,但并不把全部程序都调入内存,而是用到哪一页就调入哪一页;2)内存交换基本思想,当系统中出现内存不足时,Linux内存管理子系统就需要释放一些内存页,从而增加系统中空闲内存页的数量。

5.16 Linux为什么要采用三级页表?该机制如何工作?

答:由于Linux系统中页面的大小为4GB,进程虚存空间要划分为个页面。如果直接用页表描述这种映射关系,那么每个进程的面表就要有

个表项,而用大量的内存资源来存放页表办法是不可取,故Linux采用三级页表;

把一个线性地址映射成物理地址就分为以下四步:

1)以线性地址中最高位段作为下标在PGD中找到相应的表现,该表项指向相应的PMD.

2)以线性地址中第二个位段作为下标在PMD中找到相应的表项,该表项指向相应的PT。

3)以线性地址中第三个位段作为下标在PT中找到相应的表项,该表项指向相应的物理页面(即该物理页面的起始地址)

4)以线性地址中的最低位段是物理页面内的相对位移量,此位移量与该物理页面的起始地址相加就得到相应的物理地址。

5.22 Linux系统中怎样处理系统调用?

答:Linux的系统调用是通过中断指令“INT 0x80”实现的,当CPU执行到中断指令“INT 0x80”时,硬件就做出一系列响应。CPU穿过陷阱门,从用户空间进入系统空间。相应地,进程的上下文从用户堆栈切换到系统堆栈。接着运行内核函数system_call()。首先,进一步保存各寄存器内容;接着调用system_trace(),以系统调用号为下标检索系统调用入口表

sys_call_table,从中找到相应的函数;然后,转去执行该函数,完成具体的服务。

4.14 不要论算法,仅仅是用shell实现

#!/bin/bash

a=1

echo -ne "前十个数为:\n$a "

b=1

echo -ne "$b "

count=10

let sum=$a+$b

while [ $((count)) -gt 2 ] ;do

let tmp=$a+$b

echo -ne "$tmp "

a=$b

b=$tmp

let sum=$sum+$b

let count=$count-1

done

echo -e "\n和为:$sum"

4.18

#!/bin/bash

if [ $# -eq 2 ] && [ $1 -gt 0 ] && [ $2 -ge $1 ] ;then echo -n "Input a line:"

read line

length=`echo $line | awk '{print length($0)}'`

if [ $2 -gt $length ];then

echo "截取长度不合适"

exit 2

fi

echo "$line $1 $2" | awk '{print substr($0,$(NF-1),$NF-$(NF-1)+1)}'

else

echo "Usage:$0 a-int a-int"

exit 1

fi

7.3

#include

#include

#include

#include

#include

#include

#define BUF_SIZE 1024*8

int main()

{

int fds, fdd;

char buf[BUF_SIZE];

size_t hasread = 0;

fds = open("filea", O_RDONLY);

fdd = open("fileb", O_WRONLY, O_CREAT);

if(fds && fdd)

{

while((hasread = read(fds, buf, sizeof(buf))) > 0) {

write(fdd, buf, hasread);

}

close(fds);

close(fdd);

}

}

7.5

#include

03 #include

04

相关文档
最新文档