Linux教程

linux练习

本文主要是介绍linux练习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. linux中把分区和目录对应的过程叫做   挂载       
  2. 信号是在软件层次上对   中断    机制的一种模拟, 是一种异步通信方式。
  3. 用GCC编译过程可以被细分为四个阶段 预处理,编译,汇编,连接   
  4. 编译有线程的文件要加   -lpthread   参数。
  5. 父进程等待子进程的结束,可以使用的函数是   wait( )  和 waitpid( )   
  6. linux主要有两个信号安装函数,分别是signal( ),sigaction( )
  7. Linux操作系统内核由  C和汇编  编写完成。
  8. 使用gdb调试程序时,,next和step命令的作用?

next:单步运行,不进入函数内部;setp单步运行,进入函数内部

  1. 目录   /boot  下存放linux操作系统启动时所要用到的程序
  2. Linux 系统的设备文件分为三类?

字符设备文件、块设备文件和网络设备文件

  1. Linux 中采用“一对一”的线程机制,也就是一个用户线程对应一个 内核线程 
  2. vim三种模式:在命令模式下按下   :  就进入了底线命令模式。
  3. 标准I/O提供了三种类型的缓冲,分别是?

全缓冲,行缓冲,不带缓冲

  1. linux文件系统由四部分组成,               用于存放文件的控制信息。
  2. 一个完整的信号生命周期包含4个重要的事件,这4个重要事件分别是?

信号诞生 信号在进程中注册 信号在进程中注销 信号处理函数执行完毕

  1. 互斥锁只有两种状态,即?开锁和上锁
  2. 线程本身调用   pthread_exit()            函数可以退出线程。
  3. 向消息队列发送消息的函数是    msgrcv()   
  4.     stat    系统调用可以根据文件描述符来操作文件特性。
  5. Valgrind包括很多工具,   Memcheck    是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,  Cachegrind  是主要用来检查程序中缓存使用出现的问题。
  6. 信号发送函数中,   setitimer() 用于设置定时器,当计时时间到达时,向进程发送SIGALRM信号。
  7. 在标准IO库中,rewind函数作用? 将文件流指针指向文件起始位置
  8. c语言中没有明确给定初值的全局变量和静态变量存放在哪儿?未初始化数据区
  9. 函数geteuid()用于得到进程的?用户有效UID
  10. 当一个线程的属性设置为   分离状态  ,该线程结束时立即释放它所占有的系统资源。
  11. 以下哪种方式属于异常终止一个进程(D )

A从main函数返回。

B调用exit。

C最后一个线程从其启动例程返回。

D接到一个信号并终止。

  1. 下列命令哪个是创建线程私有数据命令(A)

  A  pthread_key_create()    B pthread_setspecific()

C  pthread_getspecific()    D pthread_key_delete();

  1. 下面哪种通信方式适用于不同机器之间的进程通信。(D )

A.消息队列 B.共享内存 C.信号量 D.套接字

  1. 创建或打开消息队列的函数为(A )

A.msgget() B.msgsnd() C.msgrcv() D.  msgctl()

  1. 什么是进程?进程资源由哪两部分组成?

进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的一个独立单位。

进程资源由内核空间资源(PCB控制块) 和 用户空间资源

  1. linux中通过调用waitpid()函数得到进程的退出信息,该函数原型为

pid_t waitpid(pit_t pid, int *statloc, int options);当第一个参数pid取值为-1时,表示(A)

A等待任一子进程退出,相当于 wait()。

B等待进程组ID与调用进程组ID相同的任一子进程。

C只等待进程ID等于PID的子进程。

D等待指定进程组中的进程,该进程组id等于 pid的绝对值。

  1. pid_t fork() 返回值的意义?

若执行成功,父进程中将返回子进程(新创建的进程)的PID,类型为pid_t,

子进程将返回0,以区别父子进程

若执行失败,则在父进程中返回-1,错误原因存储在errno中

  1. Linux环境中使用kill函数向进程或进程组发送信号。Kill函数原型为    

 int kill(pid_t  pid,  int signo);当第一个参数pid>0时,表示( A )

A发送信号给进程ID为pid的进程;

B发送信号给进程组ID和该进程相同的进程;

C发送信号给进程组内进程ID为pid的绝对值的进程;

D发送信号给系统的所有进程;

  1. 共享主存基本操作( A )将共享主存区映射到进程虚拟地址空间。   

A shmat()  B shmdt() C shmctl() D shmget()

  1. 修改消息队列状态信息的命令是(B)

A msgsnd()  B msgctl() C msgrcv() D msgget()

  1. 父进程调用wait() 可能出现的三种情况?(5分)。

1. 当有子进程退出时wait返回子进程的pid并且获取到子进程的退出状态

2. 当没有子进程退出时 父进程将阻塞等待子进程退出

3. 当没有子进程时,wait返回-1

  1. 在进程中,return和exit() 的区别?

如果是在main函数中exit和return都是终止进程 但是return会弹栈 exit不会

如果是在函数中return 返回到上级函数调用的位置,exit会终止进程

  1. 什么是孤儿进程?谁负责回收孤儿进程的内核空间资源?

父进程先于子进程结束 则子进程称为孤儿进程 由init 0接管并回收其内核资源

  1. 僵尸进程是什么?如何消灭僵尸进程?

僵尸进程  子进程结束但是父进程未回收其内核资源, 可以通过调用wait()或waitpid()  或者使其成为孤儿进程 由操作系统回收其内核资源

  1. 简述进程对可靠信号和不可靠信号的处理过程。

不可靠信号 不支持排队 如果在进程屏蔽信号时 给其发送多个不可靠信号,在取消屏蔽后只会接收到一个

可靠信号 支持排队  如果在进程屏蔽信号时 发送多个信号,在取消屏蔽后会按照先后顺序接收到所有可靠信号

  1. 简单介绍一下信号的定义及其分类。

信号是一种软中断,用来通知进程发生了异步事件   0~31分为不可靠信号 32~63可靠信号

  1. 简单介绍一下匿名管道及其特点。

匿名管道 用于实现有亲缘关系的进程之间相互通信

创建在内核空间,通信结束后消失

  1. 请解释一下有名管道和匿名管道的区别?

无名管道用于实现具有亲缘关系的进程间通信

有名管道用于实现非亲缘关系的进程间通信  

有名管道 是一个特殊的文件 结束通信后不会内容消失但文件不消失

无名管道 结束通信后消失

  1. 什么是线程?进程和线程的区别?

线程是操作系统进程中能够并发执行的实体,是处理器调度和分派的基本单位。

区别 :

1.调度、

在传统操作系统中进程是拥有资源和调度的基本单位

在引入了线程的操作系统中 线程是操作系统分派和调度的基本单位

进程是拥有资源的基本单位

2.并发性

 进程之间可以并发执行,在同一进程中的线程也可以并发执行

3.拥有资源

进程是拥有系统资源的基本单位

线程基本上不拥有系统资源,但也拥有其运行所必要的资源,在同一进程中的线程共享进程的地址空间

4.系统开销

创建或撤销进程时,系统都要为其创建和回收进程控制块(PCB)

进程的创建和撤销的开销远大于线程的开销

在进程切换时,涉及到当前进程CPU环境的保存以及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容

进程切换的开销也是远大于线程的

  1. Please describe the difference of signal() and sigaction() in brief

不同点

signal()

安装的信号不能向信号处理函数传递信息

sigaction()

可设置进程的信号掩码,返回设置之前的sigaction结构

安装的信号可以向信号处理函数传递信息

相同点

都可以为指定的信号设置信号处理函数

共用同一个内核函数do_sigaction()

这篇关于linux练习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!