Linux相关知识

来源:互联网 发布:现货交易软件哪个好 编辑:程序博客网 时间:2024/05/22 09:06

1.Linux操作系统的开机流程 +2

从BIOS提取MBR信息->加载引导GRUB->加载内核->运行init进程->系统初始化->建立终端->登录系统,启动完成
开机后怎么启动一个程序
chmod +x hahad                    #增加执行权限chkconfig --add hahad             #把hahad添加到系统服务列表chkconfig hahad on                 #设定hahad的开关(on/off)chkconfig --list hahad               #就可以看到已经注册了hahad的服务

2.线程与进程,线程安全  +4

(1)进程通信

【1】管道
【2】命名管道,可以用在没有联系的两进程之间
【3】消息队列,消息队列与管道相比,可以独立于进程而存在,可以根据类型来接受数据,发送数据时不用关心同步和阻塞问题
【4】信号,例如子进程死的时候向父进程发送信号
【5】信号量,控制访问临界区
【6】共享内存,最快的IPC方式
【7】内存映射,不同进程将同一文件映射到自己的进程地址空间
【8】socket

(2)线程同步

【1】互斥量:其实也就是锁,只有两种状态,被锁和未被锁
【2】读写锁:提高并发性,分为读锁、写锁和未被锁
【3】条件变量
【4】旋转所:互斥锁差不多,只不过在等待锁的时候不是通过休眠来阻塞进程,而是通过忙等来阻塞进程,适合等待时间短的情况

(3)多线程的适用场景是什么,为啥要多线程

据说能使用多进程的时候不要使用多线程,个人认为在需要频繁交换大量数据的情况下可以使用多线程

多线程比多进程的成本低,但是效率也低

3.radix树在Linux内核中的应用

4.服务器Linux与desktop Linux的区别

服务器没有GUI以及相关软件,其他的差不多

5.系统调用与库函数调用的区别

(1)系统调用提供了用户程序与操作系统之间的接口,不具有移植性,一般运行在内核态
(2)库函数由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,运行在用户态,有些是封装了系统调用来实现的。
open close read write是系统调用,fopen,fclose,fread,fwrite是库函数

6.Linux文件系统

7.Linux内存布局 +2

从低到高:代码段、初始化数据段、未初始化数据段、栈、堆,DMA区、普通区、高端内存区。内核可以直接访问0到896M范围的物理内存,对于高端内存需要用通过内存映射来访问

8.内核态与用户态的区别

权限不同
原创粉丝点击