ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux简答

2021-12-22 20:31:01  阅读:162  来源: 互联网

标签:文件 函数 简答 管道 线程 信号 Linux 进程


1.静态库和动态库
2. gcc编译四个阶段:预处理、编译、汇编和链接
        标准I/O提供了三种类型的缓冲,分别是?单缓冲,双缓冲,循环缓冲。
3.Vim的三种模式:命令模式 插入模式 底行模式
“i键”进入编译模式 “ctrl+v”进入可视模式 “ESC:”进入底行模式
        y   ##复制         c   ##剪切         u   ##撤销
        d   ##删除         p   ##粘贴        ctrl+r   ##恢复
4.GDB调试命令:
        添加断点: break + 行数 (b 也行)
        delete 断点号n:删除第n个断点
        i b 查看断点信息
        list:简记为 l , 查看文件源代码
        run(简写r): 运行程序
        continue(简写c) : 继续执行,到下一个断点停止
        next(简写n) :执行一步       
5.文件的四极空间代表:
        代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内
存中的镜像。               
        数据段:数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静
态分配的变量和全局变量。
        堆(heap):堆是用于存放进程运行中被动态分配的内存段
        栈:栈又称堆栈,栈是用户存放程序临时创建的局部变量,也就是说我们函数括
弧“{}”中定义的变量
6.文件系统四部分:引导块,超级块,索引节点,数据区
        超级块: 用于存放文件的控制信息。
        引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动
操        作系统;
        超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;       
        inode区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文
件        系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点
上;       
        数据区:用于存放文件数据或者管理数据。
        c语言中没有明确给定初值的全局变量和静态变量存放在哪儿?未初始化数据区
7.文件创建目录:mkdir()
8.对硬连接和软连接的描述:(简答题)
        硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件
不管是什么类型都给它分配一个编号,称为索引节点号。硬连接的作用是允许一个文件拥
有多个有效路径名。
        软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在软连接
中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
9.修改文件权限命令:chmod
10.命令行有什么函数提供:shell
11.文件描述符的数据类型:int
12.lseek(fd,位移数,whence):设置文件偏移量
13.复制文件描述符{
                dup(fd)
                dup2(2,3)将2复制给3       
                fcntl()               
        }
14.文件状态值:{
                只读:O_RDONLY
                只写:O_WRONLY
                读写:O_RDWR
                写入时添加至文件末尾:O_APPEND
                不存在时创建:O_CREAT
                截断文件为零长度:O_TRUNC
}
15.编译有线程的文件要加 -lpthread 参数。
16.412编码
17.Linux下获取文件属性函数: stat()
18.更改目录:cd .. pwd查看当前所在的目录位置 ls查看目录下的文件
19.虚拟文件系统是什么?(简答题)Virtual File System,
        虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于
给用户空间的程序提供文                件系统接口;同时,它也提供了内核中的一个 抽象功
能,允许不同的文件系统共存。系统中所有的文件系统不但                依赖 VFS 共存,而且
也依靠 VFS 协同工作。
20.linux中主要有哪几种文件?(简答题)
        普通文件、链接文件、管道、套接字、目录文件和设备文件
21.简述系统调用和库函数?(简答题)
        系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。
        系统调用通常用于底层文件访问。
        系统调用发生在内核空间,因此如果在用户空间的一般应用程序中使用系统调用来进
行文件操作,会有用户空间                到内核空间切换的开销
        库函数调用是系统无关的,因此可移植性好。
        库函数调用通常用于应用程序中对一般文件的访问。
        由于库函数调用是基于C库的,因此也就不可能用于内核空间的驱动程序中对设备的
操作。
使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?
        这是因为,读写文件通常是大量的数据,这时,使用库函数就可以大大减少系统调用
的次数。
22.open系统打开的标志:       
进程:
23.查看进程的命令:ps
24.什么是进程?(简答题)
        进程就是一个程序的执行实例,也就是正在执行的程序。在操作系统的眼里,进程就
是一个担当分配系统资源的实体。
25.进程的资源有哪俩部分组成?(简答题)
        常驻内存 非常驻内存
26.进程和程序的去吧?(简答题)
        (1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,
存在是暂时的;
        (2)程序是静态的观念,进程是动态的观念;
        (3)进程具有并发性,而程序没有;
        (4)进程是竞争计算机资源的基本单位,程序不是。
        (5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一
程序; 一个进程可以执行一个或几个程序
27.linux进程的结构有哪些?(简答题)
        数据段:存放的是全局变量、常数以及动态数据分配的数据空间。
        代码段:存放的是程序代码的数据。
        堆栈段:存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。
28.fork函数返回值的含义?(简答题)
        返回值,失败,返回-1,linux下系统调用的一半惯例,错误码在errno中
        = 0,子进程
        >0 , 父进程
29.进程中return 和 exit 的区别?(简答题)
        exit是整个程序的结束。return是某个函数的结束,并返回结果。
        return返回函数值,是关键字; exit 是一个函数。
        return是C语言提供的,exit是操作系统提供的
        return是函数的退出(返回);exit是进程的退出。
exit和_exit就是用来正常终止一个进程的,主要区别是_exit会立刻进入内核,而exit先执行
一些清除工作然后才进入内核。
30.fork和vfork的区别?(简答题)
        fork和vfork都可以用来创建子进程。vfork产生的子进程和父进程共享数据段.。
        fork创建的子进程和父进程的运行的先后顺序是没有保证的
        vfork的特点是保证子进程先运行。只有子进程通过exec或者exit退出后,父进程才能运
行.
31.父进程调用wait可能出现三种情况?(简答题)
        父进程的所有子进程都在运行,wait()阻塞。
        父进程没有任何子进程,则立即出错返回。
        有一个子进程已经终止,则取得该子进程的终止状态立即返回。
32.孤儿进程是什么?谁回收?
        父进程消失,子进程仍然存在,那么这个子进程就是孤儿进程。孤儿进程被 init 进程
回收。
僵尸进程是什么?谁回收?
        子进程比父进程先结束,而父进程又没有释放子进程占用的资源,此时子进程将成为
一个僵尸进程,由父进程回收
33.父进程查询子进程的退出状态可以用wait/waitpid函数
        wait(status)子进程的结束状态值会由参数status 返回
        waitpid(0/-1,&status,0)
-        1表示不等待某个特定PID的子进程而是回收任意一个子进程,0表示默认的方式(阻
塞式)来进行等待
34.fcntl函数的功能:1、复制一个已有的描述符,类似于dup函数功能。
                2、获取/设置文件描述符标志。
                3、获取/设置文件状态标志。
                4、获取/设置一步I/O所有权。
                5、获取/设置记录锁。
35.如何创建软连接?
        创建的语法:ln -s是必须的,然后后面跟一个目标文件夹,最后是一个当前目录的软
连接名。
36. getpid()获取子进程id                 getppid()获取父进程id
getuid()获取用户id                geteuid()获取有效用户id
37.管道分为有名管道和无名管道。
列出有名管道和无名管道的区别和特点        ?
有名管道:也称为FIFO管道,是一种文件类型,在文件中可以查看到。
匿名管道在系统中没有实名,不能再文件系统中以任何方式看到该管道,它只是进程的一
种资源,会随着进程的结束而被系统清除。
无名管道是无名的,有名管道是有名的;
无名管道只能用于父子进程或兄弟进程之间的通信,而有名管道可用于任意两进程之间通
信;
无名管道是无形的,即无名管道的 inode 结构不是在磁盘上存储的,而是临时生成的,而
有名管道的 inode 结点在磁盘上。
特点:半双工,只能一端写一端读,数据先进先出,.数据被进程从管道读出后,在管道中
该数据就不存在了
38.列出linux的通信方式,简单描述?·
        管道包括三种:普通管道,流管道,命名管道
        信号量:是一个计数器,可以用来控制多个进程对共享资源的访问
        消息队列:是由消息的链表,存放在内核中并由消息队列标识符标识
        信号:是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
        共享内存:是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,
但多个进程都可以访问
        套解字:是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的
进程通信
39.简单介绍信号是什么?
        信号是异步的
        信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行

  信号是因为某些错误条件而产生的,比如内存段冲突、浮点处理器错误或者非法指令

  信号是在软件层次上对中断的一种模拟,所以通常把它称为是软中断
40.对可靠信号和不可靠信号的处理过程?
       
       
41.简单说明信号的处理方式?
        1、信号忽略:
                忽略此信号,大多数信号都可以采用这种方式进行处理,除了9( SIGKILL )和
19(SIGSTOP )信号。
        2、信号捕捉
                进程要通知内核在某种信号产生时,需要调用一个用户函数,在用户函数中,用
户可以自己定义信号处                        理的方式,在Linux下我们不能捕捉SIGKILL信号和
SIGSTOP信号
        3、执行默认动作
                一般情况下是终止该进程
42.产生信号的方式?
        1、来自键盘的信号
        2、硬件异常产生信号
        3、通过系统调用向进程发送信号
        4、由软件条件产生信号
43.简述信号的声明周期?
        信号诞生,信号在进程中注册,信号在进程中注销,信号处理函数执行完毕。
44.进程中不能忽略的两个信号?
        SIGSTOP和SIGKILL
安装信号signal和sigaction的不同?
45.一个进程是 PCB 结构和数据组合。
46.中断描述?
        中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU
暂时停止正在运行的程序,        转而为该内部或外部事件或预先安排的事件服务的程序中
去,服务完毕后再返回去继续运行被暂时中断的程序
47.向消息队列发送信号:msgsnd ()       
接收队列的函数: msgrcv()
创建消息队列:msgget()
关闭消息队列:msgctl()
48.谁用于发送定时器?
        alarm 用于设置定时器,当计时时间到达时,向进程发送SIGALRM信号。
49.共享内存,信号量,消息队列
无名管道(有亲戚)
Q函数的原型
共享内存:
        shmget()函数用来创建共享内存
        shmat()函数 作用就是用来启动对该共享内存的访问,并把共享内存连接到当前进程的
地址空间
        shmdt()函数用于将共享内存从当前进程中分离
        shmctl()函数用来控制共享内存
50.什么是线程?特点?
51.线程中取消和结束的区别?
52.线程和进程的关系?
53.线程和进程的区别?
        进程是资源分配的单元,线程是执行行单元
        进程间切换代价大,线程间切换代价小
        进程拥有资源多,线程拥有资源少
        多个线程共享进程的资源
54.线程的创建函数:pthread_create()
线程分离状态:.pthread_detach()
退出线程:pthread_exit()
取消线程:Pthread_cancel()
55.互斥锁的两种状态:上锁 解锁
56.对互斥锁的理解?
        互斥锁主要用于实现内核中的互斥访问功能,是一种用于多线程编程中,防止两条线
程同时对同一公共资源进行读写的机制。
57.初始化互斥锁函数:pthread_mutex_init ()
        也可以用宏PTHREAD_MUTEX_INTIALIZER 初始化静态分配的互斥锁
上锁函数:int pthread_mutex_lock()以阻塞的方式申请互斥锁
        int pthread_mutex_trylock()以非阻塞的方式申请互斥锁
解锁函数:pthread_mutex_unlock()释放操作只能由占有该互斥锁的线程完成。
58.网络编程
TCP与UDP的区别?
        TCP面向连接,UDP是面向无连接的
        TCP提供可靠的服务,UDP尽最大努力交付,即不保证可靠交付
        TCP传输效率相对较低,UDP传输效率高
        TCP连接只能是点到点、一对一的,UDP支持一对一,一对多,多对一
59.TCP的三次握手?
        第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待
服务器确认;SYN:同步序列编号
        第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,
即SYN+ACK包,此时服务器进入SYN_RECV状态
        第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发
送完毕,客户端和服务器进入ESTABLISHE)状态,完成三次握手
60.什么是套接字?
        套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过

        应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供
并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传
输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/
IP协议交互提供了称为套接字
61.UDP,TCP属于 传输层 协议。
62.面向连接的三个阶段?
63.移动指针lseek函数的参数: lseek(int fd ,_off_t offset , int whence)
                第一个参数fd为已经打开的文件,第二个参数offset为根据参考位置,第三个参数
whence表示偏移量 64. OSI的三层模型?
        第一层:物理层,主要功能是利用物理传输介质为数bai据链路层提供物理连接,以便
透明的传送比特流
        第二层:数据链路层,在此层将数据分帧,并处理流控制
        第三层:网络层,本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的
分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。

标签:文件,函数,简答,管道,线程,信号,Linux,进程
来源: https://blog.csdn.net/qq_53735053/article/details/122094237

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有