- linux中把分区和目录对应的过程叫做 挂载 。
- 信号是在软件层次上对 中断 机制的一种模拟, 是一种异步通信方式。
- 用GCC编译过程可以被细分为四个阶段: 预处理,编译,汇编,连接 。
- 编译有线程的文件要加 -lpthread 参数。
- 父进程等待子进程的结束,可以使用的函数是 wait( ) 和 waitpid( ) 。
- linux主要有两个信号安装函数,分别是signal( ),sigaction( )
- Linux操作系统内核由 C和汇编 编写完成。
- 使用gdb调试程序时,,next和step命令的作用?
next:单步运行,不进入函数内部;setp单步运行,进入函数内部
- 目录 /boot 下存放linux操作系统启动时所要用到的程序
- Linux 系统的设备文件分为三类?
字符设备文件、块设备文件和网络设备文件
- Linux 中采用“一对一”的线程机制,也就是一个用户线程对应一个 内核线程 。
- vim三种模式:在命令模式下按下 : 就进入了底线命令模式。
- 标准I/O提供了三种类型的缓冲,分别是?
全缓冲,行缓冲,不带缓冲
- linux文件系统由四部分组成, 用于存放文件的控制信息。
- 一个完整的信号生命周期包含4个重要的事件,这4个重要事件分别是?
信号诞生 信号在进程中注册 信号在进程中注销 信号处理函数执行完毕
- 互斥锁只有两种状态,即?开锁和上锁
- 线程本身调用 pthread_exit() 函数可以退出线程。
- 向消息队列发送消息的函数是 msgrcv() 。
- stat 系统调用可以根据文件描述符来操作文件特性。
- Valgrind包括很多工具, Memcheck 是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况, Cachegrind 是主要用来检查程序中缓存使用出现的问题。
- 信号发送函数中, setitimer() 用于设置定时器,当计时时间到达时,向进程发送SIGALRM信号。
- 在标准IO库中,rewind函数作用? 将文件流指针指向文件起始位置
- c语言中没有明确给定初值的全局变量和静态变量存放在哪儿?未初始化数据区
- 函数geteuid()用于得到进程的?用户有效UID
- 当一个线程的属性设置为 分离状态 ,该线程结束时立即释放它所占有的系统资源。
- 以下哪种方式属于异常终止一个进程(D )
A从main函数返回。
B调用exit。
C最后一个线程从其启动例程返回。
D接到一个信号并终止。
- 下列命令哪个是创建线程私有数据命令(A)
A pthread_key_create() B pthread_setspecific()
C pthread_getspecific() D pthread_key_delete();
- 下面哪种通信方式适用于不同机器之间的进程通信。(D )
A.消息队列 B.共享内存 C.信号量 D.套接字
- 创建或打开消息队列的函数为(A )
A.msgget() B.msgsnd() C.msgrcv() D. msgctl()
- 什么是进程?进程资源由哪两部分组成?
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的一个独立单位。
进程资源由内核空间资源(PCB控制块) 和 用户空间资源
- 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的绝对值。
- pid_t fork() 返回值的意义?
若执行成功,父进程中将返回子进程(新创建的进程)的PID,类型为pid_t,
子进程将返回0,以区别父子进程
若执行失败,则在父进程中返回-1,错误原因存储在errno中
- Linux环境中使用kill函数向进程或进程组发送信号。Kill函数原型为
int kill(pid_t pid, int signo);当第一个参数pid>0时,表示( A )
A发送信号给进程ID为pid的进程;
B发送信号给进程组ID和该进程相同的进程;
C发送信号给进程组内进程ID为pid的绝对值的进程;
D发送信号给系统的所有进程;
- 共享主存基本操作( A )将共享主存区映射到进程虚拟地址空间。
A shmat() B shmdt() C shmctl() D shmget()
- 修改消息队列状态信息的命令是(B)
A msgsnd() B msgctl() C msgrcv() D msgget()
- 父进程调用wait() 可能出现的三种情况?(5分)。
1. 当有子进程退出时wait返回子进程的pid并且获取到子进程的退出状态
2. 当没有子进程退出时 父进程将阻塞等待子进程退出
3. 当没有子进程时,wait返回-1
- 在进程中,return和exit() 的区别?
如果是在main函数中exit和return都是终止进程 但是return会弹栈 exit不会
如果是在函数中return 返回到上级函数调用的位置,exit会终止进程
- 什么是孤儿进程?谁负责回收孤儿进程的内核空间资源?
父进程先于子进程结束 则子进程称为孤儿进程 由init 0接管并回收其内核资源
- 僵尸进程是什么?如何消灭僵尸进程?
僵尸进程 子进程结束但是父进程未回收其内核资源, 可以通过调用wait()或waitpid() 或者使其成为孤儿进程 由操作系统回收其内核资源
- 简述进程对可靠信号和不可靠信号的处理过程。
不可靠信号 不支持排队 如果在进程屏蔽信号时 给其发送多个不可靠信号,在取消屏蔽后只会接收到一个
可靠信号 支持排队 如果在进程屏蔽信号时 发送多个信号,在取消屏蔽后会按照先后顺序接收到所有可靠信号
- 简单介绍一下信号的定义及其分类。
信号是一种软中断,用来通知进程发生了异步事件 0~31分为不可靠信号 32~63可靠信号
- 简单介绍一下匿名管道及其特点。
匿名管道 用于实现有亲缘关系的进程之间相互通信
创建在内核空间,通信结束后消失
- 请解释一下有名管道和匿名管道的区别?
无名管道用于实现具有亲缘关系的进程间通信
有名管道用于实现非亲缘关系的进程间通信
有名管道 是一个特殊的文件 结束通信后不会内容消失但文件不消失
无名管道 结束通信后消失
- 什么是线程?进程和线程的区别?
线程是操作系统进程中能够并发执行的实体,是处理器调度和分派的基本单位。
区别 :
1.调度、
在传统操作系统中进程是拥有资源和调度的基本单位
在引入了线程的操作系统中 线程是操作系统分派和调度的基本单位
进程是拥有资源的基本单位
2.并发性
进程之间可以并发执行,在同一进程中的线程也可以并发执行
3.拥有资源
进程是拥有系统资源的基本单位
线程基本上不拥有系统资源,但也拥有其运行所必要的资源,在同一进程中的线程共享进程的地址空间
4.系统开销
创建或撤销进程时,系统都要为其创建和回收进程控制块(PCB)
进程的创建和撤销的开销远大于线程的开销
在进程切换时,涉及到当前进程CPU环境的保存以及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容
进程切换的开销也是远大于线程的
- Please describe the difference of signal() and sigaction() in brief
不同点
signal()
安装的信号不能向信号处理函数传递信息
sigaction()
可设置进程的信号掩码,返回设置之前的sigaction结构
安装的信号可以向信号处理函数传递信息
相同点
都可以为指定的信号设置信号处理函数
共用同一个内核函数do_sigaction()