前言
Linux作为一个被全世界的程序员都热爱的操作系统,在现在这个微服务分布式一级大数据人工智能横行的时代,Linux的命令也成为程序员必须会用的技术之一。而在面试以及工作的时候,Linux也基本贯穿开发的始终,于是,闲来无聊,就和几个朋友进行交流,整理出来一下的关于Linux的相应的面试技巧分享,在文章最后是我整理的面试题和大家分享。
Linux简介
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机
Linux特点
多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面,出色的速度性能开源
Linux目录结构
- bin (binaries)存放二进制可执行文件
- sbin (super user binaries)存放二进制可执行文件,只有root才能访问
- etc (etcetera)存放系统配置文件
- usr (unix shared resources)用于存放共享的系统资源
- home 存放用户文件的根目录
- root 超级用户目录
- dev (devices)用于存放设备文件
- lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
- mnt (mount)系统管理员安装临时文件系统的安装点
- boot 存放用于系统引导时使用的各种文件
- tmp (temporary)用于存放各种临时文件
- var (variable)用于存放运行时需要改变数据的文件
Linux面试题
1.Linux调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
Liunx调度程序是根据根据进程的动态优先级来调度进程的,但是动态优先级又是根据静态优先级根据算法计算出来的,两者是两个相关联的值。因为高优先级的进程总是比低优先级的进程先被调度为防止多个高优先级的进程占用CPU资源,导致其他进程不能占有CPU,所以引用动态优先级概念。
2.进程调度的核心数据结构是哪个?
struct runqueue
3.如何加载、卸载-一个模块?
insmod加载,rmmod卸载
4.Linux中的浮点运算由应用程序实现还是内核实现?
应用程序实现,Linux中的浮点运算是利用数学库函数实现的,库函数能够被应用程序链接后调用,不能被内核链接调用。这些运算是在应用程序中运行的,然后再把结果反馈给系统。Linux内核如果一定要进行浮点运算,需要在建立内核时选上math-emu,使用软件模拟计算浮点运算,据说这样做的代价有两个:用户在安装驱动时需要重建内核,可能会影响到其他的应用程序,使得这些应用程序在做浮点运算的时候也使用math-emu,大大的降低了效率。
5.字符设备驱动程序的关键数据结构是哪个?
字符设备描述符struct cdev,cdev_ alloc用于动态的分配cdev描述符,cdev_ _add用于注册一个cdev描述符,cdev包含- -个struct kobject 类型的数据结构它是核心的数据结构
6.如何唯一标识一个设备?
Linux使用一个设备编号来唯一的标示-一个设备,设备编号分为:主设备号和次设备号,一般主设备号标示设备对应的驱动程序,次设备号对应设备文件指向的设备,在内核中使用dev__t来表示设备编号,一.般它是32位长度,其中12位用于表示主设备号,20位用于表示次设备号,利用MKDEV(int major,int minor);用于生成一一个 dev_ t类型的对象。.
7.Linux通过什么方式实现系统调用?
靠软件中断实现的,首先,用户程序为系统调用设置参数,其中一个编号是系统调用编号,参数设置完成后,程序执行系统调用指令,x86上的软中断是有int产生的,这个指令会导致-一个异常,产生一个事件,这个事件会导致处理器跳转到内核态并跳转到--个新的地址。并开始处理那里的异常处理程序,此时的异常处理就是系统调用程序。
8.Linux中有哪几种设备?
字符设备和块设备。网卡是例外,他不直接与设备文件对应,mknod系统调用用来创建设备文件。
9.TLB中缓存的是什么内容?
TLB,页表缓存,当线性地址被第一次转换成物理地址的时候,将线性地址和物理地址的对应放到TLB中,用于下次访问这个线性地址时,加快转换速度。
10.调用schedule进行进程切换的方式有几种?
- 系统调用do_ fork);
- 定时中断do_ _timer;
- 唤醒进程wake_ _up_ process
- 改变进程的调度策略setscheduler;
- 系统调用礼让sys_ sched_ yield;
Linux资料分享
下面是小编整理的关于Linux的一些资料,Linux sed命令修改各种配置文件案例、Linux面试专题及答案、Linux内核测试、Linux系统常用命令快速入门...获取方式:转发文章并私信小编“学习”二字即可!
感谢大家的支持与配合,关注小编会持续分享! |