GYFLinux简答题考前复习

Gdb调试

next(或n)执行下一行语句   step :(或s)执行下一行语句,如果有函数调用则进入到函数中

Vim的三种模式:命令模式 插入模式 底行模式

“i键”进入编译模式   “ctrl+v”进入可视模式  “ESC:”进入底行模式
	y    ##复制    	c    ##剪切  	u    ##撤销
	d    ##删除     	p    ##粘贴	ctrl+r    ##恢复

Valgrind

包括很多工具,(Memcheck )是 valgrind 应用最广泛的工具,一个重量级的内存检查器,能 够发现开发中绝大多数内存错误使用情况,( Cachegrind)是主要用来检查程序中缓存使用出现的问题。Helgrind查找多线程程序中的竞争数据。Callgrind收集程序运行时的数据massif 测量程序在堆栈中使用了多少内存。

库函数与系统调用的区别:

系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。
系统调用通常用于底层文件访问。
系统调用发生在内核空间,因此如果在用户空间的一般应用程序中使用系统调用来进行文件操作,会有用户空间到内核空间切换的开销
库函数调用是系统无关的,因此可移植性好。
库函数调用通常用于应用程序中对一般文件的访问。
由于库函数调用是基于C库的,因此也就不可能用于内核空间的驱动程序中对设备的操作。

open系统调用中打开的标记:

只读:O_RDONLY 只写:O_WRONLY 读写:O_RDWR 写入时添加至文件末尾:O_APPEND 不存在时创建:O_CREAT 截断文件为零长度:O_TRUNC

简述虚拟文件系统:

Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个 抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。

Linux主要有几种文件类型;

普通文件 目录 软连接 套接字 符号链接文件 块设备 管道文件 设备文件
软连接文件的特点:会添加新文件 可以跨区建立 可以对目录建立 删除源文件软连接不能访问。

硬链接文件有哪些特点,有哪些不足之处;

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接. 
不允许给目录创建硬链接。
不可以在不同文件系统的文件间建立链接。

什么是进程进程资源有那两部分组成:

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

Linux进程结构是什么:

数据段:存放的是全局变量、常数以及动态数据分配的数据空间。
	代码段:存放的是程序代码的数据。
	    堆栈段:存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。

简单说明程序与进程的区别:

动态和静态的区别:进程是程序及其数据在计算机上的一次运行活动,是一个动态的概念,而程序是一组有序的指令集和,是一种静态的概念 。
生命周期的区别:进程是程序的一次执行过程,他是动态创建和消亡的,程序是一组代码的集合,他是永久存在的 。
组成的区别:进程由程序 数据和 PCB 三部分组成,程序是一组有序的集合指令

在进程中return exit的区别

return 是语言级别的,它表示了调用堆栈的返回;而 exit 是系统调用级别的,它表示一个进 程的结束。 在 main 函数里,return(0)exit(0)是一样的,子函数用 return 返回,而子进程用 exit 退出, 调用 exit 时要调用一段终止处理程序,然后关闭所有 I/O

什么是孤儿进程谁负责回收孤儿进程的内核资源

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程是什么如何消灭僵尸进程

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。利用 kill 函数杀死父进程,僵尸进程会变成孤儿进程被 init 进程收养。

Fork与vfork的区别与联系

fork函数是复制一个父进程的副本,从而拥有自己独立的代码段,数据段以及堆栈空间,是一个独立的实体。而vfork是共享父进程的代码以及数据段。
vfork 保证子进程先运行,在它调用 exec 或 exit 之 后 父进程才可能被调度运行。 相同:两者被调用一次,但是返回两次。两次返回的唯一区别是子进程的返回值是 0,而 父进程 的返回值则是新子进程的进程ID。

父进程调用wait可能的三种情况

1.父进程的所有子进程都在运行,wait()阻塞。
2.父进程没有任何子进程,则立即出错返回。
3.有一个子进程已经终止,则取得该子进程的终止状态立即返回。

Linux常见的进程状态5种

就绪状态,等待进程(可以被打断),等待状态(不可以被打断)停止状态,僵死状态

Linux常见的进程调度策略

实时进程,非实时进程

进程的通信的目的有哪些

数据传输: 一个进程需要将它的数据发送给另一个进程。
资源共享: 多个进程之间共享同样的资源。
通知事件: 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件,比如进程终止时需要通知其父进程。
进程控制: 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

简述进程对可靠信号与不可靠信号的处理过程

如果进程在屏蔽某个信号的时间内,其他进程多次向其发送同一个信号,不可靠信号只有一次未决记录,当进程解除屏蔽后,该信号只会被捕捉一次;而可靠信号操作系统会记录所有 的发送,当进程解除屏蔽后,操作系统会捕捉对等次数。

简单介绍信号的定义与分类

  信号是表示消息的物理量,是运载消息的工具 信号是软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信 号与处理器收到一个中断请求可以说是一样的 分类:确定信号和随机信号;连续信号和离散信;周期信号和非周期信号;能量信号与功率 信号;因果信号与反因果信号;实信号与复信号

列举常用的进程间常见的通讯方式

 管道包括三种:普通管道,流管道,命名管道
	信号量:是一个计数器,可以用来控制多个进程对共享资源的访问
	消息队列:是由消息的链表,存放在内核中并由消息队列标识符标识
	信号:是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
	共享内存:是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
	套解字:是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信

有名管道与匿名管道的区别与特点

有名管道:也称为FIFO管道,是一种文件类型,在文件中可以查看到。
匿名管道在系统中没有实名,不能再文件系统中以任何方式看到该管道,它只是进程的一种资源,会随着进程的结束而被系统清除。
匿名管道是无名的,有名管道是有名的;
匿名管道只能用于父子进程或兄弟进程之间的通信,而有名管道可用于任意两进程之间通信;
匿名管道是无形的,即无名管道的 inode 结构不是在磁盘上存储的,而是临时生成的,而有名管道的 inode 结点在磁盘上。
特点:半双工,只能一端写一端读,数据先进先出,.数据被进程从管道读出后,在管道中该数据就不存在了

简述匿名管道及其特点

匿名管道是半双工的,只有一个写端和一个读端 匿名管道不是普通的文件,不是在磁盘上,而是在内存中的,所以它的生命周期随进程的结 束而结束 匿名管道是基于字节流来通信的 其本身有同步互斥的效果 匿名管道只能使用于有血缘关系的进程之间的通信

简述signal与sigaction的区别

不同点
signal()
安装的信号不能向信号处理函数传递信息
sigaction()
可设置进程的信号掩码,返回设置之前的sigaction结构
安装的信号可以向信号处理函数传递信息
相同点
都可以为指定的信号设置信号处理函数
共用同一个内核函数do_sigaction()

Linux信号处理方式

1、信号忽略:
	2、信号捕捉
	3、执行默认动作一般情况下是终止该进程

产生信号的方式

1、来自键盘的信号
	2、硬件异常产生信号
	3、通过系统调用向进程发送信号
	    4、由软件条件产生信号

简述信号的生命周期

1.	在目的进程中安装该信号
2.	信号在某个进程中产生
3.	信号在目的进程被注册
4.	信号在进程中被注销
5.	信号生命的终止

简述什么是线程及其特点

线程就是系统运算执行的最小单位,其所占资源较少 线程是进程的一个执行序列 线程可以看作是轻量化的进程,线程之间的切换代价小

pthread_kill 函数和 pthread_cancle 函数的区别:

(两个都是终止进程的) pthread_kill 函数的功能是向指定线程发送信号,信号为 0 时用于检查此线程 ID 的线程 是 否存活。 pthread_cancel 函数的功能是给线程发送取消信号,使线程从取消点退出。

简述互斥锁与读写锁区别与联系

区别:读写锁区分读者和写者,而互斥锁不区分 互斥锁同一时间只允许一个线程访问该对象,无论读写;读写锁同一时间内只允许一个写者, 但是允许多个读者同时读对象。 联系:读写锁在获取写锁的时候机制类似于互斥锁。

简述线程与进程的定义

进程是资源分配的最小单位,线程是程序执行的最小单位。 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。而线程是共享进程中的数据的,使用相同的地址空间,因此 CPU 切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要很多。 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行。多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

tcp与udp的区别

TCP 需要连接,UDP 是无连接的,发送数据之前不需要建立连接 TCP 提供可靠的服务,通过 TCP 连接传送的数据,无差错,不丢失 TCP 逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道 

Tcp三次握手

第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号
	第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN       包,即SYN+ACK包,此时服务器进入SYN_RECV状态 
	    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包 发送完毕,客户端和服务器进入ESTABLISHE)状态,完成三次握 手

Osi七层模型

1.	应用层
2.	表示层
3.	会话层
4.	传输层
5.	网络层
6.	数据链路层
7.	物理层
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值