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

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.mzph.cn/news/228895.shtml

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

相关文章

【Axure教程】区间评分条

区间评分条是一种图形化的表示工具,用于展示某一范围内的数值或分数,并将其划分成不同的区间。这种评分条通常用于直观地显示数据的分布或某个指标的表现。常用于产品评价、调查和反馈、学术评价、健康评估、绩效评估、满意度调查等场景。 所以今天作者…

DOM树和DOM对象与JS关系的深入研究

const和let使用说明 var不好用,我们如果用变量都是用let,如果用常量乃是不变的量,我们用const,见let const知变量是否可变。比如一个常量在整个程序不会变,但是你用let,是可以的。但是let最好与内部变量改…

《洛谷深入浅出进阶篇》简单数据结构

本篇文章内容如下,请耐心观看,将持续更新。 简单数组 简单栈 简单队列 简单链表 简单二叉树 简单集合 图的基本概念 二叉堆 线段树 树状数组与字典树 线段树进阶 简单数组: STL可变数组 vector " 我们首先要知道这个容器有什…

Java多线程编程学习

1 线程的概念 多线程是指同一个程序同时存在多个“执行体”,它们可以同时工作 1.1 进程的概念 一次程序的每一次运行都叫做进程(一个进程可以包含多个线程 1.2 线程的概念 多线程是指一个程序中多段代码同时并发进行 1.3 主线程的概念 JavaMain中的线程就…

Python语言学习笔记之十(字符串处理)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 字符串处理:以实现字符串的分割、替换、格式化、大小写转换,Python字符串处理是指对Py…

人工智能知识蒸馏:模型精简与迁移的奇妙之旅

导言 在人工智能领域,知识蒸馏作为一种模型精简和知识迁移的技术手段,逐渐成为提高模型效能和适应更广泛场景的关键工具。知识蒸馏是近年来在深度学习领域备受瞩目的技术,其通过将大模型的知识传递给小模型,旨在实现模型的轻量化与…

docker-compose Install gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

交友网站的设计与实现(源码+数据库+论文+开题报告+说明文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用

安全帽/反光衣/工作服自动识别检测算法可以通过opencvyolo网络对现场画面中人员穿戴着装进行实时分析检测,判断人员是否穿着反光衣/安全帽。在应用场景中,安全帽/反光衣/工作服检测应用十分重要,通过对人员的规范着装进行实时监测与预警&…

CloudFlare 优选ip 和 优选域名的获取方法

1.CloudFlare优选IP网站:【链接直达】 2.CloudFlare 优选IP工具:【开源软件】 3.CloudFlare 优选域名:【GitHub开源工具】 4.CF优选域名推荐: time.cloudflare.com shopify.com time.is icook.hk icook.tw ip.sb japan.com malaysia.com rus…

YOLOV8:最新探测物体状态综合指南

YLOLV8是最新的以YOO为基础的物体检测模型,提供最先进的性能。 利用前几部《yolo》,yolov8更快速更准确,同时为训练模式提供统一的框架 物体检测实例分割影像分类 到编写本文件时,许多功能还没有被添加到超催化剂YLOLV8存储库中。这包括训练有素的模型的一整套导…

Axure元件的介绍使用以及登录界面和个人简历的绘制

目录 一、Axure元件介绍 1.1 简介 1.2 特点 1.3 元件操作 二、基本元件的使用 2.1 矩形和圆形 2.2 图片 2.2.1 图片元件特点 2.2.2 具体操作 2.3 占位符 2.3.1 使用规范方法举例 2.4 文本元件 2.4.1 图示 2.5 热区 2.5.1 图示 2.5.2 热区辅助页面排版 2.6 线段…

Redis7--基础篇8(集群cluster)

1. 集群(cluster)介绍 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集 的一部分,这就是Redis的集群,其作用是提供在多个…

2023人物专访【中国新时代艺坛楷模】徐大龙盆景艺术专题报道

随着社会经济的发展和人们审美观念的改变,苏派盆景艺术以其精湛的技艺和独特的艺术魅力,又成为了中外盆景界的一大亮点。今天来聊聊江南盆景艺术专家徐大龙先生。 徐大龙,江苏常州人,「复兴之路,强国有我」50位爱国奉献…

web(HTML之表单练习)

使用HTML实现该界面: 要求如下: 用户名为文本框,名称为 UserName,长度为 15,最大字符数为 20。 密码为密码框,名称为 UserPass,长度为 15,最大字符数为 20。 性别为两个单选按钮&a…

Web安全漏洞分析—文件包含

在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…

PMP项目管理 - 沟通管理

系列文章目录 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in…

LVS-DR部署

目录 LVS的工作模式及其工作过程 NAT模式(VS-NAT) 直接路由模式(VS-DR) IP隧道模式(VS-TUN) DR模式 LVS负载均衡群集的分析及特点 数据包流向分析 DR 模式的特点 LVS-DR部署实例 LVS-DR模式部署流…

2023最新最全【PostMan】安装教程

为了验证接口能否被正常访问,我们常常需要使用测试工具,来对数据接口进行检测。 好处:接口测试工具能让我们在不写任何代码的情况下,对接口进行调用和调试。 下载并安装PostMan 首先,下载并安装PostMan,请…

吊炸天,腾讯开源的一站式微服务解决方案

项目介绍 Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。 Spring Cloud Tencent 实现了Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 云原生分布式应用。 Spring Cloud Tencent 的核心依托腾讯开源的一站式…