操作系统八股文

1、说说Linux中常见命令

ls 查看文件夹下文件与文件夹
cd 切换目录
grep 筛选
cp 拷贝
mv 移动
rm 删除
ps 显示当前进程的状态
kill 杀死进程
tar 解压压缩
cat 连接文件并打印到标准输出设备上
top 监控linux的系统状况
pwd 显示工作目录
free 查看内存状态

2、Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数

一、必选参数
-c,表示创建压缩文件,c代表create
-x,表示解压缩文件
-t,表示查看压缩包里面的文件
-r,向压缩归档文件末尾追加文件
-u,更新原压缩包中的文件
二、辅助参数
-z,用 gzip压缩/解压缩
-j,用 bzip2压缩/解压缩
-v,显示压缩/解压缩的进度条,即详细列出处理的文件
-f,指定文档名,是必选的参数。注意f后面不要接参数,比如-zxfv是不对的,要写成-zxvf。
-C,此参数用来指定解压到哪个目录。

3、文件权限怎么修改

chmod 755 linuxmi.txt

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute(运行)权限

r w x
4 2 1

4、如何以root权限运行某个程序

修改分组、修改权限

sudo chown root app(文件名) #修改分组,root:root
sudo chmod u+s app(文件名)  #修改权限,RWX==421

5、说说软连接与硬链接含义与区别

软链接 硬链接

可对不存在的文件或目录创建软链接;可交叉文件系统

只能对已存在的文件进行创建;不能交叉文件系统进行硬链接的创建; 

可对文件或目录创建; 不能对目录进行创建,只可对文件创建
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接 删除一个硬链接文件并不影响其他有相同 inode 号的文件

6、动态库与静态库的制作与使用、区别

在这里插入图片描述

静态库的制作

1.首先生成你需要加入的文件的.O文件。使用如下代码

gcc -c add.c div.c mult.c sub.c

然后将这些文件装到库中(lib为静态库的前缀,中间的calc为动态库的名字,动态库的后缀为.a 使用如下代码:

ar rcs libcalc.a add.o sub.o mult.o div.o 

生成libcalc.a文件,及静态库

在这里插入图片描述

静态库的使用(生成app)

在这里插入图片描述

运行这里边的main.c文件 1.之前就是这样生成app文件的,但是head.h和add.c等文件不在一个目录下

gcc main.c -o app -I ./include/ -l calc -L ./lib
动态库的制作

1.和静态库一样,首先将你要打包的程序生成.O文件,就是将.C文件生成.O文件,-fpic :生成与位置无关的代码

gcc -c -fpic add.c div.c mult.c sub.c

2.然后将生成的.O文件称作成动态库,要用到以下代码(*.o表示文件夹中所有的.o文件,lib为动态库的前缀,中间的calc为动态库的名字,动态库的后缀为.so)

gcc -shared *.o -o libcalc.so
动态库的使用

在这里插入图片描述

生成main文件(后面的一串和静态库一样)

gcc main.c -o main -I include -L lib -l calc
区别
  • 静态库代码装载的速度快,执行速度略比动态库快。

  • 动态库更加节省内存,可执行文件体积比静态库小很多。

  • 静态库是在编译时加载,动态库是在运行时加载。

  • 生成的静态链接库,Windows下以.lib为后缀,Linux下以.a为后缀。生成的动态链接库,Windows下以.dll为后缀,Linux下以.so为后缀。

7、简述GDB常见调制命令,什么是条件断点,多进程下如何调试

gcc -g test.c -o test    #生成带调试信息的可执行文件test
gdb test                #开始GDB调试
quit 退出gdb,结束调试
list 查看程序源代码

list 5,10:显示5到10行的代码

list test.c:5, 10: 显示源文件5到10行的代码,在调试多个文件时使用

list get_sum: 显示get_sum函数周围的代码

list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用
reverse-search 字符串用来从当前行向前查找第一个匹配的字符串
run 程序开始执行
help list/all 查看帮助信息
break 设置断点

break 7:在第七行设置断点

break get_sum:以函数名设置断点

break 行号或者函数名 if 条件:以条件表达式设置断点
watch 条件表达式 条件表达式发生改变时程序就会停下来
next 继续执行下一条语句 ,会把函数当作一条语句执行
step 继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码

条件断点:break if 条件 以条件表达式设置断点

多进程下如何调试:

set follow-fork-mode child     //子进程
set follow-fork-mode parent    //父进程

8、说说什么是大端小端,如何判断大端小端?什么是网络字节序,是否需要转换

小端模式的有效字节存储在低的存储器地址。计算机内部存储方式。

大端模式的有效字节存储在低的存储器地址。大端为网络字节序。(反转

相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换。

判断:联合体

int fun1(){  
    union test{   
        char c;   
        int i; 
    };  
    test t; t.i = 1;  
    //如果是大端,则t.c为0x00,则t.c == 1,反之是小端  
    return (t.c == 1);  
}  

9、调度算法有哪些?含义是什么?抢占式与非抢占式有什么区别?

linux平台使用的调度算法有:时间片轮转+高优先级

  1. 先来先服务调度算法

  2. 短作业(进程)优先调度算法

  3. 高优先级优先调度算法

  4. 时间片轮转法

  5. 多级反馈队列(MLFQ) 规则

  • 规则 1:如果 A 的优先级 > B 的优先级,运行 A(不运行 B)。

  • 规则 2:如果 A 的优先级 = B 的优先级,轮转运行 A和 B。

  • 规则 3:工作进入系统时,放在最高优先级(最上层队列)。

  • 规则4:一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次 CPU),就降低其优先级(移入低一级队列)。

  • 规则 5:经过一段时间 S,就将系统中所有工作重新加入最高优先级队列。

10、操作系统如何申请及管理内存

申请内存:*brk和mmap

管理内存:物理内存、虚拟内存

  • 物理内存:物理内存有四个层次,分别是寄存器、高速缓存、主存、磁盘。

  • 虚拟内存:操作系统为每一个进程分配一个独立的地址空间,但是虚拟内存。虚拟内存与物理内存存在映射关系,通过页表寻址完成虚拟地址和物理地址的转换。

11、简述Linux系统态与用户态,什么时候会进入系统态,为什么区分用户态与内核态

  1. 内核态与用户态:内核态可以访问所有系统指令;用户态则只能访问一部分指令。

  2. 什么时候进入内核态a、系统调用。b、异常。c、设备中断其中,系统调用是主动的,另外两种是被动的。

  3. 为什么区分内核态与用户态:出于安全考虑,让用户态不能访问危险资源

12、简述LRU(最近最少使用)算法及其实现方法

思路:将缓存中最近最少使用的对象删除掉

实现方式:链表和hashmap

struct DLinkedNode {
    int key, value;
    DLinkedNode* prev;
    DLinkedNode* next;
    DLinkedNode(): key(0), value(0), prev(nullptr), next(nullptr) {}
    DLinkedNode(int _key, int _value): key(_key), value(_value), prev(nullptr), next(nullptr) {}
};

class LRUCache {
private:
    unordered_
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值