美文网首页
Linux考试范围

Linux考试范围

作者: 别叫我张老板 | 来源:发表于2019-12-16 20:47 被阅读0次

    特别声明

    简答和编程

    写出20条命令

    ls mv cp mkdir touch cd pwd chmod kill help rm cat echo bash more less find tar gcc su

    写出shell脚本的执行方法

    • source demo.sh
    • bash demo.sh
    • ./demo.sh

    说明Linux程序的执行时间包括哪些部分

    • 用户态
    • 内核态
    • 睡眠

    shell脚本

    • 写一个脚本计算整数1至1000的和
    #!/bin/bash
    sum=0
    for i in {1..1000}
    do
        sum=$[$i+$sum]
    done
    echo $sum
    
    • 写一个脚本计算整数1至1000的乘积
    #!/bin/bash
    var=1
    for i in {1..1000}
    do
     var=$[$var*$i]
    done
    echo $var
    

    linux自带的库函数有哪些类型

    • 输入输出
    • 数学运算
    • 字符串处理
    • 时间日期
    • 内存分配
    • 多线程并发

    列出linux操作系统中文件的类型

    • 常规文件
    • 目录文件
    • 字符设备文件
    • 块设备文件
    • 管道文件
    • 符号链接文件
    • 套接字文件

    写出linux系统向进程发送信号的几种机制

    • 用/bin/kill发送信号
    • 从键盘发送信号
    • 用kill和raise函数发送信号
    • 用alarm函数发送信号

    简述应用程序编程接口

    列出与文件I/O操作相关的应用编程接口

    • open (文件打开函数)

    要求内核打开相应的文件、宣告想要访问I/O设备或文件

    • lseek(改变文件位置函数)

    可以改变当前文件的读写位置

    • read/write(文件读写函数)

    向文件读或写数据

    • close(文件关闭函数)

    通知内核关闭文件

    列出进程间通信的应用编程接口

    • mkfifo

    创建管道的命令

    • pipe

    创建管道

    • msgget

    创建和访问消息队列

    • msgsnd

    把消息添加到消息队列中

    • msgrcv

    从消息队列中获取信息

    • msgctl

    消息队列控制函数

    • shmget

    创建共享内存

    • shmat

    访问共享内存

    • shmdt

    将共享内存从当前进程中分离

    • shmctl

    共享内存控制函数

    • semget

    创建信号量

    • semop

    增加或价绍信号量

    • semctl

    信号量控制函数

    论述

    • 论述linux内核用哪三个相关的数据结构来表示打开的文件

    v-node表、文件表、描述符表。v-node表:linux将打开文件的属性信息保存在v-node中,所有v-node构成v-node表。文件表:linux将打开文件信息存储在文件对象中,所有文件对象构成文件表。描述符表:存储文件描述符,用于定位文件的位置。

    • 论述在linux多线程程序中有哪些变量类型、被映射到哪段地址空间、有几个运行实例

    全局变量、本地自动变量、本地静态变量。全局变量:被映射到进程虚拟存储器的可读写数据区域,仅有一个运行实例。本地自动变量:函数未调用时不分配内存,调用时被映射到线程堆栈中,可以拥有一个至多个运行实例。本地静态变量:被映射到虚拟存储器的可读写区域,仅有一个运行实例。

    画图描述及分析

    • 画图说明linux进程虚拟地址空间结构

      20191212173504327.png
    • 画出linux进程、linux内核与系统调用间关系图

      20191212113805900.png
    • 画图说明当一个新的程序开始时用户栈的典型组织结构

      2019121216474793.png

    分析进程家族关系

    • 说明使用fork系统调用创建进程的过程
    • 系统创建子进程PCB,内容复制于父进程PCB,新分配PID
    • 创建父进程数据集的一个副本,保存于新分配的存储器中,作为子进程数据集
    • 假设下面程序运行时子进程的pid是3000,父进程的pid是2999.请写程序运行结果,并画图说明父子进程运行时用户地址空间变化情况
    #include<stdio.h>
    #include<unistd.h>
    #include<sys/types.h>
    #include<stdlib.h>
    int glob=10;
    int main(void){ 
     int local;
     pid_t pid;
     local=8;
     if((pid=fork())==0){ 
      sleep(4);
     }
     else{ 
      glob++;
      local--;
      sleep(10);
     }
     printf("pid=%d,glob=%d,local=%d\n",getpid(),glob,local);
     exit(0);
    }
    
    • 结果
      pid=3000,glob=10,local=8 //子进程
      pid=2999,glob=11,local=7 //父进程
    • 说明图
      进程.png

    相关文章

      网友评论

          本文标题:Linux考试范围

          本文链接:https://www.haomeiwen.com/subject/gztjnctx.html