本文主要是介绍Linux基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.简述一下系统调用和库函数 举例说明
库函数:由系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用 如使用printf return
系统调用:操作系统的一部分;用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。如exit
2. open系统调用的打开标志
只读:O_RDONLY 只写:O_WRONLY 读写:O_RDWR
写入时添加至文件末尾:O_吧 APPEND 不存在时创建:O_CREAT 截断文件为零长度:O_TRUNC
3 .vfs含义(虚拟文件系统)
虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;
同时,它也提供了内核中的一个 抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。
VFS 作为一个通用的文件系统,抽象了文件系统的四个基本概念:文件、目录项 (dentry)、索引节点 (inode) 及挂载点,
其在内核中为用户空间层的文件系统提供了相关的接口。VFS 实现了 open()、read() 等系统调并使得 cp 等用户空间程序可跨文件系统。
VFS 真正实现了上述内容中:在 Linux 中除进程之外一切皆是文件。
4 Linux中主要有哪几种文件类型
普通文件、目录文件、管道文件、字符设备文件、软链接文件、块文件、套接字文件
5.软链接,硬链接特点与不足之处、区别
硬链接存在以下几点的特性:
1.文件有相同的indoe 及文data block
2.只能对已存的文件进行创建
3.不能垮分区创建硬链接
4.不能对目录进行创建,只可对文件创建
5.删除一个硬链接文件并不影响其他有相同ionde 号的文件
软链接特点如下:
1.软连接有自己的文件属性及权限等
2.可对不存放在的文件或者目录创建软连接
3.软链接可垮分区创建
4.软接接可对文件或目录创建
5.创建软链接时,链接计数不会增加
6.删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接,若被指向路径文件被重新创建,死链接可恢复为正常的软链接
二者的区别:
硬链接:
a:不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)
b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。
c:不能对不存在的文件创建硬链接,由原理即可知原因。
软链接:
a:可以对目录创建软链接,遍历操作会忽略目录的软链接。
b:可以跨文件系统
c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了
6.Linux进程的状态
运行就绪状态:TASK_RUNNING
处于等待队伍中,可中断唤醒:TASK_INTERRUPTIBLE
处于等待队伍中,不可中断唤醒:TASK_UNINTERRUPTIBLE
进程资源用户空间被释放,等待父进程回收:TASK_ZOMBIE
进程被外部程序暂停,可被唤醒:TASK_STOPPED
7.Linxu进程通信的目的有以下几个特点:
(1)数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。
(2)共享数据,多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
(3)通知事件,一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某件事(如终止进程需要通知父进程)。
(4)资源共享,多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制。
(5)进程控制,有些进程希望完全控制另一个进程的执行(Denug),此时控制进程希望能够拦截另一个进程的所有信息和异常,
8.(1)什么是进程 (2)进程资源由那两部分组成 (3)常用的进程度策略
(1)进程是计算机中程序的一次数据集合运算的活动,是系统进行调度和分配的基本单元,是操作系统的基础
(2)进程资源由内核空间进程资源 用户空间进程资源
(3)先进先出法(FIFO) 时间片轮转法(RR) 普通调度算法(NORMAL)
9.进程结构有哪些
(1)代码区(text segment) (2)全局初始化数据区/静态数据区(Data Segment)
(3)未初始化数据区(BSS) (4)栈区stack (5)堆区heap
10.程序与进程的区别
动态和静态的区别:进程是程序及其数据在计算机上的一次运行活动,是一个动态的概念,而程序是一组有序的指令集和,是一种静态的概念
生命周期的区别:进程是程序的一次执行过程,他是动态创建和消亡的,程序是一组代码的集合,他是永久存在的
组成的区别:进程拥有自己独立的处理环境和系统资源由程序 数据和PCB三部分组成,进程是管理事务的基本单元,程序是一组有序的集合指令、
11.fork返回值的意义(有几个 分别代表什么)
Fork表示创建一个进程,其在父进程中返回值为子进程的id号,在子进程中返回值为0,如果创建失败则会返回-1,并且显示报错信息
12.return 和exit的区别
Return是语言级别的,其表示了堆栈的返回和处理,而exit是系统调用级别的,其表示
了结束一个进程,当在main函数中return和exit效果一样都是代表了结束一个进程,并且return 0和exit(0)都是返回了进程的结束状态
13.什么是孤儿进程?谁负责回收孤儿进程?
孤儿进程就是其在正常运行时,父进程已经结束,导致其内核资源无法被父进程回收,孤儿进程在父进程结束时将会把父进程设置为init进程,init会对孤儿进程的资源进行回收处理
14.什么是僵尸进程 如何消灭僵尸进程
僵尸进程就是进程已经结束但是其内核资源未被父进程进行回收处理,可以通过命令将僵尸进程的父进程杀死,然后僵尸进程就会把父进程设置为init,init会对其进行回收
15.fork 和 vfork的区别与联系
Fork和vfork都代表了创建一个子进程,但是vfork创建的子进程会和父进程共享资源,而fork会拷贝一份父进程的资源,fork创建的进程和父进程的执行顺序是无法确定的,但vfork创建的进程会先于父进程执行,当vfork子进程结束时父进程才会继续执行,
16.父进程调用wait可能出现的三种情况
当子进程都在执行时,wait会使父进程进入阻塞状态
当恰好有子进程结束时,wait会回收子进程资源并且获得子进程结束状态
当无子进程时wait会立刻返回-1 并且显示报错信息
17.简述可靠信号和不可靠信号的处理过程
当一个进程设置了信号屏蔽集时,向其发送多个同样的屏蔽信号,不可靠信号不管发送了几次,进程的未决信号集只会记录一次,当解除屏蔽后也只会捕捉一次,而可靠信号发送几次就会被记录几次,当结束屏蔽时,也会同样捕捉几次
18.(1)信号的定义及分类;(2)通信间进程的分类
(1)信号时表示消息的物理量,是消息传递的载体,信号是模拟中断的一种方式,其是软件层面的中断,在原理上,一个进程捕获一个信号和处理器收到一个中断请求是一样的
(2)进程间通信主要包括管道, 系统IPC(包括消息队列,信号,共享存储), 套接字(SOCKET)
19.进程间的通信方式和目的
方式:
匿名管道 有名管道 信号 信号量 消息队列 共享内存
目的:
1.数据传输2.资源共享3.通知事件4.进程控制
20.有名管道和匿名管道的区别
有名管道通过mkfifo进行创建,匿名管道通过pipe进行创建
有名管道其是基于磁盘上的标记文件来进行操作的,其需要进行open函数获得文件描述符。
匿名管道是创建于内核空间的
有名管道不只局限于具有血缘关系的进程间通信,只要任意两个进程可以读取到同一个有名管道文件描述符都可以进行通信,而匿名管道只能在具有血缘关系的进程间通信
21.简单介绍一下匿名管道及其特点
无名管道是一种特殊类型的文件,在内核中对应的资源即一段特殊内存空间,内核在这段空间中以循环队列的方式临时存入一个进程发送给另一个进程的信息。匿名管道用于进程之间通信,且仅限于本地父子进程之间通信,结构简单。
匿名管道是半双工的,只有一个写端和一个读端
匿名管道不是普通的文件,不是在磁盘上,而是在内存中的,所以它的生命周期随进程的结束而结束
匿名管道是基于字节流来通信的 其本身有同步互斥的效果
匿名管道只能使用于有血缘关系的进程之间的通信
22.描述一下signal和sigaction的区别与联系 (Please describe the difference of signal() and sigaction() in brief)
不同点:1.Signal只能调用信号处理函数,但是无妨向其输入附带的数据
Sigaction可以向信号处理函数传递信息,并且可以设置信号掩码,返回设置之前的sigaction
2.signal在调用过程不支持信号block;sigaction调用后在handler调用之前会把屏蔽信号加入信号中,handler调用后会自动恢复信号到原先的值。
3.signal处理过程中就不能提供阻塞某些信号的功能,sigaction就可以阻指定的信号和本身处理的信号,直到handler处理结束。这样就可以阻塞本身处理的信号,到handler结束就可以再次接受重复的信号。
相同点:都可以为信号设置信号处理函数 共用了同一个内核函数do_sigaction
23.Linux系统中信号的处理方式
忽略此信号 自定义捕捉信号方式 执行系统默认操作
24.产生信号的五种方式
按键产生 系统调用 软件条件产生 硬件异常产生 命令产生
25.信号生命周期
在目的进程中安装信号 信号在进程中产生
信号被注册 信号在进程中被注销 信号生命终止
26.简述什么是线程及特点
线程就是系统运算执行的最小单位,其所占资源较少
线程是进程的一个执行序列
线程可以看作是轻量化的进程,线程之间的切换代价小
27.pthread_exit()和pthread_cancel()的区别
Pthread_exit()是结束本线程
Pthread_cancel()是结束其他线程
28.简述互斥锁与读写锁的区别与联系
读写锁特点:(1)多个读者可以同时进行读(2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)(3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)
互斥锁特点:一次只能一个线程拥有互斥锁,其他线程只有等待
两种都是锁,其都可以解决线程的互斥同步的线程安全问题,无论在什么时候只允许一个线程对资源进行操作,读写锁则可以再读时运行多个线程进行操作,写时只允许一个线程进行操作。
29.条件变量中 pthread_cond_wait 实现的步骤
解锁 判断条件是否成立 如果成立则上锁执行,不成立将进入阻塞状态
30.线程与进程的定义与区别
进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
线程:线程是进程中的一个实体,作为系统调度和分派的基本单位。
区别:(1)进程和线程的主要区别在于:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,(2)进程是运行中的程序,线程是进程的内部的一个执行序列(3)进程是资源分配的单元,线程是执行单元(4)进程间切换代价大,线程间切换代价小(5)进程拥有资源多,线程拥有资源少(6)多个线程共享进程的资源。
31.tcp和udp的区别
TCP需要连接,UDP是无连接的,发送数据之前不需要建立连接
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失
TCP逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
32.tcp的三次握手
连接建立,数据传输,连接释放
33.osi七层模型
1. 物理层 2. 数据链路层 3. 网络层 4. 传输层 5. 会话层 6. 表示层 7. 应用层
34.raise函数
功 能: 向正在执行的程序发送一个信号
参数:signum:信号的编号。
这篇关于Linux基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!