Linux(操作系统)面经——part 1(持续更新中......)

news2024/11/23 17:38:21

1、说一说常用的 Linux 命令

mkdir创建文件夹,touch创建文件,mv移动文件内容或改名

rm-r 文件名:删除文件

cp拷贝:cp 文件1 文件2,cp-r跨目录拷贝 cp-r 路径1 路径2

vi 插入    :wqb保存退出   :q!强制退出  :w另存为   :set nn显示行号

查看文件内容:cat(看内容少的文件) cat还可以合并两个文件内容 cat a.c b.c>c.c

more分屏显示,回车下一页,按b回滚,按空格往下,到最后自己退出

less上下查看也很方便,而且可以反复查看

head tail 看文件前几行、后几行

find 路径 -name(还可以加cmin\ctime按最近几分钟几天查找)文件名

grep-i “字符串” 文件名 查找该文件里的字符串,grep用来过滤

ps显示正在运行的进程,ps-e显示所有进程信息,ps-f详细信息,ps-L显示线程id

pstree树状显示进程和其子进程

kill pid 杀死进程

tar-z压缩、解压,tar cvf打包,tar xvf释放包,最简单解压tar zxf

tcpdump抓包

netstat 监控tcp/ip网络的工具,可以显示与ip、tcp、udp、icmp协议相关数据,一般检验本机各端口的网络连接情况。

可以参考tcpdump详解&实战 - 知乎

2、静态库和动态库如何制作及使用

静态库的制作:命名规则libxxx.a(linux),libxxx.lib(windows);先用.c文件生成.o文件,打包生成静态库:ar crv libfoo.a  add.o max.o;

              使用:gcc -o main main.c -l路径 -l库名

动态库的制作:命名规则libxxx.so (linux),libxxx.dll(windows);先用.c文件生成.o文件,gcc -c –fpic/-fPIC a.c b.c,打包生成动态库:gcc -shared a.o b.o -o libfoo.so

              使用:gcc -o main main.c -l路径 -l库名

静态链接时——依赖静态库,把所需要的函数二进制代码都包含进可执行程序中(本质是代码拷贝)。

动态链接时——依赖动态库,它用过一系列符号或者参数在函数执行或加载时把信息传递给操作系统,由操作系统赋负责将需要的依赖库加载到内存中,程序在执行时加载已经存在于内存的代码。

3、请你说说动态库静态库的区别和优缺点

1.使用方式不同:静态链接把静态库编译进目标文件,直接运行;动态链接运行时加载已经存在于内存的代码(需要给程序环境指定动态库查找环境)

2.占用空间:静态库会存在多个副本(内存和磁盘),比较浪费系统资源;动态库只有一个副本

3.库文件发生改变时:静态库当接口(参数、函数名等)发生改变时,需要重新编译,依赖其的程序也要重新编译链接;动态库发生改变时,只需要重新编译动态库

4.移植程序时:依赖静态库的可执行文件不需要做什么,静态库的代码已经被编译进可执行文件了;依赖动态库的可执行文件移植时需要把动态库也移植过去

4、简述一下 GDB 常见的调试命令

用gdb调试时,首先要把它转为debug版本,加个-g

l显示代码,b加断点,bt查看函数堆栈信息,info查看断点,r运行,p打印某个参数,

s进入函数,info break查看断点信息

5、说一说进程调度算法有哪些

先来先服务调度算法——从进程队列中选择最先到达的一个或几个进程,将它们调入内存,为他们分配资源、创建进程。当每个进程就绪后,将它们加入就绪队列。当前正在执行的进程停止运行时,选择存在于就绪队列中最久的进程开始执行。

短作业优先调度算法——从后背队列中选择运行时间最短的一个或多个作业(进程),将它们调入内存,将处理机分配给它使之立即执行,直到任务完成或阻塞,才释放处理机。

高响应比优先调度算法——它是一种基于先来先服务和短作业优先的一种平衡。考虑到每个作业的等待时间和运行时间。先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。 

优先级调度算法——作业调度中,从后备队列里选择优先级最高的作业,将它们调入内存、分配资源,创建进程并加入就绪队列,进程调度中,每次选择就绪队列中优先级最高的进程为其分配处理机,使之运行。

时间片轮转调度算法——cpu从作业队列队首开始给每个都分配一定的时间(时间片不固定),当执行完时间片,由时钟发出一个中断请求,调度程序收到信号就让它停止执行,把它放去就绪队列的队尾,然后再把处理机分配给新队首,也让它执行一个时间片。

多级反馈队列调度算法——时间片轮转调度算法和优先级调度算法的综合和发展,通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。

6、说一说什么是大端、小端,如何判断大端和小端

小端——整数的低位存在低地址,高位存在高地址

大端——整数的低位存在高地址,高位存在低地址

判断:在32为平台下,int占4个字节,char类型的指针占1个字节,先用char类型的取一个字节,再用int取四个,再把int强转成char就只能取出一个字节了,如果两个一样说明是小端,不一样就是大端。

7、什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程

孤儿进程——父进程已经释放,子进程还在(被init,进程号为1的进程收养),孤儿进程一般无危害。

僵尸进程——使用fork()创建的子进程退出了,但父进程不知道(没有使用wt()或wtpid()取得子进程的终止状态),子进程还占着系统资源。

解决僵尸进程:在fork()子进程时,父进程及时wt、wtpid获取子进程的状态,子进程退出时,释放pcb资源。退出时内核都会给父进程一个SIGCHILD信号,所以我们可以建立一个信号捕获函数,在函数体中调用wt\wtpid。

8、说一说进程通信的方式有哪些?

 socket套接字、管道、共享内存、消息队列、信号

socket——主要用于不同主机之间的通讯

管道——有名(任意进程)和无名(亲缘关系进程),他有读写两个文件描述符,写在前读在后,并且读写完还可以循环从另一端重新开始。

共享内存——把一个进程的数据复制到共享内存中,别的同一个段(物理内存的一个区域)的进程可用。

消息队列——一个消息链表,有读权限的可以读消息队列上的信息,有写权限的可以在上面写信息。

信号——有事件发生时对进程通知,也称为软中断。它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。

9、说一说进程有多少种状态,如何转换

创建 就绪 运行 阻塞 终止

创建进程,获得许可,资源已经准备好但还未分配处理机时是就绪状态,获得处理器资源后,被系统调度,开始运行,如果时间片用完会回到就就绪态,或者阻塞住了就会进入阻塞状态,阻塞结束后又进入就绪状态,运行结束就进入终止状态。

10、请你说说共享内存

进程的数据放入共享内存,同段进程可以使用就像用自己内存区域的数据一样,其中有进程改了数据同段其他进程也会受影响。共享内存在各种进程间通信方式中具有最高的效率,不需要系统或切入内核,也避免了数据不必要的复制。缺点是没有同步机制(不能避免同时操作或读脏数据)。进程间的同步是通过其他机制来实现的,比如使用信号量、互斥锁等。 这些同步机制可以保证多个进程之间对共享内存的访问是有序的,避免了多个进程同时访问同一段内存而导致的数据不一致的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1315949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

W25N01GV 芯片应用

项目中处于成本考虑,要把Nor Flash换成低成本的Nand Flash。 这里总结下芯片应用。 总体概述: 1)W25N01(NandFlash)和W25Q(Nor Flash)的操作大不一样。 NandFlash擦除以块(128KB&…

计算BMI指数-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第19讲。 计算BMI指数&…

【TB作品】基于单片机的机械通风控制系统,实时温度和二氧化碳浓度

硬件: (1)51系列单片机,拟采用STC89C52RC; (2)DS18B20温度传感器; (3)二氧化碳浓度传感器:https://item.taobao.com/item.htm?spma21n57.1.0.0.1…

DS八大排序之冒泡排序和快速排序

前言 前两期我们已经对"插入排序"(直接插入排序和希尔排序) 和 "选择排序"(直接选择排序和堆排序)进行了详细的介绍~!这一期我们再来详细介绍一组排序 :"交换排序"即耳熟能…

lv12 uboot移植深化 9

u-boot-2013.01移植 【实验目的】 了解u-boot 的代码结构及移植的基本方法 【实验环境】 ubuntu 14.04发行版FS4412实验平台交叉编译工具arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 1 建立自己的平台 1.…

在线客服系统定价因素解析:影响价格的关键因素

跨境电子商务公司必不可少的工具就是在线客服系统。企业选择在线客服系统的时候免不了要对不同产品的功能性、价格、服务等因素进行考量。今天这篇文章,我们就来探讨一下在线客服系统的定价因素有哪些?探究市面上的在线客服系统价格各异的影响因素。为大…

libp2p 快速开始

文章目录 第一部分:libp2p 快速入门一、什么是libp2plibp2p 发展历程libp2p的特性p2p 网络和我们熟悉的 client/server 网络的区别: 二、Libp2p的实现目标三、Libp2p的用途四、运行 Libp2p 协议流程libp2p 分为三层libp2p 还有一个局域网节点发现协议 mD…

27系列DGUS智能屏发布:可实时播放高清模拟信号摄像头视频

针对高清晰度的模拟信号摄像头视频画面的显示需求,迪文特推出27系列DGUS智能屏。该系列智能屏可适配常见的AHD摄像头、CVBS摄像头,支持单路1080P高清显示、两路720P同屏显示(同一类型摄像头)。用户通过DGUS简单开发即可实现摄像头…

netty-daxin-3(rpc远程调用)

文章目录 nettyRpcObjectEncoder 与 ObjectDecoderjdk动态代理回顾Rpc调用过程简析服务端客户端 nettyRpc ObjectEncoder 与 ObjectDecoder ObjectEncoder继承自MessageToByteEncoder<Serializable>&#xff0c;它内部使用ByteBufOutputStream包装ByteBuf对象&#xff…

SpringBoot 自动装配原理---源码详解

目录 SpringBoot 自动装配原理源码流程详解&#xff1a;流程总结&#xff1a;条件匹配解释&#xff1a;其他解释&#xff1a; SpringBoot 自动装配原理 源码流程详解&#xff1a; 1、先看启动类&#xff0c;启动这个main方法&#xff0c;然后调用这个run方法。 2、把 启动类作…

一文了解Tomcat

文章目录 1、Tomcat介绍2、Tomcat使用配置2.1、Tomcat下载启动2.2、Tomcat启动乱码2.3、Tomcat端口号修改 3、Tomcat项目部署4、IDEA中使用Tomcat方式 1、Tomcat介绍 什么是Tomcat ​ Tomcat是Apache软件基金会一个核心项目&#xff0c;是一个开源免费的轻量级web服务器&#x…

Networkx实现小世界网络的分析

Networkx实现小世界网络的分析 小世界网络 小世界现象&#xff0c;也被称为六度分离原则&#xff0c;即如果你在地球上的任何地方随便选择任何两个人&#xff0c;你会发现一条至多由他们之间的6个熟人形成的路径。在网络科学语言中&#xff0c;六度也被称为小世界性质&#x…

C++相关闲碎记录(16)

1、正则表达式 &#xff08;1&#xff09;regex的匹配和查找接口 #include <regex> #include <iostream> using namespace std;void out (bool b) {cout << ( b ? "found" : "not found") << endl; }int main() {// find XML/H…

【C++干货铺】继承后的多态 | 抽象类

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 多态的概念 多态的定义和实现 多态的定义条件 虚函数 虚函数的重写 特殊情况 协变&#xff08;基类和派生类的虚函数返回值不同&#xff09; 析构函数的重…

如果你找不到东西,请先确保你在正确的地方寻找

之前我们在几篇文章中描述了如何进行”思想”调试&#xff0c;今天的文章我将不会这样做。 因为下面的编程错误大部分人都会遇到&#xff0c;如果你看一眼下面的代码&#xff0c;你不会发现有什么问题&#xff0c;这仅仅是因为你的的大脑只给你希望看到的&#xff0c;而不是那…

分数约分-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第20讲。 分数约分&#xf…

算法模板之单链表图文讲解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟单链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟单链表…

appium2.0.1安装完整教程+uiautomator2安装教程

第一步&#xff1a;根据官网命令安装appium&#xff08;Install Appium - Appium Documentation&#xff09; 注意npm前提是设置淘宝镜像&#xff1a; npm config set registry https://registry.npmmirror.com/ 会魔法的除外。。。 npm i --locationglobal appium或者 npm…

多线程 (上) - 学习笔记

前置知识 什么是线程和进程? 进程: 是程序的一次执行,一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程&#xff0c;比如在Windows系统中&#xff0c;一个运行的xx.exe就是一个进程。 线程: 进程中的一个执行流&#xff0…

Element-Ui定制Dropdown组件

1.效果 说明&#xff1a;移入后新增图标&#xff0c;然后移入后图标变色。当然大家可以想到用mouseover移入事件来实现移入颜色的变化&#xff0c;但是在使用Dropdown组件的时候&#xff0c;不支持这种写法。因此采用了原生的遍历对象的形式&#xff0c;为每一个item对象绑定鼠…